All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave McCracken <dmccr@us.ibm.com>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH] Provide system call to get task id
Date: Mon, 08 Oct 2001 10:46:15 -0500	[thread overview]
Message-ID: <71000000.1002555975@baldur> (raw)


In the current thread group implementation getpid() returns the
thread group leader.  There is currently no way for a task in a
thread group to find its true pid.

This patch provides a new system call gettid() (get task id), which
returns the true pid of the task.  This is needed in some multi-threaded
apps and libraries.

Dave McCracken

======================================================================
Dave McCracken          IBM Linux Base Kernel Team      1-512-838-3059
dmccr@us.ibm.com                                        T/L   678-3059

==========

--- linux-2.4.10/arch/i386/kernel/entry.S	Sat Sep  8 14:02:32 2001
+++ linux-2.4.10-gettid/arch/i386/kernel/entry.S	Mon Oct  8 09:57:39 2001
@@ -619,6 +619,7 @@
 	.long SYMBOL_NAME(sys_madvise)
 	.long SYMBOL_NAME(sys_getdents64)	/* 220 */
 	.long SYMBOL_NAME(sys_fcntl64)
+	.long SYMBOL_NAME(sys_gettid)
 	.long SYMBOL_NAME(sys_ni_syscall)	/* reserved for TUX */

 	.rept NR_syscalls-(.-sys_call_table)/4
--- linux-2.4.10/arch/alpha/kernel/entry.S	Wed Jul 25 19:11:05 2001
+++ linux-2.4.10-gettid/arch/alpha/kernel/entry.S	Mon Oct  8 09:58:43 2001
@@ -10,7 +10,7 @@

 #define SIGCHLD 20

-#define NR_SYSCALLS 378
+#define NR_SYSCALLS 379

 /*
  * These offsets must match with alpha_mv in <asm/machvec.h>.
@@ -1145,3 +1145,4 @@
 	.quad sys_mincore			/* 375 */
 	.quad sys_pciconfig_iobase
 	.quad sys_getdents64
+	.quad sys_gettid
--- linux-2.4.10/arch/sparc/kernel/systbls.S	Sun Aug 13 14:01:54 2000
+++ linux-2.4.10-gettid/arch/sparc/kernel/systbls.S	Mon Oct  8 09:58:43 2001
@@ -165,5 +165,6 @@
 	.long sunos_nosys, sunos_nosys
 /*250*/	.long sunos_nosys, sunos_nosys, sunos_nosys
 	.long sunos_nosys, sunos_nosys, sunos_nosys
+	.long sys_gettid

 #endif
--- linux-2.4.10/arch/mips/kernel/syscalls.h	Mon Jul  2 15:56:40 2001
+++ linux-2.4.10-gettid/arch/mips/kernel/syscalls.h	Mon Oct  8 09:58:43 2001
@@ -235,3 +235,4 @@
 SYS(sys_madvise, 3)
 SYS(sys_getdents64, 3)
 SYS(sys_fcntl64, 3)				/* 4220 */
+SYS(sys_gettid, 0)
--- linux-2.4.10/arch/ppc/kernel/misc.S	Tue Aug 28 08:58:33 2001
+++ linux-2.4.10-gettid/arch/ppc/kernel/misc.S	Mon Oct  8 09:58:43 2001
@@ -1120,6 +1120,7 @@
 	.long sys_fcntl64		/* 204 */
 	.long sys_madvise		/* 205 */
 	.long sys_mincore		/* 206 */
+	.long sys_gettid		/* 207 */
 	.rept NR_syscalls-(.-sys_call_table)/4
 		.long sys_ni_syscall
 	.endr
--- linux-2.4.10/arch/m68k/kernel/entry.S	Tue Feb 13 16:13:43 2001
+++ linux-2.4.10-gettid/arch/m68k/kernel/entry.S	Mon Oct  8 09:58:43 2001
@@ -646,6 +646,7 @@
 	.long SYMBOL_NAME(sys_ni_syscall)
 	.long SYMBOL_NAME(sys_ni_syscall)
 	.long SYMBOL_NAME(sys_getdents64)	/* 220 */
