file probe will send log only if fd is for normal file or socket
authorwoojin <woojin2.jung@samsung.com>
Thu, 22 Aug 2013 08:41:53 +0000 (17:41 +0900)
committerwoojin <woojin2.jung@samsung.com>
Thu, 22 Aug 2013 08:41:53 +0000 (17:41 +0900)
Change-Id: Ib514a9d6cfa8b960a7082a784ac2fd18659e60a8

probe_badaapi/bada_file.cpp
probe_file/da_io.h
probe_file/da_io_posix.c
probe_file/da_io_stdc.c
probe_thread/da_sync.h
probe_thread/libdasync.c
probe_thread/libdathread.c

index 43149d3..c6e126a 100755 (executable)
@@ -528,7 +528,7 @@ result File::Read(Tizen::Base::String& buffer) {
                        size = attr.GetFileSize();
                 WcharToChar(temp,this->GetName().GetPointer());
                 nRead = buffer.GetLength();
-                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,size,temp);
+                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ_END,size,temp);
                 //callstack
 
                 //              if(E_SUCCESS != ret || blockresult == 2) {
@@ -614,7 +614,7 @@ result File::Read(Tizen::Base::ByteBuffer& buffer) {
                        size = attr.GetFileSize();
                 WcharToChar(temp,this->GetName().GetPointer());
                 buffer.GetInt(nRead);
-                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,size,temp);
+                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ_END,size,temp);
                 //callstack
 
                 //              if(E_SUCCESS != ret || blockresult == 2) {
@@ -701,7 +701,7 @@ int File::Read(void *buffer, int length) {
                        size = attr.GetFileSize();
                 WcharToChar(temp,this->GetName().GetPointer());
                 nRead = Tell() - nRead;
-                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",res,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ,size,temp);
+                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",res,blockresult,(unsigned int)CALLER_ADDRESS,nRead,(unsigned int)this,FD_FILE,FD_API_READ_END,size,temp);
                 //callstack
 
                 //              if(E_SUCCESS != ret || blockresult == 2) {
@@ -997,7 +997,7 @@ result File::Write(const void *buffer, int length) {
                         size = attr.GetFileSize();
                 WcharToChar(temp,this->GetName().GetPointer());
                 nWritten = Tell() - nWritten;
-                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,size,temp);
+                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE_END,size,temp);
                 //callstack
 
                 //              if(E_SUCCESS != ret || blockresult == 2) {
@@ -1083,7 +1083,7 @@ result File::Write(const Tizen::Base::ByteBuffer& buffer) {
                        size = attr.GetFileSize();
                 WcharToChar(temp,this->GetName().GetPointer());
                 nWritten = Tell() - nWritten;
-                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,size,temp);
+                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE_END,size,temp);
                 //callstack
 
                 //              if(E_SUCCESS != ret || blockresult == 2) {
@@ -1171,7 +1171,7 @@ result File::Write(const Tizen::Base::String& buffer) {
                        size = attr.GetFileSize();
                 WcharToChar(temp,this->GetName().GetPointer());
                 nWritten = Tell() - nWritten;
-                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE,size,temp);
+                log.length += sprintf(log.data + log.length,"`,0`,%lu`,%d`,%u`,%d`,0x%x`,%d`,%d`,%lld`,%s",ret,blockresult,(unsigned int)CALLER_ADDRESS,nWritten,(unsigned int)this,FD_FILE,FD_API_WRITE_END,size,temp);
                 //callstack
 
                 //              if(E_SUCCESS != ret || blockresult == 2) {
