[IMPROVE] write START/END probe macro for files like in da-probe
authorAnastasia Lyupa <a.lyupa@samsung.com>
Thu, 19 Sep 2013 12:40:45 +0000 (16:40 +0400)
committerGerrit Code Review <gerrit@gerrit.vlan144.tizendev.org>
Thu, 19 Sep 2013 16:03:07 +0000 (16:03 +0000)
improve 82a7637e17582f058abff4027cbd429d9c54b8ef
da-probe commit 65352634ef85b4cec1a86ad34157099adc7bef70

Change-Id: Ic64abcb391ad932134377a3f8abdcb3b58f547bf
Signed-off-by: Anastasia Lyupa <a.lyupa@samsung.com>
probe_file/da_io.h
probe_file/da_io_posix.c
probe_file/da_io_stdc.c

index 92f14ba..a32390f 100755 (executable)
        GET_REAL_FUNC(FUNCNAME, LIBNAME);                                               \
        bfiltering = false;                                                             \
        PRE_PROBEBLOCK()
+
 // ==================================================================
-// Additional macro for READ_START and WRITE_START
+// macro for filesize
 // ==================================================================
 
 #define DEFINE_FILESIZE_FD(fd) _fd = (fd); _filesize = get_fd_filesize(_fd);
 #define DEFINE_FILESIZE_FP(fp) _fd = checked_fileno(fp); _filesize = get_fd_filesize(_fd);
 #define DEFINE_FILESIZE_0() _fd = _filesize = 0;
 
-#define AFTER_PACK_ORIGINAL(API_ID, RVAL, SIZE, ERRNO, FD, FILESIZE, APITYPE, INPUTFORMAT, ...)        \
-       POST_PACK_PROBEBLOCK_BEGIN();                                                           \
-       PREPARE_LOCAL_BUF();                                                                    \
-       PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__);                \
-       PACK_COMMON_END(RVAL,ERRNO, blockresult);                                               \
-       PACK_RESOURCE(SIZE, FD, APITYPE, FILESIZE, _filepath);                                  \
-       FLUSH_LOCAL_BUF();                                                                      \
-       POST_PACK_PROBEBLOCK_END();
-
-#define FILE_API_START_BLOCK(API_ID, APITYPE, INPUTFORMAT, ...)                                        \
-       AFTER_PACK_ORIGINAL(API_ID, 0, 0, 0, _fd, _filesize, APITYPE, INPUTFORMAT, __VA_ARGS__)
-
-#define FILE_API_END_BLOCK(API_ID, RVAL, SIZE, APITYPE, INPUTFORMAT,...)                       \
-       blockresult = 0; bfiltering = 1;                                                        \
-       PRE_PROBEBLOCK();                                                                       \
-       AFTER_PACK_ORIGINAL(API_ID,RVAL, SIZE, newerrno, _fd, _filesize, APITYPE, INPUTFORMAT, __VA_ARGS__)
-
 // ==================================================================
 // AFTER_ORIGINAL macro for file
 // ==================================================================
        POST_PACK_PROBEBLOCK_END()
 
 
