Hi, On Wed, Dec 29, 2010 at 9:30 AM, CP YEH <ntdev74@gmail.com> 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