+	.long SYMBOL_NAME(sys_gettid)

 	.rept NR_syscalls-(.-SYMBOL_NAME(sys_call_table))/4
 		.long SYMBOL_NAME(sys_ni_syscall)
--- linux-2.4.10/arch/sparc64/kernel/systbls.S	Wed Aug 23 11:30:13 2000
+++ linux-2.4.10-gettid/arch/sparc64/kernel/systbls.S	Mon Oct  8 09:58:43 
2001
@@ -225,5 +225,6 @@
 	.word sunos_nosys, sunos_nosys
 /*250*/	.word sunos_nosys, sunos_nosys, sunos_nosys
 	.word sunos_nosys, sunos_nosys, sys_aplib
+	.word sys_gettid

 #endif
--- linux-2.4.10/arch/arm/kernel/calls.S	Wed Jun 27 16:12:04 2001
+++ linux-2.4.10-gettid/arch/arm/kernel/calls.S	Mon Oct  8 09:58:43 2001
@@ -236,6 +236,7 @@
 		.long	SYMBOL_NAME(sys_mincore)
 /* 220 */	.long	SYMBOL_NAME(sys_madvise)
 		.long	SYMBOL_NAME(sys_fcntl64)
+		.long	SYMBOL_NAME(sys_gettid)
 __syscall_end:

 		.rept	NR_syscalls - (__syscall_end - __syscall_start) / 4
--- linux-2.4.10/arch/sh/kernel/entry.S	Sat Sep  8 14:29:09 2001
+++ linux-2.4.10-gettid/arch/sh/kernel/entry.S	Mon Oct  8 09:58:43 2001
@@ -1298,6 +1298,7 @@
 	.long SYMBOL_NAME(sys_madvise)
 	.long SYMBOL_NAME(sys_getdents64)	/* 220 */
 	.long SYMBOL_NAME(sys_fcntl64)
+	.long SYMBOL_NAME(sys_gettid)

 	/*
 	 * NOTE!! This doesn't have to be exact - we just have
@@ -1305,7 +1306,7 @@
 	 * entries. Don't panic if you notice that this hasn't
 	 * been shrunk every time we add a new system call.
 	 */
-	.rept NR_syscalls-221
+	.rept NR_syscalls-222
 		.long SYMBOL_NAME(sys_ni_syscall)
 	.endr

--- linux-2.4.10/arch/mips64/kernel/scall_64.S	Sun Sep  9 12:43:01 2001
+++ linux-2.4.10-gettid/arch/mips64/kernel/scall_64.S	Mon Oct  8 09:58:43 
2001
@@ -347,3 +347,4 @@
 	PTR	sys_mincore
 	PTR	sys_madvise
 	PTR	sys_getdents64
+	PTR	sys_gettid
--- linux-2.4.10/arch/mips64/kernel/scall_o32.S	Sun Sep  9 12:43:01 2001
+++ linux-2.4.10-gettid/arch/mips64/kernel/scall_o32.S	Mon Oct  8 09:58:43 
2001
@@ -454,6 +454,7 @@
 	sys	sys_madvise	3
 	sys	sys_getdents64	3
 	sys	sys32_fcntl64	3			/* 4220 */
+	sys	sys_gettid	0
 	.endm

 	.macro	sys function, nargs
--- linux-2.4.10/arch/s390/kernel/entry.S	Sun Aug 12 12:38:47 2001
+++ linux-2.4.10-gettid/arch/s390/kernel/entry.S	Mon Oct  8 09:58:43 2001
@@ -559,7 +559,8 @@
         .long  sys_madvise
 	.long  sys_getdents64		 /* 220 */
         .long  sys_fcntl64
