The Linux kernel uses 'pid_t' instead of 'long' for the return type. As glibc provides no wrapper, use the same types the kernel uses. $ sed -n 34,36p man-pages/man2/set_tid_address.2 .PP .IR Note : There is no glibc wrapper for this system call; see NOTES. $ grep -rn 'SYSCALL_DEFINE.*set_tid_address' linux/ linux/kernel/fork.c:1632: SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr) $ sed -n 1632,1638p linux/kernel/fork.c SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr) { current->clear_child_tid = tidptr; return task_pid_vnr(current); } $ grep -rn 'task_pid_vnr(struct' linux/ linux/include/linux/sched.h:1374: static inline pid_t task_pid_vnr(struct task_struct *tsk) Signed-off-by: Alejandro Colomar <alx.manpages@xxxxxxxxx> --- man2/set_tid_address.2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man2/set_tid_address.2 b/man2/set_tid_address.2 index 380efcdd8..b18b8efef 100644 --- a/man2/set_tid_address.2 +++ b/man2/set_tid_address.2 @@ -29,7 +29,7 @@ set_tid_address \- set pointer to thread ID .nf .B #include <linux/unistd.h> .PP -.BI "long set_tid_address(int *" tidptr ); +.BI "pid_t set_tid_address(int *" tidptr ); .fi .PP .IR Note : -- 2.29.2