@@ -1217,7 +1217,7 @@ File::~File(void) {
 
        if((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
-               // error occur if File class was failed to contruct
+               // error occur if File class was failed to construct
 //             if(E_SUCCESS == File::GetAttributes(this->GetName(),attr))
 //                     size = attr.GetFileSize();
                preBlockEnd();
index 9101f4a..58cd52c 100755 (executable)
                struct stat __attribute((unused)) _statbuf\r
 \r
 // =================================================================\r
-// POST_PROBEBLOCK_MIDDLE for file\r
+// PRE/POST_PROBEBLOCK for file\r
 // =================================================================\r
 \r
+#define PRE_PROBEBLOCK_BEGIN_FILE(FD)                                                                                  \\r
+       if((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {     \\r
+               _fstatret = fstat(FD, &_statbuf);                                                                               \\r
+               if(_fstatret != 0) perror("fstat error");                                                               \\r
+               if(S_ISREG(_statbuf.st_mode) || S_ISSOCK(_statbuf.st_mode)) {                   \\r
+                       setProbePoint(&probeInfo)\r
+\r
+#define PRE_PROBEBLOCK_END_FILE()      \\r
+                       preBlockEnd();                  \\r
+               }                                                       \\r
+       }                                                               \\r
+       olderrno = errno;                               \\r
+       errno = 0\r
+\r
+#define POST_PROBEBLOCK_BEGIN_FILE(LCTYPE, RETTYPE, RETVALUE, FD, INPUTFORMAT, ...)    \\r
+       newerrno = errno;                                                                                                                               \\r
+       if(postBlockBegin(blockresult)) {                                                                                               \\r
+               _fstatret = fstat(FD, &_statbuf);                                                                                       \\r
+               if(_fstatret != 0) perror("fstat error");                                                                       \\r
+               if(S_ISREG(_statbuf.st_mode) || S_ISSOCK(_statbuf.st_mode)) {                           \\r
+                       INIT_LOG;                                                                                                                               \\r
+                       APPEND_LOG_BASIC(LCTYPE);                                                                                               \\r
+                       APPEND_LOG_INPUT(INPUTFORMAT, __VA_ARGS__);                                                             \\r
+                       APPEND_LOG_RESULT(RETTYPE, RETVALUE);                                                                   \\r
+                       APPEND_LOG_CALLER()\r
+\r
+#define POST_PROBEBLOCK_END_FILE()                                     \\r
+                       printLog(&log, MSG_LOG);                                \\r
+               }                                                                                       \\r
+               postBlockEnd();                                                         \\r
+       }                                                                                               \\r
+       errno = (newerrno != 0) ? newerrno : olderrno\r
+\r
+#define PRE_START_END_PROBEBLOCK_BEGIN_FILE(LCTYPE, FD, INPUTFORMAT, ...)              \\r
+       PRE_PROBEBLOCK_BEGIN_FILE(FD);                                                                                          \\r
+       INIT_LOG;                                                                                                                                       \\r
+       APPEND_LOG_BASIC(LCTYPE);                                                                                                       \\r
+       APPEND_LOG_INPUT(INPUTFORMAT, __VA_ARGS__);                                                                     \\r
+       log.length += sprintf(log.data + log.length, "`,`,0`,0`,%d", blockresult);      \\r
+       APPEND_LOG_CALLER()\r
+\r
+#define POST_START_END_PROBEBLOCK_BEGIN_FILE(LCTYPE, RETTYPE, RETVALUE, FD, INPUTFORMAT, ...)  \\r
+       newerrno = errno;                                                                                                                                                       \\r
+       if(postBlockBegin(blockresult)) {                                                                                                                       \\r
+               _fstatret = fstat(FD, &_statbuf);                                                                                                               \\r
+               if(_fstatret != 0) perror("fstat error");                                                                                               \\r
+               if(S_ISREG(_statbuf.st_mode) || S_ISSOCK(_statbuf.st_mode)) {                                                   \\r
+                       setProbePoint(&probeInfo);                                                                                                                      \\r
+                       INIT_LOG;                                                                                                                                                       \\r
+                       APPEND_LOG_BASIC(LCTYPE);                                                                                                                       \\r
+                       APPEND_LOG_INPUT(INPUTFORMAT, __VA_ARGS__);                                                                                     \\r
+                       APPEND_LOG_RESULT(RETTYPE, RETVALUE);                                                                                           \\r
+                       APPEND_LOG_CALLER()\r
+\r
 #define POST_PROBEBLOCK_MIDDLE_FD(SIZE, FD, APITYPE)                                                   \\r
        log.length += sprintf(log.data + log.length, "`,%u`,%d`,%d`,%d`,%ld`,%s",       \\r
                        SIZE, FD, FD_FILE, APITYPE, (_fstatret == 0 ? _statbuf.st_size : 0), _filepath)\r
 // AFTER_ORIGINAL macro for file\r
 // ==================================================================\r
 \r
-#define AFTER_ORIGINAL_FD_RET(RTYPE, RVAL, SIZE, FD, APITYPE, INPUTFORMAT, ...)        \\r
-       POST_PROBEBLOCK_BEGIN(LC_RESOURCE, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__);      \\r
-       _fstatret = fstat(FD, &_statbuf);                                                                                       \\r
-       POST_PROBEBLOCK_MIDDLE_FD(SIZE, FD, APITYPE);                                                           \\r
-       POST_PROBEBLOCK_CALLSTACK_RESOURCE(APITYPE);                                                            \\r
-       POST_PROBEBLOCK_END()\r
+#define AFTER_ORIGINAL_FD_RET(RTYPE, RVAL, SIZE, FD, APITYPE, INPUTFORMAT, ...)                        \\r
+       POST_PROBEBLOCK_BEGIN_FILE(LC_RESOURCE, RTYPE, RVAL, FD, INPUTFORMAT, __VA_ARGS__);     \\r
+       if(S_ISREG(_statbuf.st_mode)) {                                                                                                         \\r
+               POST_PROBEBLOCK_MIDDLE_FD(SIZE, FD, APITYPE);                                                                   \\r
+               POST_PROBEBLOCK_CALLSTACK_RESOURCE(APITYPE);                                                                    \\r
+       } else {        /*socket*/                                                                                                                              \\r
+               POST_PROBEBLOCK_MIDDLE_FD(SIZE, FD, APITYPE);                                                                   \\r
+               POST_PROBEBLOCK_CALLSTACK_RESOURCE(APITYPE);                                                                    \\r
+       }                                                                                                                                                                       \\r
+       POST_PROBEBLOCK_END_FILE()\r
 \r
 #define AFTER_ORIGINAL_NOFD_RET(RTYPE, RVAL, SIZE, APITYPE, INPUTFORMAT, ...)  \\r
        POST_PROBEBLOCK_BEGIN(LC_RESOURCE, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__);      \\r
        if(_fd != -1) {                                                                                                                                         \\r
                _fstatret = fstat(_fd, &_statbuf);                                                                                              \\r
        }                                                                                                                                                                       \\r
-       if(_fstatret != 0) PRINTMSG("ERROR : fstat error\n");                                                           \\r
+       if(_fstatret != 0) perror("fstat error");                                                                                       \\r
        POST_PROBEBLOCK_MIDDLE_FD(SIZE, _fd, APITYPE);                                                                          \\r
        POST_PROBEBLOCK_CALLSTACK_RESOURCE(APITYPE);                                                                            \\r
        POST_PROBEBLOCK_END()\r
 #define BEFORE_ORIGINAL_START_END_FD(FUNCNAME, LIBNAME, FD, APITYPE, INPUTFORMAT, ...) \\r
        DECLARE_VARIABLE_FD;                                                                                                                            \\r
        GET_REAL_FUNC(FUNCNAME, LIBNAME);                                                                                                       \\r
-       PRE_START_END_PROBEBLOCK_BEGIN(LC_RESOURCE, INPUTFORMAT, __VA_ARGS__);                          \\r
-       _fstatret = fstat(FD, &_statbuf);                                                                                                       \\r
-       POST_PROBEBLOCK_MIDDLE_FD(0, FD, APITYPE);                                                                                      \\r
-       APPEND_LOG_NULL_CALLSTACK();                                                                                                            \\r
+       PRE_START_END_PROBEBLOCK_BEGIN_FILE(LC_RESOURCE, FD, INPUTFORMAT, __VA_ARGS__);         \\r
+       if(S_ISREG(_statbuf.st_mode)) {                                                                                                         \\r
+               POST_PROBEBLOCK_MIDDLE_FD(0, FD, APITYPE);                                                                              \\r
+               APPEND_LOG_NULL_CALLSTACK();                                                                                                    \\r
+       } else { /*socket*/                                                                                                                                     \\r
+               POST_PROBEBLOCK_MIDDLE_FD(0, FD, APITYPE);                                                                              \\r
+               APPEND_LOG_NULL_CALLSTACK();                                                                                                    \\r
+       }                                                                                                                                                                       \\r
        printLog(&log, MSG_LOG);                                                                                                                        \\r
-       PRE_PROBEBLOCK_END()\r
+       PRE_PROBEBLOCK_END_FILE()\r
 \r
 #define BEFORE_ORIGINAL_START_END_NOFD(FUNCNAME, LIBNAME, APITYPE, INPUTFORMAT, ...)   \\r
        DECLARE_VARIABLE_FD;                                                                                                                            \\r
        printLog(&log, MSG_LOG);                                                                                                                        \\r
        PRE_PROBEBLOCK_END()\r
 \r
-\r
 #define BEFORE_ORIGINAL_START_END_FILEP(FUNCNAME, LIBNAME, FILEP, APITYPE, INPUTFORMAT, ...)   \\r
        DECLARE_VARIABLE_FD;                                                                                                                                            \\r
        GET_REAL_FUNC(FUNCNAME, LIBNAME);                                                                                                                       \\r
        if(_fd != -1) {                                                                                                                                                         \\r
                _fstatret = fstat(_fd, &_statbuf);                                                                                                              \\r
        }                                                                                                                                                                                       \\r
-       if(_fstatret != 0) PRINTMSG("ERROR : fstat error\n");                                                                           \\r
+       if(_fstatret != 0) perror("fstat error");                                                                                                       \\r
        POST_PROBEBLOCK_MIDDLE_FD(0, _fd, APITYPE);                                                                                                     \\r
        APPEND_LOG_NULL_CALLSTACK();                                                                                                                            \\r
        printLog(&log, MSG_LOG);                                                                                                                                        \\r
        PRE_PROBEBLOCK_END()\r
 \r
-#define AFTER_ORIGINAL_START_END_FD_RET(RTYPE, RVAL, SIZE, FD, APITYPE, INPUTFORMAT, ...)      \\r
-       POST_START_END_PROBEBLOCK_BEGIN(LC_RESOURCE, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__);    \\r
-       _fstatret = fstat(FD, &_statbuf);                                                                                                               \\r
-       POST_PROBEBLOCK_MIDDLE_FD(SIZE, FD, APITYPE);                                                                                   \\r
-       POST_PROBEBLOCK_CALLSTACK_RESOURCE(APITYPE);                                                                                    \\r
-       POST_PROBEBLOCK_END()\r
+#define AFTER_ORIGINAL_START_END_FD_RET(RTYPE, RVAL, SIZE, FD, APITYPE, INPUTFORMAT, ...)                      \\r
+       POST_START_END_PROBEBLOCK_BEGIN_FILE(LC_RESOURCE, RTYPE, RVAL, FD, INPUTFORMAT, __VA_ARGS__);   \\r
+       if(S_ISREG(_statbuf.st_mode)) {                                                                                                                                 \\r
+               POST_PROBEBLOCK_MIDDLE_FD(SIZE, FD, APITYPE);                                                                                           \\r
+               POST_PROBEBLOCK_CALLSTACK_RESOURCE(APITYPE);                                                                                            \\r
+       } else { /*socket*/                                                                                                                                                             \\r
+               POST_PROBEBLOCK_MIDDLE_FD(SIZE, FD, APITYPE);                                                                                           \\r
+               POST_PROBEBLOCK_CALLSTACK_RESOURCE(APITYPE);                                                                                            \\r
+       }                                                                                                                                                                                               \\r
+       POST_PROBEBLOCK_END_FILE()\r
 \r
 #define AFTER_ORIGINAL_START_END_NOFD_RET(RTYPE, RVAL, SIZE, APITYPE, INPUTFORMAT, ...)                \\r
        POST_START_END_PROBEBLOCK_BEGIN(LC_RESOURCE, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__);    \\r
        if(_fd != -1) {                                                                                                                                                         \\r
                _fstatret = fstat(_fd, &_statbuf);                                                                                                              \\r
        }                                                                                                                                                                                       \\r
-       if(_fstatret != 0) PRINTMSG("ERROR : fstat error\n");                                                                           \\r
+       if(_fstatret != 0) perror("fstat error");                                                                                                       \\r
        POST_PROBEBLOCK_MIDDLE_FD(SIZE, _fd, APITYPE);                                                                                          \\r
        POST_PROBEBLOCK_CALLSTACK_RESOURCE(APITYPE);                                                                                            \\r
        POST_PROBEBLOCK_END()\r
index 2415d38..63f51a1 100755 (executable)
@@ -120,43 +120,21 @@ int close(int fd)
        bfiltering = false;
        PRE_PROBEBLOCK_BEGIN();
        _fstatret = fstat(fd, &_statbuf);
+       if(_fstatret != 0) 
+               PRINTMSG("ERROR : fstat error\n");
        PRE_PROBEBLOCK_END();
 
        ret = closep(fd);
 
-       POST_PROBEBLOCK_BEGIN(LC_RESOURCE, VT_INT, ret, "%d", fd);
-       POST_PROBEBLOCK_MIDDLE_FD(0, fd, FD_API_CLOSE);
-       POST_PROBEBLOCK_CALLSTACK_RESOURCE(FD_API_CLOSE);
-       POST_PROBEBLOCK_END();
-
-       return ret;
-}
-
-int access(const char *path, int amode)
-{
-       static int (*accessp)(const char *path, int amode);
-
-       BEFORE_ORIGINAL_FILE(access, LIBC);
-       _filepath = (char*)path;
-
-       ret = accessp(path, amode);
-
-       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%s, %d", path, amode);
-
-       return ret;
-}
-
-int faccessat(int fd, const char *path, int amode, int flag)
-{
-       static int (*faccessatp)(int fd, const char *path, int amode, int flag);
-
-       BEFORE_ORIGINAL_FILE(faccessat, LIBC);
-       _filepath = (char*)path;
-
-       ret = faccessatp(fd, path, amode, flag);
-
-       AFTER_ORIGINAL_FD(0, fd, FD_API_PERMISSION,
-                       "%d, %s, %d, %d", fd, path, amode, flag);
+       POST_PROBEBLOCK_BEGIN_FILE(LC_RESOURCE, VT_INT, ret, fd, "%d", fd);
+       if(S_ISREG(_statbuf.st_mode)) {
+               POST_PROBEBLOCK_MIDDLE_FD(0, fd, FD_API_CLOSE);
+               POST_PROBEBLOCK_CALLSTACK_RESOURCE(FD_API_CLOSE);
+       } else { /*socket*/
+               POST_PROBEBLOCK_MIDDLE_FD(0, fd, FD_API_CLOSE);
+               POST_PROBEBLOCK_CALLSTACK_RESOURCE(FD_API_CLOSE);
+       }
+       POST_PROBEBLOCK_END_FILE();
 
        return ret;
 }
@@ -202,21 +180,6 @@ int fdatasync(int fd)
        return ret;
 }
 
-int truncate(const char *path, off_t length)
-{
-       static int (*truncatep)(const char *path, off_t length);
-
-       BEFORE_ORIGINAL_FILE(truncate, LIBC);
-       _filepath = (char*)path;
-
-       ret = truncatep(path, length);
-
-       AFTER_ORIGINAL_NOFD((unsigned int)length, FD_API_DIRECTORY,
-                       "%s, %ld", path, length);
-
-       return ret;
-}
-
 int ftruncate(int fd, off_t length)
 {
        static int (*ftruncatep)(int fd, off_t length);
@@ -231,94 +194,9 @@ int ftruncate(int fd, off_t length)
        return ret;
 }
 
-#if 1
-//not return FD, only make file
-int mkfifo(const char *path, mode_t mode)
-{
-       static int (*mkfifop)(const char *path, mode_t mode);
-
-       BEFORE_ORIGINAL_FILE(mkfifo, LIBC);
-       _filepath = (char*)path;
-
-       ret = mkfifop(path, mode);
-
-       AFTER_ORIGINAL_NOFD(0, FD_API_OTHER, "%s, %u", path, mode);
-
-       return ret;
-}
-
-int mkfifoat(int fd, const char *path, mode_t mode)
-{
-       static int (*mkfifoatp)(int fd, const char *path, mode_t mode);
-
-       BEFORE_ORIGINAL_FILE(mkfifoat, LIBC);
-       _filepath = (char*)path;
-
-       ret = mkfifoatp(fd, path, mode);
-
-       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER,
-                       "%d, %s, %u", fd, path, mode);
-
-       return ret;
-}
-
-int mknod(const char *path, mode_t mode, dev_t dev)
-{
-       static int (*mknodp)(const char *path, mode_t mode, dev_t dev);
-
-       BEFORE_ORIGINAL_FILE(mknod, LIBC);
-       _filepath = (char*)path;
-
-       ret = mknodp(path, mode, dev);
-
-       AFTER_ORIGINAL_NOFD(0, FD_API_OTHER,
-                       "%s, %u, %lu", path, mode, (unsigned long int)dev);
-
-       return ret;
-}
-
-int mknodat(int fd, const char *path, mode_t mode, dev_t dev)
-{
-       static int (*mknodatp)(int fd, const char *path, mode_t mode, dev_t dev);
-
-       BEFORE_ORIGINAL_FILE(mknodat, LIBC);
-       _filepath = (char*)path;
-
-       ret = mknodatp(fd,path, mode,dev);
-
-       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER,
-                       "%d, %s, %u, %lu", fd, path, mode, (unsigned long int)dev);
-
-       return ret;
-}
-#endif
-
 // ****************************************************************
 // File Permission APIs
 // ****************************************************************
-int chown(const char *path, uid_t owner, gid_t group)
-{
-       static int (*chownp)(const char *path, uid_t owner, gid_t group);
-
-       BEFORE_ORIGINAL_FILE(chown, LIBC);
-       _filepath = (char*)path;
-       ret = chownp(path, owner, group);
-       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%s, %u, %u", path, owner, group);
-       return ret;
-}
-
-int fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag)
-{
-       static int (*fchownatp)(int fd, const char *path, uid_t owner, gid_t group, int flag);
-
-       BEFORE_ORIGINAL_FILE(fchownat, LIBC);
-       _filepath = (char*)path;
-       ret = fchownatp(fd, path, owner, group, flag);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_PERMISSION,
-                       "%d, %s, %u, %u, %d", fd, path, owner, group, flag);
-       return ret;
-}
-
 int fchown(int fd, uid_t owner, gid_t group)
 {
        static int (*fchownp)(int fd, uid_t owner, gid_t group);
@@ -329,17 +207,6 @@ int fchown(int fd, uid_t owner, gid_t group)
        return ret;
 }
 
-int lchown(const char *path, uid_t owner, gid_t group)
-{
-       static int (*lchownp)(const char *path, uid_t owner, gid_t group);
-
-       BEFORE_ORIGINAL_FILE(lchown, LIBC);
-       _filepath = (char*)path;
-       ret = lchownp(path, owner, group);
-       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%s, %u, %u", path, owner, group);
-       return ret;
-}
-
 int lockf(int fd, int function, off_t size)
 {
        static int (*lockfp)(int fd, int function, off_t size);
@@ -351,29 +218,6 @@ int lockf(int fd, int function, off_t size)
        return ret;
 }
 
-int chmod(const char *path, mode_t mode)
-{
-       static int (*chmodp)(const char *path, mode_t mode);
-
-       BEFORE_ORIGINAL_FILE(chmod, LIBC);
-       _filepath = (char*)path;
-       ret = chmodp(path, mode);
-       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%s, %u", path, mode);
-       return ret;
-}
-
-int fchmodat(int fd, const char *path, mode_t mode, int flag)
-{
-       static int (*fchmodatp)(int fd, const char *path, mode_t mode, int flag);
-
-       BEFORE_ORIGINAL_FILE(fchmodat, LIBC);
-       _filepath = (char*)path;
-       ret = fchmodatp(fd, path, mode, flag);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_PERMISSION,
-                       "%d, %s, %u, %d", fd, path, mode, flag);
-       return ret;
-}
-
 int fchmod(int fd, mode_t mode)
 {
        static int (*fchmodp)(int fd, mode_t mode);
@@ -393,19 +237,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;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(pread, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FD(pread, LIBC, fd, FD_API_READ_START, "%d, %p, %u, %ld", fd, buf, nbyte, offset);
-#endif
+
        sret = preadp(fd, buf, nbyte, offset);
 
-#if 0
-       AFTER_ORIGINAL_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_READ,
-                       "%d, %p, %u, %ld", fd, buf, nbyte, offset);
-#else
        AFTER_ORIGINAL_START_END_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_READ_END, "%d, %p, %u, %ld", fd, buf, nbyte, offset);