+// ==================================================================
+// START_END macro for file
+// ==================================================================
+
+#define BEFORE_ORIGINAL_START_END_FD(API_ID, FUNCNAME, LIBNAME, FD, APITYPE, INPUTFORMAT, ...) \
+       DECLARE_VARIABLE_FD;                                                            \
+       GET_REAL_FUNC(FUNCNAME, LIBNAME);                                               \
+       PRE_PROBEBLOCK_BEGIN();                                                         \
+       _fstatret = fstat(FD, &_statbuf);                                               \
+       DEFINE_FILESIZE_FD(fd);                                                         \
+       PREPARE_LOCAL_BUF();                                                            \
+       PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__);        \
+       PACK_COMMON_END(0, 0, blockresult);                                             \
+       PACK_RESOURCE(0, FD, APITYPE, _filesize, _filepath);                            \
+       FLUSH_LOCAL_BUF();                                                              \
+       PRE_PROBEBLOCK_END()
+
+#define BEFORE_ORIGINAL_START_END_NOFD(API_ID, FUNCNAME, LIBNAME, APITYPE, INPUTFORMAT, ...)   \
+       DECLARE_VARIABLE_FD;                                                            \
+       GET_REAL_FUNC(FUNCNAME, LIBNAME);                                               \
+       PRE_PROBEBLOCK_BEGIN();                                                         \
+       DEFINE_FILESIZE_0();                                                            \
+       PREPARE_LOCAL_BUF();                                                            \
+       PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__);        \
+       PACK_COMMON_END(0, 0, blockresult);                                             \
+       POST_PACK_PROBEBLOCK_MIDDLE_NOFD(0, APITYPE);                                   \
+       PRE_PROBEBLOCK_END()
+
+#define BEFORE_ORIGINAL_START_END_FILEP(API_ID, FUNCNAME, LIBNAME, FILEP, APITYPE, INPUTFORMAT, ...)   \
+       DECLARE_VARIABLE_FD;                                                                    \
+       GET_REAL_FUNC(FUNCNAME, LIBNAME);                                                       \
+       PRE_PROBEBLOCK_BEGIN();                                                                 \
+       GET_FD_FROM_FILEP(FILEP);                                                               \
+       if(_fd != -1) {                                                                         \
+               _fstatret = fstat(_fd, &_statbuf);                                              \
+       }                                                                                       \
+       PREPARE_LOCAL_BUF();                                                                    \
+       PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__);                \
+       PACK_COMMON_END(0, 0, blockresult);                                                     \
+       POST_PACK_PROBEBLOCK_MIDDLE_FD(0, _fd, APITYPE);                                        \
+       PRE_PROBEBLOCK_END()
+
+#define AFTER_ORIGINAL_START_END_FD(API_ID, RVAL, SIZE, FD, APITYPE, INPUTFORMAT, ...)         \
+       POST_PACK_PROBEBLOCK_BEGIN();                                                           \
+       setProbePoint(&probeInfo);                                                              \
+       _fstatret = fstat(FD, &_statbuf);                                                       \
+       PREPARE_LOCAL_BUF();                                                                    \
+       PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__);                \
+       PACK_COMMON_END(RVAL, newerrno, blockresult);                                           \
+       PACK_RESOURCE(SIZE, FD, APITYPE, _filesize, _filepath);                                 \
+       FLUSH_LOCAL_BUF();                                                                      \
+       POST_PACK_PROBEBLOCK_END()
+
+#define AFTER_ORIGINAL_START_END_NOFD(API_ID, RVAL, SIZE, APITYPE, INPUTFORMAT, ...)           \
+       POST_PACK_PROBEBLOCK_BEGIN();                                                           \
+       setProbePoint(&probeInfo);                                                              \
+       PREPARE_LOCAL_BUF();                                                                    \
+       PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__);                \
+       PACK_COMMON_END(RVAL, newerrno, blockresult);                                           \
+       POST_PACK_PROBEBLOCK_MIDDLE_NOFD(SIZE, APITYPE);                                        \
+       POST_PACK_PROBEBLOCK_END()
+
+#define AFTER_ORIGINAL_START_END_FILEP(API_ID, RVAL, SIZE, FILEP, APITYPE, INPUTFORMAT, ...)   \
+       POST_PACK_PROBEBLOCK_BEGIN();                                                           \
+       setProbePoint(&probeInfo);                                                              \
+       GET_FD_FROM_FILEP(FILEP);                                                               \
+       if(_fd != -1) {                                                                         \
+               _fstatret = fstat(_fd, &_statbuf);                                              \
+       }                                                                                       \
+       PREPARE_LOCAL_BUF();                                                                    \
+       PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__);                \
+       PACK_COMMON_END(RVAL, newerrno, blockresult);                                           \
+       POST_PACK_PROBEBLOCK_MIDDLE_FD(SIZE, _fd, APITYPE);                                     \
+       POST_PACK_PROBEBLOCK_END()
+
 
 static inline ssize_t get_fd_filesize(int fd)
 {
index 50e0f40..56dc560 100755 (executable)
@@ -205,13 +205,13 @@ int ftruncate(int fd, off_t length)
 
 int fchown(int fd, uid_t owner, gid_t group)
 {
-       static int (*fchownp)(int fd, uid_t owner, gid_t group);
+       static int (*fchownp)(int fd, uid_t owner, gid_t group);
 
-       BEFORE_ORIGINAL_FILE(fchown, LIBC);
-       ret = fchownp(fd, owner, group);
-       AFTER_PACK_ORIGINAL_FD(API_ID_fchown, ret, 0, fd, FD_API_PERMISSION, 
-                             "ddd", fd, owner, group);
-       return ret;
+       BEFORE_ORIGINAL_FILE(fchown, LIBC);
+       ret = fchownp(fd, owner, group);
+       AFTER_PACK_ORIGINAL_FD(API_ID_fchown, ret, 0, fd, FD_API_PERMISSION,
+                         "ddd", fd, owner, group);
+       return ret;
 }
 
 
@@ -251,12 +251,12 @@ ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset)
        static ssize_t (*preadp)(int fd, void *buf, size_t nbyte, off_t offset);
        ssize_t sret;
 
