[PATCH] tools/liblockdep: change current_obj from thread-local storage to non thread-local storage

From: Eunbong Song
Date: Thu Apr 23 2015 - 02:55:31 EST



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.song@xxxxxxxxxxx>
---
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 &current_obj;
--
1.7.0.1
N떑꿩ìr¸›y鉉싕b²XФ푤vØ^–)頻{.nÇ+돴¥Š{±묎çzX㎍썳變}©옽Æ zÚ&j:+v돣¾«묎çzZ+€Ê+zf"·hš닱~넮녬iÿ鎬z¹®wⅱ¸?솳鈺Ú&¢)刪f뷌^j푹y§m끷@A«a뛴ÿ 0띠h®å’i