-	.rept  255-221
+        .long  sys_gettid
+	.rept  255-222
 	.long  sys_ni_syscall
 	.endr

--- linux-2.4.10/arch/parisc/kernel/syscall.S	Tue Dec  5 14:29:39 2000
+++ linux-2.4.10-gettid/arch/parisc/kernel/syscall.S	Mon Oct  8 09:58:43 
2001
@@ -552,6 +552,7 @@
 	ENTRY_UHOH(shmctl)		/* 195 */
 	ENTRY_SAME(ni_syscall)		/* streams1 */
 	ENTRY_SAME(ni_syscall)		/* streams2 */
+	ENTRY_SAME(gettid)

 .end

--- linux-2.4.10/arch/cris/kernel/entry.S	Thu Jul 26 17:10:06 2001
+++ linux-2.4.10-gettid/arch/cris/kernel/entry.S	Mon Oct  8 09:58:43 2001
@@ -966,6 +966,7 @@
 	.long SYMBOL_NAME(sys_madvise)
 	.long SYMBOL_NAME(sys_getdents64)       /* 220 */
 	.long SYMBOL_NAME(sys_fcntl64)
+	.long SYMBOL_NAME(sys_gettid)
 	.long SYMBOL_NAME(sys_ni_syscall)	/* reserved for TUX */

         /*
@@ -975,7 +976,7 @@
          * been shrunk every time we add a new system call.
          */

-	.rept NR_syscalls-222
+	.rept NR_syscalls-223
 		.long SYMBOL_NAME(sys_ni_syscall)
 	.endr
 	
--- linux-2.4.10/arch/s390x/kernel/entry.S	Sun Aug 12 12:38:48 2001
+++ linux-2.4.10-gettid/arch/s390x/kernel/entry.S	Mon Oct  8 09:58:43 2001
@@ -594,7 +594,8 @@
         .long  SYSCALL(sys_madvise,sys32_madvise_wrapper)
 	.long  SYSCALL(sys_getdents64,sys32_getdents64_wrapper)/* 220 */
 	.long  SYSCALL(sys_ni_syscall,sys32_fcntl64_wrapper)
-        .rept  255-221
+	.long  SYSCALL(sys_gettid,sys_gettid)
+        .rept  255-222
 	.long  SYSCALL(sys_ni_syscall,sys_ni_syscall)
 	.endr

--- linux-2.4.10/include/asm-i386/unistd.h	Fri Aug 11 16:39:23 2000
+++ linux-2.4.10-gettid/include/asm-i386/unistd.h	Mon Oct  8 09:58:43 2001
@@ -227,6 +227,7 @@
 #define __NR_madvise1		219	/* delete when C lib stub is removed */
 #define __NR_getdents64		220
 #define __NR_fcntl64		221
+#define __NR_gettid		222

 /* user-visible error numbers are in the range -1 - -124: see 
<asm-i386/errno.h> */

--- linux-2.4.10/include/asm-mips/unistd.h	Mon Jul  2 15:56:40 2001
+++ linux-2.4.10-gettid/include/asm-mips/unistd.h	Mon Oct  8 09:58:43 2001
@@ -233,11 +233,12 @@
 #define __NR_madvise			(__NR_Linux + 218)
 #define __NR_getdents64			(__NR_Linux + 219)
 #define __NR_fcntl64			(__NR_Linux + 220)
+#define __NR_gettid			(__NR_Linux + 221)

 /*
  * Offset of the last Linux flavoured syscall
  */
-#define __NR_Linux_syscalls		220
+#define __NR_Linux_syscalls		221

 #ifndef _LANGUAGE_ASSEMBLY

--- linux-2.4.10/include/asm-alpha/unistd.h	Wed Jan 24 17:16:23 2001
+++ linux-2.4.10-gettid/include/asm-alpha/unistd.h	Mon Oct  8 09:58:43 2001
@@ -315,6 +315,7 @@
 #define __NR_mincore			375
 #define __NR_pciconfig_iobase		376
 #define __NR_getdents64			377
