Tôi đang làm việc trong glibc và tôi cần lấy id của chuỗi hiện tại. Đối với điều này tôi sử dụng syscall(SYS_gettid);
Vấn đề là, tôi buộc phải bao gồm bits/syscall.h
thay vì trường hợp lý tưởng, ví dụ: sys/syscall.h
.gọi gettid witin glibc
sys/syscall.h
gọi nội bộ bits/syscall.h
nhưng được gói bằng macro #ifndef _LIBC
. tức là
#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
cũng bits/syscall.h
khẳng định rằng "Không bao giờ sử dụng bit/syscall.h trực tiếp;. bao gồm sys/syscall.h thay vì"
Vì _LIBC
sẽ được xác định trong trường hợp của tôi khi tôi đang viết mã trực tiếp tại malloc.c
, vui lòng đề xuất cách tôi có thể khắc phục điều này.
Xin cảm ơn, Kapil
Tại sao bạn không sử dụng '__NR_gettid'? –