-       BEFORE_ORIGINAL_FILE(pread, LIBC);
-       DEFINE_FILESIZE_FD(fd);
-       FILE_API_START_BLOCK(API_ID_pread,FD_API_READ_START,
-                                "dpxx", fd, buf, nbyte, offset);
+       BEFORE_ORIGINAL_START_END_FD(API_ID_pread, pread, LIBC, fd,
+                               FD_API_READ_START, "dpxx", fd, buf, nbyte, offset);
+
        sret = preadp(fd, buf, nbyte, offset);
-       FILE_API_END_BLOCK(API_ID_pread, sret, (unsigned int)sret,
+
+       AFTER_ORIGINAL_START_END_FD(API_ID_pread, sret, (unsigned int)sret, fd,
                                FD_API_READ_END, "dpxx", fd, buf, nbyte, offset);
 
        return sret;
@@ -266,14 +266,12 @@ ssize_t read(int fd, void *buf, size_t nbyte)
        static ssize_t (*readp)(int fildes, void *buf, size_t nbyte);
        ssize_t sret;
 
-       BEFORE_ORIGINAL_FILE(read, LIBC);
-       DEFINE_FILESIZE_FD(fd);
-       FILE_API_START_BLOCK(API_ID_read, FD_API_READ_START,
-                                "dpx", fd, buf, nbyte);
+       BEFORE_ORIGINAL_START_END_FD(API_ID_read, read, LIBC, fd, FD_API_READ_START,
+                               "dpx", fd, buf, nbyte);
 
        sret = readp(fd, buf, nbyte);
 
-       FILE_API_END_BLOCK(API_ID_read, sret, (unsigned int)sret,
+       AFTER_ORIGINAL_START_END_FD(API_ID_read, sret, (unsigned int)sret, fd,
                                FD_API_READ_END, "dpx", fd, buf, nbyte);
 
        return sret;
@@ -284,15 +282,14 @@ ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset)
        static ssize_t (*pwritep)(int fd, const void *buf, size_t nbyte, off_t offset);
        ssize_t sret;
 
-       BEFORE_ORIGINAL_FILE(pwrite, LIBC);
-       DEFINE_FILESIZE_FD(fd);
-       FILE_API_START_BLOCK(API_ID_pwrite, FD_API_WRITE_START,
+       BEFORE_ORIGINAL_START_END_FD(API_ID_pwrite, pwrite, LIBC, fd, FD_API_WRITE_START,
                                 "dpxx", fd, buf, nbyte, offset);
 
        sret = pwritep(fd, buf, nbyte, offset);
 
-       FILE_API_END_BLOCK(API_ID_pwrite, sret, (unsigned int)sret,
-                              FD_API_WRITE_END, "dpxx", fd, buf, nbyte, offset);
+       DEFINE_FILESIZE_FD(fd);
+       AFTER_ORIGINAL_START_END_FD(API_ID_pwrite, sret, (unsigned int)sret, fd,
+                                  FD_API_WRITE_END, "dpxx", fd, buf, nbyte, offset);
 
        return sret;
 }
@@ -302,13 +299,13 @@ ssize_t write(int fd, const void *buf, size_t nbyte)
        static ssize_t (*writep)(int fildes, const void *buf, size_t nbyte);
        ssize_t sret;
 
-       BEFORE_ORIGINAL_FILE(write, LIBC);
-       DEFINE_FILESIZE_FD(fd);
-       FILE_API_START_BLOCK(API_ID_write, FD_API_WRITE_START,
-                            "dpx", fd, buf, nbyte);
+       BEFORE_ORIGINAL_START_END_FD(API_ID_write, write, LIBC, fd, FD_API_WRITE_START,
+                                "dpx", fd, buf, nbyte);
+
        sret = writep(fd, buf, nbyte);
 
-       FILE_API_END_BLOCK(API_ID_write, sret, (unsigned int)sret,
+       DEFINE_FILESIZE_FD(fd);
+       AFTER_ORIGINAL_START_END_FD(API_ID_write, sret, (unsigned int)sret, fd,
                                FD_API_WRITE_END, "dpx", fd, buf, nbyte);
 
        return sret;
@@ -320,13 +317,12 @@ ssize_t readv(int fd, const struct iovec *iov, int iovcnt)
        static ssize_t (*readvp)(int fd, const struct iovec *iov, int iovcnt);
        ssize_t sret;
 
-       BEFORE_ORIGINAL_FILE(readv, LIBC);
-       DEFINE_FILESIZE_FD(fd);
-       FILE_API_START_BLOCK(API_ID_readv, FD_API_READ_START,
+       BEFORE_ORIGINAL_START_END_FD(API_ID_readv, readv, LIBC, fd, FD_API_READ_START,
                                 "dpd", fd, iov, iovcnt);
+
        sret = readvp(fd,iov,iovcnt);
 
-       FILE_API_END_BLOCK(API_ID_readv, sret, (unsigned int)sret,
+       AFTER_ORIGINAL_START_END_FD(API_ID_readv, sret, (unsigned int)sret, fd,
                                FD_API_READ_END, "dpd", fd, iov, iovcnt);
 
        return sret;
index 6060e37..b030a94 100644 (file)
@@ -262,13 +262,14 @@ int vfprintf(FILE* stream, const char* format, va_list arg)
 {
        static int (*vfprintfp)(FILE* stream, const char* format, va_list arg);
 
-       BEFORE_ORIGINAL_FILE(vfprintf, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_vfprintf, FD_API_WRITE_START,
-                                "ps", stream, format);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_vfprintf, vfprintf, LIBC, stream,
+               FD_API_WRITE_START, "ps", stream, format);
+
        ret = vfprintfp(stream, format, arg);
-       FILE_API_END_BLOCK(API_ID_vfprintf, ret, ret,
+
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_vfprintf, ret, ret, stream,
                                FD_API_WRITE_END, "ps", stream, format);
+
        return ret;
 }
 
@@ -276,13 +277,14 @@ int vfscanf(FILE* stream, const char* format, va_list arg)
 {
        static int (*vfscanfp)(FILE* stream, const char* format, va_list arg);
 
-       BEFORE_ORIGINAL_FILE(vfscanf, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_vfscanf, FD_API_READ_START,
-                                "ps", stream, format);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_vfscanf, vfscanf, LIBC, stream,
+                               FD_API_READ_START, "ps", stream, format);
+
        ret = vfscanfp(stream, format, arg);
-       FILE_API_END_BLOCK(API_ID_vfscanf, ret, ret,
+
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_vfscanf, ret, ret, stream,
                                FD_API_READ_END, "ps", stream, format);
+
        return ret;
 }
 
@@ -290,13 +292,14 @@ int fgetc(FILE* stream)
 {
        static int (*fgetcp)(FILE* stream);
 
-       BEFORE_ORIGINAL_FILE(fgetc, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_fgetc, FD_API_READ_START,
-                            "p", stream);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_fgetc, fgetc, LIBC, stream,
+                               FD_API_READ_START, "p", stream);
+
        ret = fgetcp(stream);
-       FILE_API_END_BLOCK(API_ID_fgetc, ret, (ret != EOF),
+
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_fgetc, ret, (ret != EOF), stream,
                                  FD_API_READ_END, "p", stream);
+
        return ret;
 }
 
@@ -306,14 +309,13 @@ char* fgets(char* str, int size, FILE* stream)
        static char* (*fgetsp)(char* str, int num, FILE* stream);
        char* cret;
 
-       BEFORE_ORIGINAL_FILE(fgets, LIBC);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_fgets, FD_API_READ_START,
+                               fgets, LIBC, stream, "sdp", str, size, stream);
 