+#define __NR_gettid			378

 #if defined(__GNUC__)

--- linux-2.4.10/include/asm-m68k/unistd.h	Mon Nov 27 19:11:26 2000
+++ linux-2.4.10-gettid/include/asm-m68k/unistd.h	Mon Oct  8 09:58:43 2001
@@ -222,6 +222,7 @@
 #define __NR_setfsuid32		215
 #define __NR_setfsgid32		216
 #define __NR_getdents64		220
+#define __NR_gettid		221

 /* user-visible error numbers are in the range -1 - -122: see
    <asm-m68k/errno.h> */
--- linux-2.4.10/include/asm-sparc/unistd.h	Mon Aug 14 15:09:07 2000
+++ linux-2.4.10-gettid/include/asm-sparc/unistd.h	Mon Oct  8 09:58:43 2001
@@ -271,6 +271,7 @@
 #define __NR_fdatasync          253
 #define __NR_nfsservctl         254
 #define __NR_aplib              255
+#define __NR_gettid             256

 #define _syscall0(type,name) \
 type name(void) \
--- linux-2.4.10/include/asm-ppc/unistd.h	Mon May 21 17:02:06 2001
+++ linux-2.4.10-gettid/include/asm-ppc/unistd.h	Mon Oct  8 09:58:43 2001
@@ -213,6 +213,7 @@
 #define __NR_fcntl64		204
 #define __NR_madvise		205
 #define __NR_mincore		206
+#define __NR_gettid		207

 #define __NR(n)	#n

--- linux-2.4.10/include/asm-sparc64/unistd.h	Mon Aug 14 15:09:08 2000
+++ linux-2.4.10-gettid/include/asm-sparc64/unistd.h	Mon Oct  8 09:58:43 
2001
@@ -273,6 +273,7 @@
 #define __NR_fdatasync          253
 #define __NR_nfsservctl         254
 #define __NR_aplib              255
+#define __NR_gettid             256

 #define _syscall0(type,name) \
 type name(void) \
--- linux-2.4.10/include/asm-arm/unistd.h	Sun Aug 12 13:14:00 2001
+++ linux-2.4.10-gettid/include/asm-arm/unistd.h	Mon Oct  8 09:58:43 2001
@@ -240,6 +240,7 @@
 #define __NR_mincore			(__NR_SYSCALL_BASE+219)
 #define __NR_madvise			(__NR_SYSCALL_BASE+220)
 #define __NR_fcntl64			(__NR_SYSCALL_BASE+221)
+#define __NR_gettid			(__NR_SYSCALL_BASE+222)

 /*
  * The following SWIs are ARM private.
--- linux-2.4.10/include/asm-sh/unistd.h	Mon Oct  2 13:57:34 2000
+++ linux-2.4.10-gettid/include/asm-sh/unistd.h	Mon Oct  8 09:58:43 2001
@@ -231,6 +231,7 @@
 #define __NR_madvise		219
 #define __NR_getdents64		220
 #define __NR_fcntl64		221
+#define __NR_gettid		222

 /* user-visible error numbers are in the range -1 - -125: see 
<asm-sh/errno.h> */

--- linux-2.4.10/include/asm-ia64/unistd.h	Tue Jul 31 12:30:09 2001
+++ linux-2.4.10-gettid/include/asm-ia64/unistd.h	Mon Oct  8 09:58:43 2001
@@ -205,6 +205,7 @@
 #define __NR_clone2			1213
 #define __NR_getdents64			1214
 #define __NR_getunwind			1215
+#define __NR_gettid			1216

 #if !defined(__ASSEMBLY__) && !defined(ASSEMBLER)