-#endif
+
        return sret;
 }
 ssize_t read(int fd, void *buf, size_t nbyte)
@@ -413,20 +250,11 @@ ssize_t read(int fd, void *buf, size_t nbyte)
        static ssize_t (*readp)(int fildes, void *buf, size_t nbyte);
        ssize_t sret;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(read, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FD(read, LIBC, fd, FD_API_READ_START, "%d, %p, %u", fd, buf, nbyte);
-#endif
 
        sret = readp(fd, buf, nbyte);
 
-#if 0
-       AFTER_ORIGINAL_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_READ,
-                       "%d, %p, %u", fd, buf, nbyte);
-#else
        AFTER_ORIGINAL_START_END_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_READ_END, "%d, %p, %u", fd, buf, nbyte);
-#endif
 
        return sret;
 }
@@ -436,19 +264,12 @@ 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;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(pwrite, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FD(pwrite, LIBC, fd, FD_API_WRITE_START, "%d, %p, %u, %ld", fd, buf, nbyte, offset);
-#endif
+
        sret = pwritep(fd, buf, nbyte, offset);
 
-#if 0
-       AFTER_ORIGINAL_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_WRITE,
-                       "%d, %p, %u, %ld", fd, buf, nbyte, offset);
-#else
        AFTER_ORIGINAL_START_END_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_WRITE_END, "%d, %p, %u, %ld", fd, buf, nbyte, offset);
-#endif
+
        return sret;
 }
 
@@ -457,19 +278,12 @@ 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;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(write, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FD(write, LIBC, fd, FD_API_WRITE_START, "%d, %p, %u", fd, buf, nbyte);
-#endif
+
        sret = writep(fd, buf, nbyte);
 
-#if 0
-       AFTER_ORIGINAL_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_WRITE,
-                       "%d, %p, %u", fd, buf, nbyte);
-#else
        AFTER_ORIGINAL_START_END_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_WRITE_END, "%d, %p, %u", fd, buf, nbyte);
-#endif
+
        return sret;
 }
 
@@ -479,19 +293,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;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(readv, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FD(readv, LIBC, fd, FD_API_READ_START, "%d, %p, %d", fd, iov, iovcnt);
-#endif
+
        sret = readvp(fd,iov,iovcnt);
 
-#if 0
-       AFTER_ORIGINAL_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_READ,
-                       "%d, %p, %d", fd, iov, iovcnt);
-#else
        AFTER_ORIGINAL_START_END_FD_RET(VT_SSIZE_T, sret, (unsigned int)sret, fd, FD_API_READ_END, "%d, %p, %d", fd, iov, iovcnt);
-#endif
+
        return sret;
 }
 
@@ -510,138 +317,143 @@ ssize_t writev(int fd, const struct iovec *iov, int iovcnt)
 #endif
 
 // *****************************************************************
-// Directory I/O
+// File Attributes APIs
 // *****************************************************************
 
-int rmdir(const char *path)
+int fcntl(int fd, int cmd, ...)
 {
-       static int (*rmdirp)(const char *path);
+       static int (*fcntlp)(int fd, int cmd, ...);
+       int arg = 0;
 
-       BEFORE_ORIGINAL_FILE(rmdir, LIBC);
-       _filepath = (char*)path;
-       ret = rmdirp(path);
-       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s", path);
-       return ret;
-}
+       BEFORE_ORIGINAL_FILE(fcntl, LIBC);
 
-int fchdir(int fd)
-{
-       static int (*fchdirp)(int fd);
+       va_list argl;
+       va_start(argl, cmd);
+       arg = va_arg(argl, int);
+       va_end(argl);
 
-       BEFORE_ORIGINAL_FILE(fchdir, LIBC);
-       ret = fchdirp(fd);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_DIRECTORY, "%d", fd);
-       return ret;
-}
+       ret = fcntlp(fd, cmd, arg);
 
