4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
8 * Woojin Jung <woojin2.jung@samsung.com>
9 * Jaewon Lim <jaewon81.lim@samsung.com>
10 * Juyoung Kim <j0.kim@samsung.com>
12 * This library is free software; you can redistribute it and/or modify it under
13 * the terms of the GNU Lesser General Public License as published by the
14 * Free Software Foundation; either version 2.1 of the License, or (at your option)
17 * This library is distributed in the hope that it will be useful, but WITHOUT ANY
18 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20 * License for more details.
22 * You should have received a copy of the GNU Lesser General Public License
23 * along with this library; if not, write to the Free Software Foundation, Inc., 51
24 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
40 int real_pthread_mutex_lock(pthread_mutex_t *mutex);
41 int real_pthread_mutex_unlock(pthread_mutex_t *mutex);
43 #define BEFORE_ORIGINAL_SYNC(FUNCNAME, LIBNAME) \
44 DECLARE_VARIABLE_STANDARD; log_t log; \
45 GET_REAL_FUNC(FUNCNAME, LIBNAME); \
48 #define POST_PROBEBLOCK_MIDDLE_SYNCVAL(SYNCVAL, SYNCTYPE, APITYPE) \
49 log.length += sprintf(log.data + log.length, "`,%p`,%d`,%d", \
50 SYNCVAL, SYNCTYPE, APITYPE)
52 #define POST_PROBEBLOCK_MIDDLE_NOSYNCVAL(SYNCTYPE, APITYPE) \
53 log.length += sprintf(log.data + log.length, "`,0`,%d`,%d", \
56 #define AFTER_ORIGINAL_SYNCVAL_RET(RTYPE, RVAL, SYNCVAL, SYNCTYPE, APITYPE, INPUTFORMAT, ...) \
57 POST_PROBEBLOCK_BEGIN(LC_SYNC, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
58 POST_PROBEBLOCK_MIDDLE_SYNCVAL(SYNCVAL, SYNCTYPE, APITYPE); \
59 POST_PROBEBLOCK_CALLSTACK(); \
62 #define AFTER_ORIGINAL_NOSYNCVAL_RET(RTYPE, RVAL, SYNCTYPE, APITYPE, INPUTFORMAT, ...) \
63 POST_PROBEBLOCK_BEGIN(LC_SYNC, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
64 POST_PROBEBLOCK_MIDDLE_NOSYNCVAL(SYNCTYPE, APITYPE); \
65 POST_PROBEBLOCK_CALLSTACK(); \
68 #define AFTER_PACK_ORIGINAL_SYNC(RVAL, SYNCVAL, SYNCTYPE, APITYPE, INPUTFORMAT, ...) \
69 POST_PACK_PROBEBLOCK_BEGIN(); \
70 PREPARE_LOCAL_BUF(); \
71 PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, INPUTFORMAT, __VA_ARGS__); \
72 PACK_COMMON_END(RVAL, errno, blockresult); \
73 PACK_SYNC(SYNCVAL, SYNCTYPE, APITYPE); \
75 POST_PACK_PROBEBLOCK_END()
81 #endif // __DA_SYNC_H__