-       FILE_API_START_BLOCK(API_ID_fgets, FD_API_READ_START, "sdp", str, size, stream);
-       
        cret = fgetsp(str, size, stream);
 
-       FILE_API_END_BLOCK(API_ID_fgets, cret, (ret == NULL ? 0 : strlen(cret)),
-                       FD_API_READ_END, "sdp", str, size, stream);
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_fgets, cret, (ret == NULL ? 0 : strlen(cret)),
+                       stream, FD_API_READ_END, "sdp", str, size, stream);
 
        return cret;
 }
@@ -323,13 +325,14 @@ int fputc(int character, FILE* stream)
 {
        static int (*fputcp)(int character, FILE* stream);
 
-       BEFORE_ORIGINAL_FILE(fputc, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_fputc, FD_API_WRITE_START,
-                                "dp", character, stream);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_fputc, fputc, LIBC, stream,
+                               FD_API_WRITE_START, "dp", character, stream);
+
        ret = fputcp(character, stream);
-       FILE_API_END_BLOCK(API_ID_fputc, ret, (ret != EOF),
+
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_fputc, ret, (ret == EOF ? 0 : 1), stream,
                                  FD_API_WRITE_END, "dp", character, stream);
+
        return ret;
 }
 
@@ -337,13 +340,14 @@ int fputs(const char* str, FILE* stream)
 {
        static int (*fputsp)(const char* str, FILE* stream);
 
-       BEFORE_ORIGINAL_FILE(fputs, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_fputs, FD_API_WRITE_START,
-                                "sp", str, stream);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_fputs, fputs, LIBC, stream,
+                               FD_API_WRITE_START, "sp", str, stream);
+
        ret = fputsp(str, stream);
