Johannes Stezenbach wrote: > Klaus Schmidinger wrote: > >>Johannes Stezenbach wrote: >> >>>... >>>pthread_self() has to be used within programs using to identify >>>the threads. gettid() is more a debugging aid as the return value >>>of pthread_self() has no meaning outside the context of the running >>>program. (Funny that glibc doesn't have a syscall wrapper for >>>gettid(); dietlibc has.) >> >>Thanks, this appears to work just fine. >> >>I assume it's ok to use the SYS_gettid macro, as in >> >> >> >>#include <sys/syscall.h> >> >>static inline pid_t gettid(void) >>{ >> return syscall(SYS_gettid); >>} >> >> >> >>instead of the hardcoded 224. > > > The man page actually suggests: > http://homepages.cwi.nl/~aeb/linux/man2html/man2/gettid.2.html > > #include <sys/types.h> > #include <linux/unistd.h> > > _syscall0(pid_t,gettid) > > (I just made a mistake and included <unistd.h> instead of <linux/unistd.h> > so it didn't work when I initially tested it.) > > Johannes Ok, I'll make it that way then. Do you think we need a fallback solution, just in case the syscall fails? Paavo Hartikainen's posting (12/05/05 03:57) would indicate that this can happen. Maybe we should use pthread_self() in case gettid() returns -1, and use pthread_t to store such values, because it's large enough to hold pid_t as well as pthread_t. Or should we make this system dependent (with #ifdef)? So that non-Linux systems can provide a different solution. Klaus