-int chdir(const char *path)
-{
-       static int (*chdirp)(const char *path);
+       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER, "%d, %d, %d", fd, cmd, arg);
 
-       BEFORE_ORIGINAL_FILE(chdir, LIBC);
-       _filepath = (char*)path;
-       ret = chdirp(path);
-       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s", path);
        return ret;
 }
 
-int link(const char *path1, const char *path2)
+int dup(int fd)
 {
-       static int (*linkp)(const char *path1, const char *path2);
+       static int (*dupp)(int fd);
 
-       BEFORE_ORIGINAL_FILE(link, LIBC);
-       _filepath = (char*)path1;
-       ret = linkp(path1, path2);
-       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s, %s", path1, path2);
-       return ret;
-}
+       BEFORE_ORIGINAL_FILE_NOFILTER(dup, LIBC);
 
-int linkat(int fd1, const char *path1, int fd2, const char *path2, int flag)
-{
-       static int (*linkatp)(int fd1, const char *path1, int fd2, const char *path2, int flag);
+       ret = dupp(fd);
+
+       AFTER_ORIGINAL_FD(0, ret, FD_API_OPEN, "%d", fd);
 
-       BEFORE_ORIGINAL_FILE(linkat, LIBC);
-       _filepath = (char*)path1;
-       ret = linkatp(fd1, path1, fd2, path2, flag);
-       AFTER_ORIGINAL_FD(0, fd2, FD_API_DIRECTORY,
-                       "%d, %s, %d, %s, %d", fd1, path2, fd2, path2, flag);
        return ret;
 }
 
-int unlink(const char *path)
+int dup2(int fd, int fd2)
 {
-       static int (*unlinkp)(const char *path);
+       static int (*dup2p)(int fd, int fd2);
+
+       BEFORE_ORIGINAL_FILE_NOFILTER(dup2, LIBC);
+
+       ret = dup2p(fd, fd2);
+
+       AFTER_ORIGINAL_FD(0, ret, FD_API_OPEN, "%d, %d", fd, fd2);
 
-       BEFORE_ORIGINAL_FILE(unlink, LIBC);
-       _filepath = (char*)path;
-       ret = unlinkp(path);
-       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s", path);
        return ret;
 }
 
-int unlinkat(int fd, const char *path, int flag)
+//FIXME dlsym error
+// fstat is not in LIBC
+#if 0
+int fstat(int fd, struct stat *buf)
 {
-       static int (*unlinkatp)(int fd, const char *path, int flag);
+       static int (*fstatp)(int fd, struct stat *buf);
 
-       BEFORE_ORIGINAL_FILE(unlinkat, LIBC);
-       _filepath = (char*)path;
-       ret = unlinkatp(fd, path, flag);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_DIRECTORY, "%d, %s, %d", fd, path, flag);
+       BEFORE_ORIGINAL_FILE(fstat, LIBC);
+       ret = fstatp(fd, buf);
+       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER, "%d, %p", fd, buf);
        return ret;
 }
+#endif
 
-int symlink(const char *path1, const char *path2)
+int futimens(int fd, const struct timespec times[2])
 {
-       static int (*symlinkp)(const char *path1, const char *path2);
+       static int (*futimensp)(int fd, const struct timespec times[2]);
 
-       BEFORE_ORIGINAL_FILE(symlink, LIBC);
-       _filepath = (char*)path1;
-       ret = symlinkp(path1, path2);
-       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s, %s", path1, path2);
+       BEFORE_ORIGINAL_FILE(futimens, LIBC);
+       ret = futimensp(fd, times);
+       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER, "%d, %p", fd, times);
        return ret;
 }
 
-int symlinkat(const char *path1, int fd, const char *path2)
+#ifdef UNUSED_PROBE
+// unused
+// 1. non regular file APIs
+int mkfifo(const char *path, mode_t mode)
 {
-       static int (*symlinkatp)(const char *path1, int fd, const char *path2);
+       static int (*mkfifop)(const char *path, mode_t mode);
+
+       BEFORE_ORIGINAL_FILE(mkfifo, LIBC);
+       _filepath = (char*)path;
+
+       ret = mkfifop(path, mode);
+
+       AFTER_ORIGINAL_NOFD(0, FD_API_OTHER, "%s, %u", path, mode);
 
-       BEFORE_ORIGINAL_FILE(symlinkat, LIBC);
-       _filepath = (char*)path1;
-       ret = symlinkatp(path1, fd, path2);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_DIRECTORY, "%s, %d, %s", path1, fd, path2);
        return ret;
 }
 
-ssize_t readlink(const char* path, char* buf, size_t bufsize)
+int mkfifoat(int fd, const char *path, mode_t mode)
 {
-       static int (*readlinkp)(const char* path, char* buf, size_t bufsize);
-       ssize_t sret;
+       static int (*mkfifoatp)(int fd, const char *path, mode_t mode);
 
-       BEFORE_ORIGINAL_FILE(readlink, LIBC);
+       BEFORE_ORIGINAL_FILE(mkfifoat, LIBC);
        _filepath = (char*)path;
 
-       sret = readlinkp(path, buf, bufsize);
+       ret = mkfifoatp(fd, path, mode);
 
-       AFTER_ORIGINAL_NOFD_RET(VT_SSIZE_T, sret, bufsize, FD_API_DIRECTORY,
-                       "%s, %s, %u", path, buf, bufsize);
+       AFTER_ORIGINAL_NOFD(0, FD_API_OTHER, "%d, %s, %u", fd, path, mode);
 
-       return sret;
+       return ret;
 }
 
-ssize_t readlinkat(int fd, const char * path, char * buf, size_t bufsize)
+// *****************************************************************
+// Directory I/O
+// *****************************************************************
+
+int rmdir(const char *path)
 {
-       static int (*readlinkatp)(int fd, const char * path, char * buf, size_t bufsize);
-       ssize_t sret;
+       static int (*rmdirp)(const char *path);
 
-       BEFORE_ORIGINAL_FILE(readlinkat, LIBC);
+       BEFORE_ORIGINAL_FILE(rmdir, LIBC);
        _filepath = (char*)path;
+       ret = rmdirp(path);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s", path);
+       return ret;
+}
 
-       sret = readlinkatp(fd, path, buf, bufsize);
+int fchdir(int fd)
+{
+       static int (*fchdirp)(int fd);
+
+       BEFORE_ORIGINAL_FILE(fchdir, LIBC);
+       ret = fchdirp(fd);
+       AFTER_ORIGINAL_FD(0, fd, FD_API_DIRECTORY, "%d", fd);
+       return ret;
+}
 
-       AFTER_ORIGINAL_FD_RET(VT_SSIZE_T, sret, bufsize, fd, FD_API_DIRECTORY,
-                       "%d, %s, %s, %u", fd, path, buf, bufsize);
+int chdir(const char *path)
+{
+       static int (*chdirp)(const char *path);
 
-       return sret;
+       BEFORE_ORIGINAL_FILE(chdir, LIBC);
+       _filepath = (char*)path;
+       ret = chdirp(path);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s", path);
+       return ret;
 }
 
 int mkdir(const char *path, mode_t mode)
@@ -662,7 +474,7 @@ int mkdirat(int fd, const char *path, mode_t mode)
        BEFORE_ORIGINAL_FILE(mkdirat, LIBC);
        _filepath = (char*)path;
        ret = mkdiratp(fd, path, mode);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_DIRECTORY, "%d, %s, %u", fd, path, mode);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%d, %s, %u", fd, path, mode);
        return ret;
 }
 
@@ -766,68 +578,243 @@ long telldir(DIR *dirp)
        return lret;
 }
 
-// *****************************************************************
-// File Attributes APIs
-// *****************************************************************
+ssize_t readlink(const char* path, char* buf, size_t bufsize)
+{
+       static int (*readlinkp)(const char* path, char* buf, size_t bufsize);
+       ssize_t sret;
 
-int fcntl(int fd, int cmd, ...)
+       BEFORE_ORIGINAL_FILE(readlink, LIBC);
+       _filepath = (char*)path;
+
+       sret = readlinkp(path, buf, bufsize);
+
+       AFTER_ORIGINAL_NOFD_RET(VT_SSIZE_T, sret, bufsize, FD_API_DIRECTORY,
+                       "%s, %s, %u", path, buf, bufsize);
+
+       return sret;
+}
+
+ssize_t readlinkat(int fd, const char * path, char * buf, size_t bufsize)
 {
-       static int (*fcntlp)(int fd, int cmd, ...);
-       int arg = 0;
+       static int (*readlinkatp)(int fd, const char * path, char * buf, size_t bufsize);
+       ssize_t sret;
 
-       BEFORE_ORIGINAL_FILE(fcntl, LIBC);
+       BEFORE_ORIGINAL_FILE(readlinkat, LIBC);
+       _filepath = (char*)path;
 
-       va_list argl;
-       va_start(argl, cmd);
-       arg = va_arg(argl, int);
-       va_end(argl);
+       sret = readlinkatp(fd, path, buf, bufsize);
 
-       ret = fcntlp(fd, cmd, arg);
+       AFTER_ORIGINAL_NOFD_RET(VT_SSIZE_T, sret, bufsize, FD_API_DIRECTORY,
+                       "%d, %s, %s, %u", fd, path, buf, bufsize);
 
-       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER, "%d, %d, %d", fd, cmd, arg);
+       return sret;
+}
+
+// unused
+// 2. not using fd APIs
+int access(const char *path, int amode)
+{
+       static int (*accessp)(const char *path, int amode);
+
+       BEFORE_ORIGINAL_FILE(access, LIBC);
+       _filepath = (char*)path;
+
+       ret = accessp(path, amode);
+
+       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%s, %d", path, amode);
 
        return ret;
 }
 