-       FILE_API_END_BLOCK(API_ID_fputs, ret, ret, FD_API_WRITE_END,
-                               "sp", str, stream);
+
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_fputs, ret, ret, stream,
+                               FD_API_WRITE_END, "sp", str, stream);
+
        return ret;
 }
 
@@ -351,13 +355,14 @@ int getc(FILE* stream)
 {
        static int (*getcp)(FILE* stream);
 
-       BEFORE_ORIGINAL_FILE(getc, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_getc, FD_API_READ_START,
-                                "p", stream);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_getc, getc, LIBC, stream,
+                               FD_API_READ_START, "p", stream);
+
        ret = getcp(stream);
-       FILE_API_END_BLOCK(API_ID_getc, ret, (ret != EOF),
+
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_getc, ret, (ret == EOF ? 0 : 1), stream,
                                FD_API_READ_END, "p", stream);
+
        return ret;
 }
 
@@ -365,13 +370,14 @@ int putc(int character, FILE* stream)
 {
        static int (*putcp)(int character, FILE* stream);
 
-       BEFORE_ORIGINAL_FILE(putc, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_putc, FD_API_WRITE_START,
-                               "dp", character, stream);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_putc, putc, LIBC, stream,
+                               FD_API_WRITE_START, "dp", character, stream);
+
        ret = putcp(character, stream);
-       FILE_API_END_BLOCK(API_ID_putc, ret, (ret != EOF),
+
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_putc, ret, (ret == EOF ? 0 : 1), stream,
                                FD_API_WRITE_END, "dp", character, stream);
+
        return ret;
 }
 
@@ -379,13 +385,14 @@ int ungetc(int character, FILE* stream)
 {
        static int (*ungetcp)(int character, FILE* stream);
 
-       BEFORE_ORIGINAL_FILE(ungetc, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_putc, FD_API_WRITE_START,
-                               "dp", character, stream);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_putc, ungetc, LIBC, stream,
+                               FD_API_WRITE_START, "dp", character, stream);
+
        ret = ungetcp(character, stream);
-       FILE_API_END_BLOCK(API_ID_ungetc, ret, 0,
+
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_ungetc, ret, 0, stream,
                                FD_API_OTHER, "dp", character, stream);
+
        return ret;
 }
 
@@ -394,15 +401,13 @@ size_t fread(void* ptr, size_t size, size_t count, FILE* stream)
        static size_t (*freadp)(void* ptr, size_t size, size_t count, FILE* stream);
        size_t tret;
 