--- linux-2.4.10/include/asm-mips64/unistd.h	Tue Nov 28 23:42:04 2000
+++ linux-2.4.10-gettid/include/asm-mips64/unistd.h	Mon Oct  8 09:58:43 2001
@@ -461,11 +461,12 @@
 #define __NR_mincore			(__NR_Linux + 211)
 #define __NR_madvise			(__NR_Linux + 212)
 #define __NR_getdents64			(__NR_Linux + 213)
+#define __NR_gettid			(__NR_Linux + 214)

 /*
  * Offset of the last Linux flavoured syscall
  */
-#define __NR_Linux_syscalls		213
+#define __NR_Linux_syscalls		214

 #ifndef _LANGUAGE_ASSEMBLY

--- linux-2.4.10/include/asm-s390/unistd.h	Tue Feb 13 16:13:44 2001
+++ linux-2.4.10-gettid/include/asm-s390/unistd.h	Mon Oct  8 09:58:43 2001
@@ -209,6 +209,7 @@
 #define __NR_mincore            218
 #define __NR_madvise            219
 #define __NR_getdents64		220
+#define __NR_gettid		221


 /* user-visible error numbers are in the range -1 - -122: see 
<asm-s390/errno.h> */
--- linux-2.4.10/include/asm-parisc/unistd.h	Tue Dec  5 14:29:39 2000
+++ linux-2.4.10-gettid/include/asm-parisc/unistd.h	Mon Oct  8 09:58:43 2001
@@ -689,8 +689,9 @@

 #define __NR_getpmsg            (__NR_Linux + 196)      /* some people 
actually want streams */
 #define __NR_putpmsg            (__NR_Linux + 197)      /* some people 
actually want streams */
+#define __NR_gettid             (__NR_Linux + 198)

-#define __NR_Linux_syscalls     197
+#define __NR_Linux_syscalls     198

 #define HPUX_GATEWAY_ADDR       0xC0000004
 #define LINUX_GATEWAY_ADDR      0x100
--- linux-2.4.10/include/asm-cris/unistd.h	Tue May  1 18:05:00 2001
+++ linux-2.4.10-gettid/include/asm-cris/unistd.h	Mon Oct  8 09:58:43 2001
@@ -227,6 +227,7 @@
 #define __NR_madvise		219
 #define __NR_getdents64		220
 #define __NR_fcntl64		221
+#define __NR_gettid		222

 /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
 #define _syscall0(type,name) \
--- linux-2.4.10/include/asm-s390x/unistd.h	Wed Jul 25 16:12:03 2001
+++ linux-2.4.10-gettid/include/asm-s390x/unistd.h	Mon Oct  8 09:58:43 2001
@@ -179,6 +179,7 @@
 #define __NR_mincore            218
 #define __NR_madvise            219
 #define __NR_getdents64         220
+#define __NR_gettid             222


 /* user-visible error numbers are in the range -1 - -122: see 
<asm-s390/errno.h> */
--- linux-2.4.10/kernel/timer.c	Tue Jun 12 18:40:11 2001
+++ linux-2.4.10-gettid/kernel/timer.c	Mon Oct  8 09:58:43 2001
@@ -794,6 +794,11 @@

 #endif

+asmlinkage long sys_gettid(void)
+{
+	return	current->pid;
+}
+
 asmlinkage long sys_nanosleep(struct timespec *rqtp, struct timespec *rmtp)
 {
 	struct timespec t;


             reply	other threads:[~2001-10-08 15:46 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-08 15:46 Dave McCracken [this message]
2001-10-08 15:52 ` [PATCH] Provide system call to get task id Christoph Hellwig
2001-10-08 16:07   ` Alan Cox
2001-10-08 16:05 ` Alan Cox
2001-10-08 17:44   ` Linus Torvalds
2001-10-08 17:52     ` Alan Cox
2001-10-08 18:17       ` Linus Torvalds
2001-10-08 22:15         ` Miquel van Smoorenburg
2001-10-08 21:53   ` David Woodhouse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=71000000.1002555975@baldur \
    --to=dmccr@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.