-int dup(int fd)
+int faccessat(int fd, const char *path, int amode, int flag)
 {
-       static int (*dupp)(int fd);
+       static int (*faccessatp)(int fd, const char *path, int amode, int flag);
 
-       BEFORE_ORIGINAL_FILE_NOFILTER(dup, LIBC);
+       BEFORE_ORIGINAL_FILE(faccessat, LIBC);
+       _filepath = (char*)path;
 
-       ret = dupp(fd);
+       ret = faccessatp(fd, path, amode, flag);
 
-       AFTER_ORIGINAL_FD(0, ret, FD_API_OPEN, "%d", fd);
+       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%d, %s, %d, %d", fd, path, amode, flag);
 
        return ret;
 }
 
-int dup2(int fd, int fd2)
+int truncate(const char *path, off_t length)
 {
-       static int (*dup2p)(int fd, int fd2);
+       static int (*truncatep)(const char *path, off_t length);
 
-       BEFORE_ORIGINAL_FILE_NOFILTER(dup2, LIBC);
+       BEFORE_ORIGINAL_FILE(truncate, LIBC);
+       _filepath = (char*)path;
 
-       ret = dup2p(fd, fd2);
+       ret = truncatep(path, length);
 
-       AFTER_ORIGINAL_FD(0, ret, FD_API_OPEN, "%d, %d", fd, fd2);
+       AFTER_ORIGINAL_NOFD((unsigned int)length, FD_API_DIRECTORY,
+                       "%s, %ld", path, length);
 
        return ret;
 }
 
-//FIXME dlsym error
-// fstat is not in LIBC
-#if 0
-int fstat(int fd, struct stat *buf)
+#if 1
+int mknod(const char *path, mode_t mode, dev_t dev)
 {
-       static int (*fstatp)(int fd, struct stat *buf);
+       static int (*mknodp)(const char *path, mode_t mode, dev_t dev);
 
-       BEFORE_ORIGINAL_FILE(fstat, LIBC);
-       ret = fstatp(fd, buf);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER, "%d, %p", fd, buf);
+       BEFORE_ORIGINAL_FILE(mknod, LIBC);
+       _filepath = (char*)path;
+
+       ret = mknodp(path, mode, dev);
+
+       AFTER_ORIGINAL_NOFD(0, FD_API_OTHER,
+                       "%s, %u, %lu", path, mode, (unsigned long int)dev);
+
+       return ret;
+}
+
+int mknodat(int fd, const char *path, mode_t mode, dev_t dev)
+{
+       static int (*mknodatp)(int fd, const char *path, mode_t mode, dev_t dev);
+
+       BEFORE_ORIGINAL_FILE(mknodat, LIBC);
+       _filepath = (char*)path;
+
+       ret = mknodatp(fd,path, mode,dev);
+
+       AFTER_ORIGINAL_NOFD(0, FD_API_OTHER,
+                       "%d, %s, %u, %lu", fd, path, mode, (unsigned long int)dev);
+
+       return ret;
+}
+#endif
+
+// ****************************************************************
+// File Permission APIs
+// ****************************************************************
+int chown(const char *path, uid_t owner, gid_t group)
+{
+       static int (*chownp)(const char *path, uid_t owner, gid_t group);
+
+       BEFORE_ORIGINAL_FILE(chown, LIBC);
+       _filepath = (char*)path;
+       ret = chownp(path, owner, group);
+       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%s, %u, %u", path, owner, group);
+       return ret;
+}
+
+int fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag)
+{
+       static int (*fchownatp)(int fd, const char *path, uid_t owner, gid_t group, int flag);
+
+       BEFORE_ORIGINAL_FILE(fchownat, LIBC);
+       _filepath = (char*)path;
+       ret = fchownatp(fd, path, owner, group, flag);
+       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION,
+                       "%d, %s, %u, %u, %d", fd, path, owner, group, flag);
+       return ret;
+}
+
+int lchown(const char *path, uid_t owner, gid_t group)
+{
+       static int (*lchownp)(const char *path, uid_t owner, gid_t group);
+
+       BEFORE_ORIGINAL_FILE(lchown, LIBC);
+       _filepath = (char*)path;
+       ret = lchownp(path, owner, group);
+       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%s, %u, %u", path, owner, group);
+       return ret;
+}
+
+int chmod(const char *path, mode_t mode)
+{
+       static int (*chmodp)(const char *path, mode_t mode);
+
+       BEFORE_ORIGINAL_FILE(chmod, LIBC);
+       _filepath = (char*)path;
+       ret = chmodp(path, mode);
+       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%s, %u", path, mode);
+       return ret;
+}
+
+int fchmodat(int fd, const char *path, mode_t mode, int flag)
+{
+       static int (*fchmodatp)(int fd, const char *path, mode_t mode, int flag);
+
+       BEFORE_ORIGINAL_FILE(fchmodat, LIBC);
+       _filepath = (char*)path;
+       ret = fchmodatp(fd, path, mode, flag);
+       AFTER_ORIGINAL_NOFD(0, FD_API_PERMISSION, "%d, %s, %u, %d", fd, path, mode, flag);
+       return ret;
+}
+
+int link(const char *path1, const char *path2)
+{
+       static int (*linkp)(const char *path1, const char *path2);
+
+       BEFORE_ORIGINAL_FILE(link, LIBC);
+       _filepath = (char*)path1;
+       ret = linkp(path1, path2);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s, %s", path1, path2);
+       return ret;
+}
+
+int linkat(int fd1, const char *path1, int fd2, const char *path2, int flag)
+{
+       static int (*linkatp)(int fd1, const char *path1, int fd2, const char *path2, int flag);
+
+       BEFORE_ORIGINAL_FILE(linkat, LIBC);
+       _filepath = (char*)path1;
+       ret = linkatp(fd1, path1, fd2, path2, flag);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY,
+                       "%d, %s, %d, %s, %d", fd1, path2, fd2, path2, flag);
+       return ret;
+}
+
+int unlink(const char *path)
+{
+       static int (*unlinkp)(const char *path);
+
+       BEFORE_ORIGINAL_FILE(unlink, LIBC);
+       _filepath = (char*)path;
+       ret = unlinkp(path);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s", path);
+       return ret;
+}
+
+int unlinkat(int fd, const char *path, int flag)
+{
+       static int (*unlinkatp)(int fd, const char *path, int flag);
+
+       BEFORE_ORIGINAL_FILE(unlinkat, LIBC);
+       _filepath = (char*)path;
+       ret = unlinkatp(fd, path, flag);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%d, %s, %d", fd, path, flag);
+       return ret;
+}
+
+int symlink(const char *path1, const char *path2)
+{
+       static int (*symlinkp)(const char *path1, const char *path2);
+
+       BEFORE_ORIGINAL_FILE(symlink, LIBC);
+       _filepath = (char*)path1;
+       ret = symlinkp(path1, path2);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s, %s", path1, path2);
+       return ret;
+}
+
+int symlinkat(const char *path1, int fd, const char *path2)
+{
+       static int (*symlinkatp)(const char *path1, int fd, const char *path2);
+
+       BEFORE_ORIGINAL_FILE(symlinkat, LIBC);
+       _filepath = (char*)path1;
+       ret = symlinkatp(path1, fd, path2);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s, %d, %s", path1, fd, path2);
        return ret;
 }
 
+//FIXME dlsym error
+#if 0
 int stat(const char * path, struct stat * buf)
 {
        static int (*statp)(const char * path, struct stat * buf);
@@ -838,7 +825,6 @@ int stat(const char * path, struct stat * buf)
        AFTER_ORIGINAL_NOFD(0, FD_API_OTHER, "%s, %p", path, buf);
        return ret;
 }
-
 #endif
 
 int fstatat(int fd, const char * path, struct stat * buf, int flag)
@@ -848,7 +834,7 @@ int fstatat(int fd, const char * path, struct stat * buf, int flag)
        BEFORE_ORIGINAL_FILE(fstatat, LIBC);
        _filepath = (char*)path;
        ret = fstatatp(fd, path, buf, flag);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER, "%d, %s, %p, %d", fd, path, buf, flag);
+       AFTER_ORIGINAL_NOFD(0, FD_API_OTHER, "%d, %s, %p, %d", fd, path, buf, flag);
        return ret;
 }
 
@@ -863,16 +849,6 @@ int lstat(const char * path, struct stat * buf)
        return ret;
 }
 
-int futimens(int fd, const struct timespec times[2])
-{
-       static int (*futimensp)(int fd, const struct timespec times[2]);
-
-       BEFORE_ORIGINAL_FILE(futimens, LIBC);
-       ret = futimensp(fd, times);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER, "%d, %p", fd, times);
-       return ret;
-}
-
 int utimensat(int fd, const char *path, const struct timespec times[2], int flag)
 {
        static int (*utimensatp)(int fd, const char *path, const struct timespec times[2], int flag);
@@ -880,8 +856,7 @@ int utimensat(int fd, const char *path, const struct timespec times[2], int flag
        BEFORE_ORIGINAL_FILE(utimensat, LIBC);
        _filepath = (char*)path;
        ret = utimensatp(fd, path, times, flag);
-       AFTER_ORIGINAL_FD(0, fd, FD_API_OTHER,
-                       "%d, %s, %p, %d", fd, path, times, flag);
+       AFTER_ORIGINAL_NOFD(0, FD_API_OTHER, "%d, %s, %p, %d", fd, path, times, flag);
        return ret;
 }
 
@@ -906,5 +881,4 @@ int utime(const char *path, const struct utimbuf *times)
        AFTER_ORIGINAL_NOFD(0, FD_API_OTHER, "%s, %p", path, times);
        return ret;
 }
