current_obj is declared as a thread-local storage. This prevent to detect locking problem between multiple threads because each thread has it's own current_obj. liblockdep can only detect locking problem in a single thread. However, pthread_mutex_xxx, pthread_rwlock_xxx functions are mainly used for synchro nization of data between multiple threads. This patch changes current_obj to non thread-local storage. and current_obj.pid is getting from getpid system call.
Signed-off-by: Eunbong Song <eunb.s...@samsung.com> --- tools/lib/lockdep/common.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/lib/lockdep/common.c b/tools/lib/lockdep/common.c index 8ef602f..6b9a6eb 100644 --- a/tools/lib/lockdep/common.c +++ b/tools/lib/lockdep/common.c @@ -5,7 +5,7 @@ #include <unistd.h> #include <sys/syscall.h> -static __thread struct task_struct current_obj; +static struct task_struct current_obj; /* lockdep wants these */ bool debug_locks = true; @@ -26,7 +26,7 @@ struct task_struct *__curr(void) if (current_obj.pid == 0) { /* Makes lockdep output pretty */ prctl(PR_GET_NAME, current_obj.comm); - current_obj.pid = syscall(__NR_gettid); + current_obj.pid = syscall(__NR_getpid); } return ¤t_obj; -- 1.7.0.1 N떑꿩�r툤y鉉싕b쾊Ф푤v�^�)頻{.n�+돴쪐{콗喩zX㎍썳變}찠꼿쟺�&j:+v돣�쳭喩zZ+�+zf"톒쉱�~넮녬i鎬z�췿ⅱ�?솳鈺�&�)刪f뷌^j푹y쬶끷@A첺뛴 0띠h��뭝