From mboxrd@z Thu Jan 1 00:00:00 1970 From: dhylands@gmail.com (Dave Hylands) Date: Wed, 29 Dec 2010 15:30:55 -0800 Subject: Can I get thread ID in user-mode program? In-Reply-To: References: Message-ID: To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org Hi, On Wed, Dec 29, 2010 at 9:30 AM, CP YEH wrote: > Hi, > > I would like to know if I can obtain thread id of calling thread. Let > me clarify what I mean by this. > > First, here is task_struct from linux kernel code. > > struct task_struct { > ? ? ? struct list_head tasks; > ? ? ? pid_t pid; > ? ? ? pid_t tgid; > ? ? ? struct task_struct *group_leader; ?/* threadgroup leader */ > ? ? ? struct list_head thread_group; > }; > > I understand that getpid returns tgid and gettid via __NR_gettid > returns tid but according to manpage, it seems to me that it is same > as what I get from getpid(). > > Man page of gettid: > ? ? ? gettid() returns the thread ID of the current process. ?This is > equal to the > ? ? ? process ID (as returned by getpid(2)), unless ?the ?process ?is > ?part ?of ?a > ? ? ? thread ?group > > However, I would like to obtain pid of task_struct. Is there any way I > can get that information? >>From my understanding, this sort of depends on which threading model is being employed. For standard distros (like ubuntu), I believe that getpid returns the tgid, and gettid (aka syscall( 224 )) returns pid of the task struct (which is really a thread id). Dave Hylands