-
-
+#endif
index cf83b28..cf05c5c 100644 (file)
@@ -122,28 +122,6 @@ int fclose(FILE* stream)
        return ret;
 }
 
-int remove(const char* filename)
-{
-       static int (*removep)(const char* filename);
-
-       BEFORE_ORIGINAL_FILE(remove, LIBC);
-       _filepath = (char*)filename;
-       ret = removep(filename);
-       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s", filename);
-       return ret;
-}
-
-int rename(const char* oldname, const char* newname)
-{
-       static int (*renamep)(const char* oldname, const char* newname);
-
-       BEFORE_ORIGINAL_FILE(rename, LIBC);
-       _filepath = (char*)newname;
-       ret = renamep(oldname, newname);
-       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s, %s", oldname, newname);
-       return ret;
-}
-
 FILE * tmpfile ( void )
 {
        static FILE* (*tmpfilep) ( void );
@@ -255,17 +233,6 @@ int fileno(FILE* stream)
        return ret;
 }
 
-void perror(const char* string)
-{
-       static void (*perrorp)(const char* string);
-
-       BEFORE_ORIGINAL_FILE(perror, LIBC);
-
-       perrorp(string);
-
-       AFTER_ORIGINAL_NOFD_RET(VT_NULL, NULL, 0, FD_API_OTHER, "%s", string);
-}
-
 // *******************************************************************
 // File read / write APIs
 // *******************************************************************
