appel gettid witin de la glibc
Je travaille dans la glibc, et j'ai besoin de pour obtenir l'id du thread courant. Pour cela, j'utilise
syscall(SYS_gettid);
Question est, je suis forcé d'inclure bits/syscall.h
au lieu de le cas idéal, j'.e sys/syscall.h
.
sys/syscall.h
appelle en interne bits/syscall.h
mais qui est enveloppé avec #ifndef _LIBC
macro. j'.e
#ifndef _LIBC
/* The Linux kernel header file defines macros `__NR_<name>', but some
programs expect the traditional form `SYS_<name>'. So in building libc
we scan the kernel's list and produce <bits/syscall.h> with macros for
all the `SYS_' names. */
# include <bits/syscall.h>
#endif
aussi bits/syscall.h
états qui
"Ne jamais utiliser bits/syscall.h directement; include sys/syscall.h à la place."
Depuis _LIBC
sera défini dans mon cas, comme je suis en train d'écrire directement le code dans malloc.c
,
s'il vous plaît suggérer mon comment puis-je remédier à cela.
Grâce,
Kapil
- Pourquoi ne pas simplement utiliser
__NR_gettid
? - Elle sera disponible dans la glibc, 2.30: sourceware.org/bugzilla/show_bug.cgi?id=6399
Vous devez vous connecter pour publier un commentaire.
gettid() est un appel système. Pour que je sache il n'y a pas de glibc wrapper pour gettid. Vous avez besoin d'invoquer gettid() à l'aide de syscall(). Le code suivant fonctionne pour moi.
syscall()
ougettid()
. La question était de savoir comment le faire à l'intérieur de la bibliothèque glibc. Ne pas mentionner que votre exemple de code n'est pas légal C98 et manquait nécessaire comprend.