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) {
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) {
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) {
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) {
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) {
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) {
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();
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
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;
}
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);
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);
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);
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);
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)
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;
}
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;
}
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;
}
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;
}
#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)
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;
}
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);
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)
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;
}
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);
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;
}
AFTER_ORIGINAL_NOFD(0, FD_API_OTHER, "%s, %p", path, times);
return ret;
}
-
-
+#endif
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 );
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
// *******************************************************************
{
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;
}
{
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;
}
{
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;
}
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;
}
{
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;
}
{
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;
}
{
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;
}
{
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;
}
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;
}
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;
}
{
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;
{
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;
{
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;
{
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;
{
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;
}
{
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;
}
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;
}
{
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);
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
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; \
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;
}
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;
}
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;
}
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;
}
#include "probeinfo.h"
#include "dahelper.h"
#include "da_thread.h"
+#include "da_sync.h"
typedef struct thread_routine_call_t {
void *(*thread_routine)(void *);
{
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;
}