@@ -274,17 +241,9 @@ int vfprintf(FILE* stream, const char* format, va_list arg)
 {
        static int (*vfprintfp)(FILE* stream, const char* format, va_list arg);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(vfprintf, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(vfprintf, LIBC, stream, FD_API_WRITE_START, "%p, %s", stream, format);
-#endif
        ret = vfprintfp(stream, format, arg);
-#if 0
-       AFTER_ORIGINAL_FILEP(ret, stream, FD_API_WRITE, "%p, %s", stream, format);
-#else
        AFTER_ORIGINAL_START_END_FILEP(ret, stream, FD_API_WRITE_END, "%p, %s", stream, format);
-#endif
        return ret;
 }
 
@@ -292,17 +251,9 @@ int vfscanf(FILE* stream, const char* format, va_list arg)
 {
        static int (*vfscanfp)(FILE* stream, const char* format, va_list arg);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(vfscanf, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(vfscanf, LIBC, stream, FD_API_READ_START, "%p, %s", stream, format);
-#endif
        ret = vfscanfp(stream, format, arg);
-#if 0
-       AFTER_ORIGINAL_FILEP(ret, stream, FD_API_READ, "%p, %s", stream, format);
-#else
        AFTER_ORIGINAL_START_END_FILEP(ret, stream, FD_API_READ_END, "%p, %s", stream, format);
-#endif
        return ret;
 }
 
@@ -310,17 +261,9 @@ int fgetc(FILE* stream)
 {
        static int (*fgetcp)(FILE* stream);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(fgetc, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(fgetc, LIBC, stream, FD_API_READ_START, "%p", stream);
-#endif
        ret = fgetcp(stream);
-#if 0
-       AFTER_ORIGINAL_FILEP((ret == EOF ? 0 : 1), stream, FD_API_READ, "%p", stream);
-#else
        AFTER_ORIGINAL_START_END_FILEP((ret == EOF ? 0 : 1), stream, FD_API_READ_END, "%p", stream);
-#endif
        return ret;
 }
 
@@ -330,20 +273,11 @@ char* fgets(char* str, int size, FILE* stream)
        static char* (*fgetsp)(char* str, int num, FILE* stream);
        char* cret;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(fgets, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(fgets, LIBC, stream, FD_API_READ_START, "%s, %d, %p", str, size, stream);
-#endif
        
        cret = fgetsp(str, size, stream);
 
-#if 0
-       AFTER_ORIGINAL_FILEP_RET(VT_STR, cret, (ret == NULL ? 0 : strlen(cret)),
-                       stream, FD_API_READ, "%s, %d, %p", str, size, stream);
-#else
        AFTER_ORIGINAL_START_END_FILEP_RET(VT_STR, cret, (ret == NULL ? 0 : strlen(cret)), stream, FD_API_READ_END, "%s, %d, %p", str, size, stream);
-#endif
 
        return cret;
 }
@@ -353,18 +287,9 @@ int fputc(int character, FILE* stream)
 {
        static int (*fputcp)(int character, FILE* stream);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(fputc, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(fputc, LIBC, stream, FD_API_WRITE_START, "%d, %p", character, stream);
-#endif
        ret = fputcp(character, stream);
-#if 0
-       AFTER_ORIGINAL_FILEP((ret == EOF ? 0 : 1), stream, FD_API_WRITE,
-                       "%d, %p", character, stream);
-#else
        AFTER_ORIGINAL_START_END_FILEP((ret == EOF ? 0 : 1), stream, FD_API_WRITE_END, "%d, %p", character, stream);
-#endif
        return ret;
 }
 
@@ -372,17 +297,9 @@ int fputs(const char* str, FILE* stream)
 {
        static int (*fputsp)(const char* str, FILE* stream);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(fputs, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(fputs, LIBC, stream, FD_API_WRITE_START, "%s, %p", str, stream);
-#endif
        ret = fputsp(str, stream);
-#if 0
-       AFTER_ORIGINAL_FILEP(ret, stream, FD_API_WRITE, "%s, %p", str, stream);
-#else
        AFTER_ORIGINAL_START_END_FILEP(ret, stream, FD_API_WRITE_END, "%s, %p", str, stream);
-#endif
        return ret;
 }
 
@@ -390,17 +307,9 @@ int getc(FILE* stream)
 {
        static int (*getcp)(FILE* stream);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(getc, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(getc, LIBC, stream, FD_API_READ_START, "%p", stream);
-#endif
        ret = getcp(stream);
-#if 0
-       AFTER_ORIGINAL_FILEP((ret == EOF ? 0 : 1), stream, FD_API_READ, "%p", stream);
-#else
        AFTER_ORIGINAL_START_END_FILEP((ret == EOF ? 0 : 1), stream, FD_API_READ_END, "%p", stream);
-#endif
        return ret;
 }
 
@@ -408,18 +317,9 @@ int putc(int character, FILE* stream)
 {
        static int (*putcp)(int character, FILE* stream);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(putc, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(putc, LIBC, stream, FD_API_WRITE_START, "%d, %p", character, stream);
-#endif
        ret = putcp(character, stream);
-#if 0
-       AFTER_ORIGINAL_FILEP((ret == EOF ? 0 : 1), stream, FD_API_WRITE,
-                       "%d, %p", character, stream);
-#else
        AFTER_ORIGINAL_START_END_FILEP((ret == EOF ? 0 : 1), stream, FD_API_WRITE_END, "%d, %p", character, stream);
-#endif
        return ret;
 }
 
@@ -438,19 +338,11 @@ 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;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(fread, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(fread, LIBC, stream, FD_API_READ_START, "%p, %u, %u, %p", ptr, size, count, stream);
-#endif
+       
        tret = freadp(ptr, size, count, stream);
        
-#if 0
-       AFTER_ORIGINAL_FILEP_RET(VT_SIZE_T, tret, 0, stream, FD_API_READ,
-                       "%p, %u, %u, %p", ptr, size, count, stream);
-#else
        AFTER_ORIGINAL_START_END_FILEP_RET(VT_SIZE_T, tret, 0, stream, FD_API_READ_END, "%p, %u, %u, %p", ptr, size, count, stream);
-#endif
        
        return tret;
 }
@@ -460,20 +352,11 @@ 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;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(fwrite, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(fwrite, LIBC, stream, FD_API_WRITE_START, "%p, %u, %u, %p", ptr, size, count, stream);
-#endif
 
        tret = fwritep(ptr, size, count, stream);
 
-#if 0
-       AFTER_ORIGINAL_FILEP_RET(VT_SIZE_T, tret, 0, stream, FD_API_WRITE,
-                       "%p, %u, %u, %p", ptr, size, count, stream);
-#else
        AFTER_ORIGINAL_START_END_FILEP_RET(VT_SIZE_T, tret, 0, stream, FD_API_WRITE_END, "%p, %u, %u, %p", ptr, size, count, stream);
-#endif
 
        return tret;
 }
@@ -485,20 +368,13 @@ int fprintf(FILE* stream, const char* format, ...)
 {
        static int (*vfprintfp)(FILE* stream, const char* format, ...);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(vfprintf, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(vfprintf, LIBC, stream, FD_API_WRITE_START, "%p, %s, ...", stream, format);
-#endif
+
        va_list arg;
        va_start(arg, format);
        ret = vfprintfp(stream, format, arg);
 
-#if 0
-       AFTER_ORIGINAL_FILEP(ret, stream, FD_API_WRITE, "%p, %s, ...", stream, format);
-#else
        AFTER_ORIGINAL_START_END_FILEP(ret, stream, FD_API_WRITE_END, "%p, %s, ...", stream, format);
-#endif
        va_end(arg);
 
        return ret;
@@ -508,21 +384,13 @@ int fscanf(FILE* stream, const char* format, ...)
 {
        static int (*vfscanfp)(FILE* stream, const char* format, ...);
        
-#if 0
-       BEFORE_ORIGINAL_FILE(vfscanf, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_FILEP(vfscanf, LIBC, stream, FD_API_READ_START, "%p, %s, ...", stream, format);
-#endif
 
        va_list arg;
        va_start(arg, format);
        ret = vfscanfp(stream, format, arg);
 
-#if 0
-       AFTER_ORIGINAL_FILEP(ret, stream, FD_API_READ, "%p, %s, ...", stream, format);
-#else
        AFTER_ORIGINAL_START_END_FILEP(ret, stream, FD_API_READ_END, "%p, %s, ...", stream, format);
-#endif
        va_end(arg);
 
        return ret;
@@ -533,21 +401,13 @@ int printf(const char* format, ...)
 {
        static int (*vprintfp)(const char* format, ...);
        
-#if 0
-       BEFORE_ORIGINAL_FILE(vprintf, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_NOFD(vprintf, LIBC, FD_API_WRITE_START, "%s,...", format);
-#endif
 
        va_list arg;
        va_start(arg, format);
        ret = vprintfp(format, arg);
 
-#if 0
-       AFTER_ORIGINAL_NOFD(ret, FD_API_WRITE, "%s,...", format);
-#else
        AFTER_ORIGINAL_START_END_NOFD(ret, FD_API_WRITE_END, "%s,...", format);
-#endif
        va_end(arg);
 
        return ret;
@@ -558,21 +418,13 @@ int scanf(const char* format, ...)
 {
        static int (*vscanfp)(const char* format, ...);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(vscanf, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_NOFD(vscanf, LIBC, FD_API_READ_START, "%s,...", format);
-#endif
 
        va_list arg;
        va_start(arg, format);
        ret = vscanfp(format, arg);
 
-#if 0
-       AFTER_ORIGINAL_NOFD(ret, FD_API_READ, "%s,...", format);
-#else
        AFTER_ORIGINAL_START_END_NOFD(ret, FD_API_READ_END, "%s,...", format);
-#endif
        va_end(arg);
 
        return ret;
@@ -582,17 +434,9 @@ int getchar()
 {
        static int (*getcharp)();
 
-#if 0
-       BEFORE_ORIGINAL_FILE(getchar, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_NOFD(getchar, LIBC, FD_API_READ_START, "%s", "");
-#endif
        ret = getcharp();
-#if 0
-       AFTER_ORIGINAL_NOFD((ret == EOF ? 0 : 1), FD_API_READ, "%s", "");
-#else
        AFTER_ORIGINAL_START_END_NOFD((ret == EOF ? 0 : 1), FD_API_READ_END, "%s", "");
-#endif
        return ret;
 }
 
@@ -600,17 +444,9 @@ int putchar(int c)
 {
        static int (*putcharp)(int c);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(putchar, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_NOFD(putchar, LIBC, FD_API_WRITE_START, "%d", c);
-#endif
        ret = putcharp(c);
-#if 0
-       AFTER_ORIGINAL_NOFD((ret == EOF ? 0 : 1), FD_API_WRITE, "%d", c);
-#else
        AFTER_ORIGINAL_START_END_NOFD((ret == EOF ? 0 : 1), FD_API_WRITE_END, "%d", c);
-#endif
        return ret;
 }
 
@@ -619,19 +455,11 @@ char* gets(char* str)
        static char* (*getsp)(char* str);
        char* cret;
 
-#if 0
-       BEFORE_ORIGINAL_FILE(gets, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_NOFD(gets, LIBC, FD_API_READ_START, "%s", str);
-#endif
 
        cret = getsp(str);
        
-#if 0
-       AFTER_ORIGINAL_NOFD_RET(VT_STR, cret, strlen(cret), FD_API_READ, "%s", str);
-#else
        AFTER_ORIGINAL_START_END_NOFD_RET(VT_STR, cret, strlen(cret), FD_API_READ_END, "%s", str);
-#endif
 
        return cret;
 }
@@ -641,35 +469,13 @@ int puts(const char* str)
 {
        static int (*putsp)(const char* str);
 
-#if 0
-       BEFORE_ORIGINAL_FILE(puts, LIBC);
-#else
        BEFORE_ORIGINAL_START_END_NOFD(puts, LIBC, FD_API_WRITE_START, "%s", str);
-#endif
        ret = putsp(str);
-#if 0
-       AFTER_ORIGINAL_NOFD(ret, FD_API_WRITE, "%s", str);
-#else
        AFTER_ORIGINAL_START_END_NOFD(ret, FD_API_WRITE_END, "%s", str);
-#endif
        return ret;
 }
 #endif
 
-char* tmpnam(char* str)
-{
-       static char* (*tmpnamp)(char* str);
-       char* cret;
-
-       BEFORE_ORIGINAL_FILE(tmpnam, LIBC);
-
-       cret = tmpnamp(str);
-
-       AFTER_ORIGINAL_NOFD_RET(VT_STR, cret, 0, FD_API_OTHER, "%s", str);
-
-       return cret;
-}
-
 void setbuf(FILE* stream, char* buf)
 {
        static void (*setbufp)(FILE* stream, char* buf);
@@ -716,3 +522,51 @@ int setvbuf(FILE* stream, char* buf, int mode, size_t size)
        return ret;
 }
 
+#ifdef UNUSED_PROBE
+int remove(const char* filename)
+{
+       static int (*removep)(const char* filename);
+
+       BEFORE_ORIGINAL_FILE(remove, LIBC);
+       _filepath = (char*)filename;
+       ret = removep(filename);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s", filename);
+       return ret;
+}
+
+int rename(const char* oldname, const char* newname)
+{
+       static int (*renamep)(const char* oldname, const char* newname);
+
+       BEFORE_ORIGINAL_FILE(rename, LIBC);
+       _filepath = (char*)newname;
+       ret = renamep(oldname, newname);
+       AFTER_ORIGINAL_NOFD(0, FD_API_DIRECTORY, "%s, %s", oldname, newname);
+       return ret;
+}
+
+void perror(const char* string)
+{
+       static void (*perrorp)(const char* string);
+
+       BEFORE_ORIGINAL_FILE(perror, LIBC);
+
+       perrorp(string);
+
+       AFTER_ORIGINAL_NOFD_RET(VT_NULL, NULL, 0, FD_API_OTHER, "%s", string);
+}
+
+char* tmpnam(char* str)
+{
+       static char* (*tmpnamp)(char* str);
+       char* cret;
+
+       BEFORE_ORIGINAL_FILE(tmpnam, LIBC);
+
+       cret = tmpnamp(str);
+
+       AFTER_ORIGINAL_NOFD_RET(VT_STR, cret, 0, FD_API_OTHER, "%s", str);
+
+       return cret;
+}
+#endif
index c425e23..88d6e7d 100644 (file)
@@ -39,6 +39,7 @@ extern "C"{
 
 int real_pthread_mutex_lock(pthread_mutex_t *mutex);
 int real_pthread_mutex_unlock(pthread_mutex_t *mutex);
+int real_pthread_setcancelstate(int state, int *oldstate);
 
 #define BEFORE_ORIGINAL_SYNC(FUNCNAME, LIBNAME)        \
        DECLARE_VARIABLE_STANDARD;                                              \
index 72c0e66..f7a4fdc 100644 (file)
@@ -77,48 +77,12 @@ int real_pthread_mutex_lock(pthread_mutex_t *mutex) {
 int pthread_mutex_lock(pthread_mutex_t *mutex) {
        static int (*pthread_mutex_lockp)(pthread_mutex_t *mutex);
 
-#if 0
-       DECLARE_VARIABLE_STANDARD;
-       GET_REAL_FUNC(pthread_mutex_lock, LIBPTHREAD);
-
-       PRE_PROBEBLOCK_BEGIN();
-       // send WAIT_START log
-       INIT_LOG;
-       APPEND_LOG_BASIC(LC_SYNC);
-       APPEND_LOG_INPUT("%p", mutex);
-       //ret,PCAddr,errno,InternalCall
-       log.length += sprintf(log.data + log.length, "`,`,0`,0`,%d", blockresult);
-       APPEND_LOG_CALLER();
-       log.length += sprintf(log.data + log.length, "`,%p`,%d`,%d", mutex,
-                       SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_START);
-       APPEND_LOG_NULL_CALLSTACK();
-       printLog(&log, MSG_LOG);
-       PRE_PROBEBLOCK_END();
-#else
        BEFORE_ORIGINAL_START_END_SYNC(pthread_mutex_lock, LIBPTHREAD, mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_START, "%p", mutex);
-#endif
+
        ret = pthread_mutex_lockp(mutex);
 
-#if 0
-       // send WAIT_END log
-       newerrno = errno;
-       if(postBlockBegin(blockresult)) {
-               setProbePoint(&probeInfo);
-               INIT_LOG;
-               APPEND_LOG_BASIC(LC_SYNC);
-               APPEND_LOG_INPUT("%p", mutex);
-               APPEND_LOG_RESULT(VT_INT, ret);
-               APPEND_LOG_CALLER();
-
-               POST_PROBEBLOCK_MIDDLE_SYNCVAL(mutex, SYNC_PTHREAD_MUTEX, 
-                               SYNC_API_ACQUIRE_WAIT_END);
-               POST_PROBEBLOCK_CALLSTACK();
-               printLog(&log, MSG_LOG);
-               postBlockEnd();
-       }
-#else
        AFTER_ORIGINAL_START_END_SYNCVAL_RET(VT_INT, ret, mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_END, "%p", mutex);
-#endif
+
        return ret;
 }
 
@@ -127,50 +91,12 @@ int pthread_mutex_timedlock(pthread_mutex_t *mutex,
        static int (*pthread_mutex_timedlockp)(pthread_mutex_t *mutex,
                        const struct timespec *abs_timeout);
 
-#if 0
-       DECLARE_VARIABLE_STANDARD;
-       GET_REAL_FUNC(pthread_mutex_timedlock, LIBPTHREAD);
-
-       PRE_PROBEBLOCK_BEGIN();
-       // send WAIT_START log
-       INIT_LOG;
-       APPEND_LOG_BASIC(LC_SYNC);
-       APPEND_LOG_INPUT("%p,%p", mutex, abs_timeout);
-       //ret,PCAddr,errno,InternalCall
-       log.length += sprintf(log.data + log.length, "`,`,0`,0`,%d", blockresult);
-       APPEND_LOG_CALLER();
-       log.length += sprintf(log.data + log.length, "`,%p`,%d`,%d", mutex,
-                       SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_START);
-       APPEND_LOG_NULL_CALLSTACK();
-       printLog(&log, MSG_LOG);
-       PRE_PROBEBLOCK_END();
-#else
        BEFORE_ORIGINAL_START_END_SYNC(pthread_mutex_timedlock, LIBPTHREAD, mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_START, "%p,%p", mutex, abs_timeout);
 
-#endif
        ret = pthread_mutex_timedlockp(mutex, abs_timeout);
 
-#if 0
-       // send WAIT_END log
-       newerrno = errno;
-       if(postBlockBegin(blockresult)) {
-               setProbePoint(&probeInfo);
-               INIT_LOG;
-               APPEND_LOG_BASIC(LC_SYNC);
-               APPEND_LOG_INPUT("%p,%p", mutex, abs_timeout);
-               APPEND_LOG_RESULT(VT_INT, ret);
-               APPEND_LOG_CALLER();
-
-               POST_PROBEBLOCK_MIDDLE_SYNCVAL(mutex, SYNC_PTHREAD_MUTEX, 
-                               SYNC_API_ACQUIRE_WAIT_END);
-               POST_PROBEBLOCK_CALLSTACK();
-               printLog(&log, MSG_LOG);
-               postBlockEnd();
-       }
-#else
        AFTER_ORIGINAL_START_END_SYNCVAL_RET(VT_INT, ret, mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_END, "%p,%p", mutex, abs_timeout);
 
-#endif
        return ret;
 }
 
@@ -390,48 +316,12 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) {
        static int (*pthread_cond_waitp)(pthread_cond_t *cond,
                        pthread_mutex_t *mutex);
 
-#if 0
-       DECLARE_VARIABLE_STANDARD;
-       GET_REAL_FUNC(pthread_cond_wait, LIBPTHREAD);
-
-       PRE_PROBEBLOCK_BEGIN();
-       // send WAIT_START log
-       INIT_LOG;
-       APPEND_LOG_BASIC(LC_SYNC);
-       APPEND_LOG_INPUT("%p,%p", cond, mutex);
-       //ret,PCAddr,errno,InternalCall
-       log.length += sprintf(log.data + log.length, "`,`,0`,0`,%d", blockresult);
-       APPEND_LOG_CALLER();
-       log.length += sprintf(log.data + log.length, "`,%p`,%d`,%d", cond,
-                       SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_START);
-       APPEND_LOG_NULL_CALLSTACK();
-       printLog(&log, MSG_LOG);
-       PRE_PROBEBLOCK_END();
-#else
        BEFORE_ORIGINAL_START_END_SYNC(pthread_cond_wait, LIBPTHREAD, cond, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_START, "%p,%p", cond, mutex);
-#endif
+
        ret = pthread_cond_waitp(cond, mutex);
 
-#if 0
-       // send WAIT_END log
-       newerrno = errno;
-       if(postBlockBegin(blockresult)) {
-               setProbePoint(&probeInfo);
-               INIT_LOG;
-               APPEND_LOG_BASIC(LC_SYNC);
-               APPEND_LOG_INPUT("%p,%p", cond, mutex);
-               APPEND_LOG_RESULT(VT_INT, ret);
-               APPEND_LOG_CALLER();
-
-               POST_PROBEBLOCK_MIDDLE_SYNCVAL(cond, SYNC_PTHREAD_COND_VARIABLE, 
-                               SYNC_API_COND_WAIT_END);
-               POST_PROBEBLOCK_CALLSTACK();
-               printLog(&log, MSG_LOG);
-               postBlockEnd();
-       }
-#else
        AFTER_ORIGINAL_START_END_SYNCVAL_RET(VT_INT, ret, cond, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_END, "%p,%p", cond, mutex);
-#endif
+
        return ret;
 }
 
@@ -440,48 +330,12 @@ int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
        static int (*pthread_cond_timedwaitp)(pthread_cond_t *cond,
                                pthread_mutex_t *mutex, const struct timespec *abstime);
 
-#if 0
-       DECLARE_VARIABLE_STANDARD;
-       GET_REAL_FUNC(pthread_cond_timedwait, LIBPTHREAD);
-
-       PRE_PROBEBLOCK_BEGIN();
-       // send WAIT_START log
-       INIT_LOG;
-       APPEND_LOG_BASIC(LC_SYNC);
-       APPEND_LOG_INPUT("%p,%p,%p", cond, mutex, abstime);
-       //ret,PCAddr,errno,InternalCall
-       log.length += sprintf(log.data + log.length, "`,`,0`,0`,%d", blockresult);
-       APPEND_LOG_CALLER();
-       log.length += sprintf(log.data + log.length, "`,%p`,%d`,%d", cond,
-                       SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_START);
-       APPEND_LOG_NULL_CALLSTACK();
-       printLog(&log, MSG_LOG);
-       PRE_PROBEBLOCK_END();
-#else
        BEFORE_ORIGINAL_START_END_SYNC(pthread_cond_timedwait, LIBPTHREAD, cond, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_START, "%p,%p,%p", cond, mutex, abstime);
-#endif
+
        ret = pthread_cond_timedwaitp(cond, mutex, abstime);
 
-#if 0
-       // send WAIT_END log
-       newerrno = errno;
-       if(postBlockBegin(blockresult)) {
-               setProbePoint(&probeInfo);
-               INIT_LOG;
-               APPEND_LOG_BASIC(LC_SYNC);
-               APPEND_LOG_INPUT("%p,%p,%p", cond, mutex, abstime);
-               APPEND_LOG_RESULT(VT_INT, ret);
-               APPEND_LOG_CALLER();
-
-               POST_PROBEBLOCK_MIDDLE_SYNCVAL(cond, SYNC_PTHREAD_COND_VARIABLE, 
-                               SYNC_API_COND_WAIT_END);
-               POST_PROBEBLOCK_CALLSTACK();
-               printLog(&log, MSG_LOG);
-               postBlockEnd();
-       }
-#else
        AFTER_ORIGINAL_START_END_SYNCVAL_RET(VT_INT, ret, cond, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_END, "%p,%p,%p", cond, mutex, abstime);
-#endif
+
        return ret;
 }
 
index 16786a7..bc52e47 100644 (file)
@@ -34,6 +34,7 @@
 #include "probeinfo.h"
 #include "dahelper.h"
 #include "da_thread.h"
+#include "da_sync.h"
 
 typedef struct thread_routine_call_t {
        void *(*thread_routine)(void *);
@@ -159,46 +160,12 @@ int pthread_join(pthread_t thread, void **retval)
 {
        static int (*pthread_joinp)(pthread_t thread, void **retval);
 
-#if 0  
-       DECLARE_VARIABLE_STANDARD;
-       GET_REAL_FUNC(pthread_join, LIBPTHREAD);
-
-       PRE_PROBEBLOCK_BEGIN();
-       // send WAIT_START log
-       INIT_LOG;
-       APPEND_LOG_BASIC(LC_THREAD);
-       APPEND_LOG_INPUT("%lu,%p", thread, retval);
-       //ret,PCAddr,errno,InternalCall
-       log.length += sprintf(log.data + log.length, "`,`,0`,0`,%d", blockresult);
-       APPEND_LOG_CALLER();
-       log.length += sprintf(log.data + log.length, "`,%lu`,`,%d`,%d", thread, 
-                       THREAD_PTHREAD, THREAD_API_WAIT_START);
-       APPEND_LOG_NULL_CALLSTACK();
-       printLog(&log, MSG_LOG);
-       PRE_PROBEBLOCK_END();
-#else
        BEFORE_ORIGINAL_START_END_THREAD(pthread_join, LIBPTHREAD, thread, THREAD_API_WAIT_START, "%lu,%p", thread, retval);
-       ret = pthread_joinp(thread, retval);
-#endif
-#if 0
-       // send WAIT_END log
-       newerrno = errno;
-       if(postBlockBegin(blockresult)) {
-               setProbePoint(&probeInfo);
-               INIT_LOG;
-               APPEND_LOG_BASIC(LC_THREAD);
-               APPEND_LOG_INPUT("%lu,%p", thread, retval);
-               APPEND_LOG_RESULT(VT_INT, ret);
-               APPEND_LOG_CALLER();
 
-               POST_PROBEBLOCK_MIDDLE_THREAD(thread, THREAD_API_WAIT_END);
-               POST_PROBEBLOCK_CALLSTACK();
-               printLog(&log, MSG_LOG);
-               postBlockEnd();
-       }
-#else
+       ret = pthread_joinp(thread, retval);
+       
        AFTER_ORIGINAL_START_END_THREAD_RET(VT_INT, ret, thread, THREAD_API_WAIT_END, "%lu,%p", thread, retval);
-#endif 
+
        return ret;     
 }