-       BEFORE_ORIGINAL_FILE(fread, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_fread, FD_API_READ_START,
-                               "pxxp", ptr, size, count, stream);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_fread, fread, LIBC, stream,
+                               FD_API_READ_START, "pxxp", ptr, size, count, stream);
 
        tret = freadp(ptr, size, count, stream);
 
-       FILE_API_END_BLOCK(API_ID_fread, tret, tret*size, FD_API_READ_END,
-                                 "pxxp", ptr, size, count, stream);
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_fread, tret, tret*size, stream,
+                               FD_API_READ_END, "pxxp", ptr, size, count, stream);
 
        return tret;
 }
@@ -412,15 +417,13 @@ size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream)
        static size_t (*fwritep)(const void* ptr, size_t size, size_t count, FILE* stream);
        size_t tret;
 
-       BEFORE_ORIGINAL_FILE(fwrite, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_fwrite, FD_API_WRITE_START,
-                               "pxxp", ptr, size, count, stream);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_fwrite, fwrite, LIBC, stream,
+                               FD_API_WRITE_START, "pxxp", ptr, size, count, stream);
 
        tret = fwritep(ptr, size, count, stream);
 
-       FILE_API_END_BLOCK(API_ID_fwrite, tret, tret*size, FD_API_WRITE_END,
-                                 "pxxp", ptr, size, count, stream);
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_fwrite, tret, tret*size, stream,
+                               FD_API_WRITE_END, "pxxp", ptr, size, count, stream);
 
        return tret;
 }
@@ -432,17 +435,17 @@ int fprintf(FILE* stream, const char* format, ...)
 {
        static int (*vfprintfp)(FILE* stream, const char* format, ...);
 
-       BEFORE_ORIGINAL_FILE(vfprintf, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_fprintf, FD_API_WRITE_START,
-                                "ps", stream, format);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_fprintf, vfprintf, LIBC, stream,
+                               FD_API_WRITE_START, "ps", stream, format);
 
        va_list arg;
        va_start(arg, format);
+
        ret = vfprintfp(stream, format, arg);
 
-       FILE_API_END_BLOCK(API_ID_fprintf, ret, ret, FD_API_WRITE_END,
-                               "ps", stream, format);
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_fprintf, ret, ret, stream,
+                               FD_API_WRITE_END, "ps", stream, format);
+
        va_end(arg);
 
        return ret;
@@ -452,17 +455,17 @@ int fscanf(FILE* stream, const char* format, ...)
 {
        static int (*vfscanfp)(FILE* stream, const char* format, ...);
 
-       BEFORE_ORIGINAL_FILE(vfscanf, LIBC);
-       DEFINE_FILESIZE_FP(stream);
-       FILE_API_START_BLOCK(API_ID_fscanf, FD_API_READ_START,
-                                "ps", stream, format);
+       BEFORE_ORIGINAL_START_END_FILEP(API_ID_fscanf, vfscanf, LIBC, stream,
+                               FD_API_READ_START, "ps", stream, format);
 
        va_list arg;
        va_start(arg, format);
+
        ret = vfscanfp(stream, format, arg);
 
-       FILE_API_END_BLOCK(API_ID_fscanf, ret, ret,
+       AFTER_ORIGINAL_START_END_FILEP(API_ID_fscanf, ret, ret, stream,
                                FD_API_READ_END, "ps", stream, format);
+
        va_end(arg);
 
        return ret;
@@ -473,17 +476,16 @@ int printf(const char* format, ...)
 {
        static int (*vprintfp)(const char* format, ...);
 
-       BEFORE_ORIGINAL_FILE(vprintf, LIBC);
-       DEFINE_FILESIZE_0();
-       FILE_API_START_BLOCK(API_ID_printf, FD_API_WRITE_START,
-                                "s", format);
+       BEFORE_ORIGINAL_START_END_NOFD(API_ID_printf, vprintf, LIBC,
+                               FD_API_WRITE_START, "s", format);
 
        va_list arg;
        va_start(arg, format);
        ret = vprintfp(format, arg);
 
-       FILE_API_END_BLOCK(API_ID_printf, ret, ret,
+       AFTER_ORIGINAL_START_END_NOFD(API_ID_printf, ret, ret,
                                FD_API_WRITE_END, "s", format);
+
        va_end(arg);
 
        return ret;
@@ -494,17 +496,16 @@ int scanf(const char* format, ...)
 {
        static int (*vscanfp)(const char* format, ...);
 
-       BEFORE_ORIGINAL_FILE(vscanf, LIBC);
-       DEFINE_FILESIZE_0();
-       FILE_API_START_BLOCK(API_ID_scanf, FD_API_READ_START,
-                                "s", format);
+       BEFORE_ORIGINAL_START_END_NOFD(API_ID_scanf, vscanf, LIBC,
+                               FD_API_READ_START, "s", format);
 
        va_list arg;
        va_start(arg, format);
        ret = vscanfp(format, arg);
 
-       FILE_API_END_BLOCK(API_ID_scanf, ret, ret,
+       AFTER_ORIGINAL_START_END_NOFD(API_ID_scanf, ret, ret,
                                 FD_API_READ_END, "s", format);
+
        va_end(arg);
 
        return ret;
@@ -514,13 +515,14 @@ int getchar()
 {
        static int (*getcharp)();
 
-       BEFORE_ORIGINAL_FILE(getchar, LIBC);
-       DEFINE_FILESIZE_0();
-       FILE_API_START_BLOCK(API_ID_getchar, FD_API_READ_START,
-                            "s", "");
+       BEFORE_ORIGINAL_START_END_NOFD(API_ID_getchar, getchar, LIBC,
+                               FD_API_READ_START, "", 0);
+
        ret = getcharp();
-       FILE_API_END_BLOCK(API_ID_getchar, ret, (ret != EOF ),
+
+       AFTER_ORIGINAL_START_END_NOFD(API_ID_getchar, ret, (ret == EOF ? 0 : 1),
                                FD_API_READ_END, "", 0);
+
        return ret;
 }
 
@@ -528,13 +530,14 @@ int putchar(int c)
 {
        static int (*putcharp)(int c);
 
-       BEFORE_ORIGINAL_FILE(putchar, LIBC);
-       DEFINE_FILESIZE_0();
-       FILE_API_START_BLOCK(API_ID_putchar, FD_API_WRITE_START,
-                                  "d", c);
+       BEFORE_ORIGINAL_START_END_NOFD(API_ID_putchar, putchar, LIBC,
+                               FD_API_WRITE_START, "d", c);
+
        ret = putcharp(c);
-       FILE_API_END_BLOCK(API_ID_putchar, ret, (ret != EOF),
+
+       AFTER_ORIGINAL_START_END_NOFD(API_ID_putchar, ret, (ret == EOF ? 0 : 1),
                                FD_API_WRITE_END, "d", c);
+
        return ret;
 }
 
@@ -543,14 +546,12 @@ char* gets(char* str)
        static char* (*getsp)(char* str);
        char* cret;
 
-       BEFORE_ORIGINAL_FILE(gets, LIBC);
-       DEFINE_FILESIZE_0();
-       FILE_API_START_BLOCK(API_ID_gets, FD_API_READ_START,
-                                "s", str);
+       BEFORE_ORIGINAL_START_END_NOFD(API_ID_gets, gets, LIBC,
+                               FD_API_READ_START, "s", str);
 
        cret = getsp(str);
 
-       FILE_API_END_BLOCK(API_ID_gets, cret, strlen(cret),
+       AFTER_ORIGINAL_START_END_NOFD(API_ID_gets, cret, strlen(cret),
                                FD_API_READ_END, "s", str);
 
        return cret;
@@ -561,13 +562,14 @@ int puts(const char* str)
 {
        static int (*putsp)(const char* str);
 
-       BEFORE_ORIGINAL_FILE(puts, LIBC);
-       DEFINE_FILESIZE_0();
-       FILE_API_START_BLOCK(API_ID_puts, FD_API_WRITE_START,
-                            "s", str);
+       BEFORE_ORIGINAL_START_END_NOFD(API_ID_puts, puts, LIBC,
+                               FD_API_WRITE_START, "s", str);
+
        ret = putsp(str);
-       FILE_API_END_BLOCK(API_ID_puts, ret, ret,
+
+       AFTER_ORIGINAL_START_END_NOFD(API_ID_puts, ret, ret,
                                FD_API_WRITE_END, "s", str);
+
        return ret;
 }
 #endif