All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave McCracken <dmccr@us.ibm.com>
To: Marcelo Tosatti <marcelo@conectiva.com.br>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH 2.4.19-pre1] Signal changes for thread groups
Date: Thu, 28 Feb 2002 13:37:51 -0600	[thread overview]
Message-ID: <66720000.1014925071@baldur> (raw)

[-- Attachment #1: Type: text/plain, Size: 803 bytes --]


Here's a 2.4 version of the signal changes that were accepted into the 2.5
tree for thread groups.  It redirects signals to any task in a thread group
to the thread group leader.  It then introduces a tkill() system call for
signals directed at a specific task.

This patch does not introduce any behavior changes outside thread groups,
and as far as I know no one is using thread groups in 2.4.  It has been in
2.5 for awhile with no problems surfacing.

I'm sending it as a plain text attachment rather than try to fight with my
mailer again.  I hope that's acceptable.

Dave McCracken

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

[-- Attachment #2: ngpt-2.4.19-pre1.diff --]
[-- Type: text/plain, Size: 33632 bytes --]

--- linux-2.4.19-pre1/./kernel/fork.c	Mon Feb 25 13:38:13 2002
+++ linux-2.4.19-pre1-ngpt/./kernel/fork.c	Thu Feb 28 13:25:25 2002
@@ -710,10 +710,10 @@
 	/* Need tasklist lock for parent etc handling! */
 	write_lock_irq(&tasklist_lock);
 
-	/* CLONE_PARENT and CLONE_THREAD re-use the old parent */
+	/* CLONE_PARENT re-uses the old parent */
 	p->p_opptr = current->p_opptr;
 	p->p_pptr = current->p_pptr;
-	if (!(clone_flags & (CLONE_PARENT | CLONE_THREAD))) {
+	if (!(clone_flags & CLONE_PARENT)) {
 		p->p_opptr = current;
 		if (!(p->ptrace & PT_PTRACED))
 			p->p_pptr = current;
--- linux-2.4.19-pre1/./kernel/signal.c	Wed Nov 21 18:26:27 2001
+++ linux-2.4.19-pre1-ngpt/./kernel/signal.c	Thu Feb 28 13:25:25 2002
@@ -142,6 +142,35 @@
 	}
 }
 
+/*
+ * sig_exit - cause the current task to exit due to a signal.
+ */
+
+void
+sig_exit(int sig, int exit_code, struct siginfo *info)
+{
+	struct task_struct *t;
+
+	sigaddset(&current->pending.signal, sig);
+	recalc_sigpending(current);
+	current->flags |= PF_SIGNALED;
+
+	/* Propagate the signal to all the tasks in
+	 *  our thread group
+	 */
+	if (info && (unsigned long)info != 1
+	    && info->si_code != SI_TKILL) {
+		read_lock(&tasklist_lock);
+		for_each_thread(t) {
+			force_sig_info(sig, info, t);
+		}
+		read_unlock(&tasklist_lock);
+	}
+
+	do_exit(exit_code);
+	/* NOTREACHED */
+}
+
 /* Notify the system that a driver wants to block all signals for this
  * process, and wants to be notified if any signals at all were to be
  * sent/acted upon.  If the notifier routine returns non-zero, then the
@@ -592,7 +621,7 @@
 		retval = -ESRCH;
 		read_lock(&tasklist_lock);
 		for_each_task(p) {
-			if (p->pgrp == pgrp) {
+			if (p->pgrp == pgrp && thread_group_leader(p)) {
 				int err = send_sig_info(sig, info, p);
 				if (retval)
 					retval = err;
@@ -639,8 +668,15 @@
 	read_lock(&tasklist_lock);
 	p = find_task_by_pid(pid);
 	error = -ESRCH;
-	if (p)
+	if (p) {
+		if (!thread_group_leader(p)) {
+                       struct task_struct *tg;
+                       tg = find_task_by_pid(p->tgid);
+                       if (tg)
+                               p = tg;
+                }
 		error = send_sig_info(sig, info, p);
+	}
 	read_unlock(&tasklist_lock);
 	return error;
 }
@@ -663,7 +699,7 @@
 
 		read_lock(&tasklist_lock);
 		for_each_task(p) {
-			if (p->pid > 1 && p != current) {
+			if (p->pid > 1 && p != current && thread_group_leader(p)) {
 				int err = send_sig_info(sig, info, p);
 				++count;
 				if (err != -EPERM)
@@ -986,6 +1022,36 @@
 	info.si_uid = current->uid;
 
 	return kill_something_info(sig, &info, pid);
+}
+
+/*
+ *  Kill only one task, even if it's a CLONE_THREAD task.
+ */
+asmlinkage long
+sys_tkill(int pid, int sig)
+{
+       struct siginfo info;
+       int error;
+       struct task_struct *p;
+
+       /* This is only valid for single tasks */
+       if (pid <= 0)
+           return -EINVAL;
+
+       info.si_signo = sig;
+       info.si_errno = 0;
+       info.si_code = SI_TKILL;
+       info.si_pid = current->pid;
+       info.si_uid = current->uid;
+
+       read_lock(&tasklist_lock);
+       p = find_task_by_pid(pid);
+       error = -ESRCH;
+       if (p) {
+               error = send_sig_info(sig, &info, p);
+       }
+       read_unlock(&tasklist_lock);
+       return error;
 }
 
 asmlinkage long
--- linux-2.4.19-pre1/./include/linux/sched.h	Fri Dec 21 11:42:03 2001
+++ linux-2.4.19-pre1-ngpt/./include/linux/sched.h	Thu Feb 28 13:25:25 2002
@@ -610,6 +610,7 @@
 extern void proc_caches_init(void);
 extern void flush_signals(struct task_struct *);
 extern void flush_signal_handlers(struct task_struct *);
+extern void sig_exit(int, int, struct siginfo *);
 extern int dequeue_signal(sigset_t *, siginfo_t *);
 extern void block_all_signals(int (*notifier)(void *priv), void *priv,
 			      sigset_t *mask);
@@ -870,8 +871,13 @@
 #define for_each_task(p) \
 	for (p = &init_task ; (p = p->next_task) != &init_task ; )
 
+#define for_each_thread(task) \
+	for (task = next_thread(current) ; task != current ; task = next_thread(task))
+
 #define next_thread(p) \
 	list_entry((p)->thread_group.next, struct task_struct, thread_group)
+
+#define thread_group_leader(p)	(p->pid == p->tgid)
 
 static inline void del_from_runqueue(struct task_struct * p)
 {
--- linux-2.4.19-pre1/./include/asm-i386/unistd.h	Mon Feb 25 13:38:12 2002
+++ linux-2.4.19-pre1-ngpt/./include/asm-i386/unistd.h	Thu Feb 28 13:25:25 2002
@@ -243,6 +243,8 @@
 #define __NR_lremovexattr	236
 #define __NR_fremovexattr	237
 
+#define __NR_tkill		238
+
 /* user-visible error numbers are in the range -1 - -124: see <asm-i386/errno.h> */
 
 #define __syscall_return(type, res) \
--- linux-2.4.19-pre1/./include/asm-i386/siginfo.h	Thu Nov 22 13:46:19 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-i386/siginfo.h	Thu Feb 28 13:25:25 2002
@@ -107,6 +107,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-mips/unistd.h	Mon Jul  2 15:56:40 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-mips/unistd.h	Thu Feb 28 13:25:25 2002
@@ -233,6 +233,8 @@
 #define __NR_madvise			(__NR_Linux + 218)
 #define __NR_getdents64			(__NR_Linux + 219)
 #define __NR_fcntl64			(__NR_Linux + 220)
+#define __NR_gettid			(__NR_Linux + 221)
+#define __NR_tkill			(__NR_Linux + 222)
 
 /*
  * Offset of the last Linux flavoured syscall
--- linux-2.4.19-pre1/./include/asm-mips/siginfo.h	Wed May 24 20:38:26 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-mips/siginfo.h	Thu Feb 28 13:25:25 2002
@@ -127,6 +127,7 @@
 #define SI_TIMER __SI_CODE(__SI_TIMER,-3) /* sent by timer expiration */
 #define SI_MESGQ	-4	/* sent by real time mesq state change */
 #define SI_SIGIO	-5	/* sent by queued SIGIO */
+#define SI_TKILL	-6	/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-alpha/unistd.h	Fri Nov  9 15:45:35 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-alpha/unistd.h	Thu Feb 28 13:25:25 2002
@@ -318,6 +318,7 @@
 #define __NR_gettid			378
 #define __NR_readahead			379
 #define __NR_security			380 /* syscall for security modules */
+#define __NR_tkill			381
 
 #if defined(__GNUC__)
 
--- linux-2.4.19-pre1/./include/asm-alpha/siginfo.h	Wed May 24 20:38:26 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-alpha/siginfo.h	Thu Feb 28 13:25:25 2002
@@ -107,6 +107,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-m68k/unistd.h	Thu Oct 25 15:53:55 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-m68k/unistd.h	Thu Feb 28 13:25:26 2002
@@ -222,6 +222,8 @@
 #define __NR_setfsuid32		215
 #define __NR_setfsgid32		216
 #define __NR_getdents64		220
+#define __NR_gettid		221
+#define __NR_tkill		222
 
 /* user-visible error numbers are in the range -1 - -122: see
    <asm-m68k/errno.h> */
--- linux-2.4.19-pre1/./include/asm-m68k/siginfo.h	Mon Nov 27 19:11:26 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-m68k/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -117,6 +117,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-sparc/unistd.h	Sun Oct 21 12:36:54 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-sparc/unistd.h	Thu Feb 28 13:25:26 2002
@@ -271,6 +271,7 @@
 #define __NR_fdatasync          253
 #define __NR_nfsservctl         254
 #define __NR_aplib              255
+#define __NR_tkill              257
 
 #define _syscall0(type,name) \
 type name(void) \
--- linux-2.4.19-pre1/./include/asm-sparc/siginfo.h	Mon Jun 19 19:59:39 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-sparc/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -112,6 +112,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-ppc/unistd.h	Fri Nov  2 19:43:54 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-ppc/unistd.h	Thu Feb 28 13:25:26 2002
@@ -215,6 +215,7 @@
 #define __NR_madvise		205
 #define __NR_mincore		206
 #define __NR_gettid		207
+#define __NR_tkill		208
 
 #define __NR(n)	#n
 
--- linux-2.4.19-pre1/./include/asm-ppc/siginfo.h	Mon May 21 17:02:06 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-ppc/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -108,6 +108,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-sparc64/unistd.h	Sun Oct 21 12:36:54 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-sparc64/unistd.h	Thu Feb 28 13:25:26 2002
@@ -273,6 +273,7 @@
 #define __NR_fdatasync          253
 #define __NR_nfsservctl         254
 #define __NR_aplib              255
+#define __NR_tkill              256
 
 #define _syscall0(type,name) \
 type name(void) \
--- linux-2.4.19-pre1/./include/asm-sparc64/siginfo.h	Wed May 24 20:38:26 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-sparc64/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -172,6 +172,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-arm/siginfo.h	Sun Aug 12 13:14:00 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-arm/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -107,6 +107,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL        -6              /* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-sh/siginfo.h	Thu Jan  4 15:19:13 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-sh/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -107,6 +107,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-sh/unistd.h	Mon Oct  2 13:57:34 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-sh/unistd.h	Thu Feb 28 13:25:26 2002
@@ -231,6 +231,8 @@
 #define __NR_madvise		219
 #define __NR_getdents64		220
 #define __NR_fcntl64		221
+#define __NR_gettid		222
+#define __NR_tkill		223
 
 /* user-visible error numbers are in the range -1 - -125: see <asm-sh/errno.h> */
 
--- linux-2.4.19-pre1/./include/asm-ia64/siginfo.h	Fri Dec 21 11:42:03 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-ia64/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -124,6 +124,7 @@
 #define SI_MESGQ	(-3)		/* sent by real time mesq state change */
 #define SI_ASYNCIO	(-4)		/* sent by AIO completion */
 #define SI_SIGIO	(-5)		/* sent by queued SIGIO */
+#define SI_TKILL	(-6)		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-ia64/unistd.h	Fri Nov  9 16:26:17 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-ia64/unistd.h	Thu Feb 28 13:25:26 2002
@@ -206,6 +206,7 @@
 #define __NR_getdents64			1214
 #define __NR_getunwind			1215
 #define __NR_readahead			1216
+#define __NR_tkill			1229
 
 #if !defined(__ASSEMBLY__) && !defined(ASSEMBLER)
 
--- linux-2.4.19-pre1/./include/asm-mips64/siginfo.h	Wed Jul  4 13:50:39 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-mips64/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -127,6 +127,7 @@
 #define SI_TIMER __SI_CODE(__SI_TIMER,-3) /* sent by timer expiration */
 #define SI_MESGQ	-4	/* sent by real time mesq state change */
 #define SI_SIGIO	-5	/* sent by queued SIGIO */
+#define SI_TKILL	-6	/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-mips64/unistd.h	Tue Nov 28 23:42:04 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-mips64/unistd.h	Thu Feb 28 13:25:26 2002
@@ -461,11 +461,13 @@
 #define __NR_mincore			(__NR_Linux + 211)
 #define __NR_madvise			(__NR_Linux + 212)
 #define __NR_getdents64			(__NR_Linux + 213)
+#define __NR_gettid			(__NR_Linux + 214)
+#define __NR_tkill			(__NR_Linux + 215)
 
 /*
  * Offset of the last Linux flavoured syscall
  */
-#define __NR_Linux_syscalls		213
+#define __NR_Linux_syscalls		215
 
 #ifndef _LANGUAGE_ASSEMBLY
 
--- linux-2.4.19-pre1/./include/asm-s390/siginfo.h	Mon Feb 25 13:38:13 2002
+++ linux-2.4.19-pre1-ngpt/./include/asm-s390/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -115,6 +115,7 @@
 #define SI_MESGQ	-3	/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4	/* sent by AIO completion */
 #define SI_SIGIO	-5	/* sent by queued SIGIO */
+#define SI_TKILL	-6	/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-s390/unistd.h	Thu Oct 11 11:43:38 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-s390/unistd.h	Thu Feb 28 13:25:26 2002
@@ -211,6 +211,8 @@
 #define __NR_mincore            218
 #define __NR_madvise            219
 #define __NR_getdents64		220
+#define __NR_gettid		226
+#define __NR_tkill		227
 
 
 /* user-visible error numbers are in the range -1 - -122: see <asm-s390/errno.h> */
--- linux-2.4.19-pre1/./include/asm-parisc/siginfo.h	Tue Dec  5 14:29:39 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-parisc/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -107,6 +107,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-parisc/unistd.h	Tue Dec  5 14:29:39 2000
+++ linux-2.4.19-pre1-ngpt/./include/asm-parisc/unistd.h	Thu Feb 28 13:25:26 2002
@@ -689,8 +689,10 @@
 
 #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_tkill              (__NR_Linux + 199)
 
-#define __NR_Linux_syscalls     197
+#define __NR_Linux_syscalls     199
 
 #define HPUX_GATEWAY_ADDR       0xC0000004
 #define LINUX_GATEWAY_ADDR      0x100
--- linux-2.4.19-pre1/./include/asm-cris/siginfo.h	Thu Feb  8 18:32:44 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-cris/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -107,6 +107,7 @@
 #define SI_MESGQ	-3		/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4		/* sent by AIO completion */
 #define SI_SIGIO	-5		/* sent by queued SIGIO */
+#define SI_TKILL	-6		/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-cris/unistd.h	Mon Feb 25 13:38:12 2002
+++ linux-2.4.19-pre1-ngpt/./include/asm-cris/unistd.h	Thu Feb 28 13:25:26 2002
@@ -230,6 +230,7 @@
 #define __NR_security           223     /* syscall for security modules */
 #define __NR_gettid             224
 #define __NR_readahead          225
+#define __NR_tkill              226
 
 /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
 #define _syscall0(type,name) \
--- linux-2.4.19-pre1/./include/asm-s390x/siginfo.h	Mon Feb 25 13:38:13 2002
+++ linux-2.4.19-pre1-ngpt/./include/asm-s390x/siginfo.h	Thu Feb 28 13:25:26 2002
@@ -115,6 +115,7 @@
 #define SI_MESGQ	-3	/* sent by real time mesq state change */
 #define SI_ASYNCIO	-4	/* sent by AIO completion */
 #define SI_SIGIO	-5	/* sent by queued SIGIO */
+#define SI_TKILL	-6	/* sent by tkill system call */
 
 #define SI_FROMUSER(siptr)	((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr)	((siptr)->si_code > 0)
--- linux-2.4.19-pre1/./include/asm-s390x/unistd.h	Thu Oct 11 11:43:38 2001
+++ linux-2.4.19-pre1-ngpt/./include/asm-s390x/unistd.h	Thu Feb 28 13:25:26 2002
@@ -181,6 +181,8 @@
 #define __NR_mincore            218
 #define __NR_madvise            219
 #define __NR_getdents64         220
+#define __NR_gettid		226
+#define __NR_tkill 	        227
 
 
 /* user-visible error numbers are in the range -1 - -122: see <asm-s390/errno.h> */
--- linux-2.4.19-pre1/./arch/i386/kernel/entry.S	Mon Feb 25 13:37:53 2002
+++ linux-2.4.19-pre1-ngpt/./arch/i386/kernel/entry.S	Thu Feb 28 13:25:26 2002
@@ -634,6 +634,7 @@
 	.long SYMBOL_NAME(sys_ni_syscall)	/* 235 reserved for removexattr */
 	.long SYMBOL_NAME(sys_ni_syscall)	/* reserved for lremovexattr */
 	.long SYMBOL_NAME(sys_ni_syscall)	/* reserved for fremovexattr */
+ 	.long SYMBOL_NAME(sys_tkill)
 
 	.rept NR_syscalls-(.-sys_call_table)/4
 		.long SYMBOL_NAME(sys_ni_syscall)
--- linux-2.4.19-pre1/./arch/i386/kernel/signal.c	Mon Feb 25 13:37:53 2002
+++ linux-2.4.19-pre1-ngpt/./arch/i386/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -685,10 +685,7 @@
 				/* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/alpha/kernel/entry.S	Fri Nov  9 15:45:35 2001
+++ linux-2.4.19-pre1-ngpt/./arch/alpha/kernel/entry.S	Thu Feb 28 13:25:26 2002
@@ -1148,3 +1148,4 @@
 	.quad sys_gettid
 	.quad sys_readahead
 	.quad sys_ni_syscall			/* 380, sys_security */
+	.quad sys_tkill
--- linux-2.4.19-pre1/./arch/alpha/kernel/signal.c	Fri Nov  9 15:45:35 2001
+++ linux-2.4.19-pre1-ngpt/./arch/alpha/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -717,9 +717,7 @@
 
 			default:
 				lock_kernel();
-				sigaddset(&current->pending.signal, signr);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 			continue;
--- linux-2.4.19-pre1/./arch/sparc/kernel/signal.c	Wed Jan 24 17:18:06 2001
+++ linux-2.4.19-pre1-ngpt/./arch/sparc/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -1279,10 +1279,7 @@
 #endif
 				/* fall through */
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOT REACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/sparc/kernel/systbls.S	Sun Oct 21 12:36:54 2001
+++ linux-2.4.19-pre1-ngpt/./arch/sparc/kernel/systbls.S	Thu Feb 28 13:25:26 2002
@@ -70,7 +70,7 @@
 /*240*/	.long sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
 /*245*/	.long sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep
 /*250*/	.long sparc_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
-/*255*/	.long sys_nis_syscall, sys_nis_syscall
+/*255*/	.long sys_nis_syscall, sys_nis_syscall, sys_tkill
 
 #ifdef CONFIG_SUNOS_EMUL
 	/* Now the SunOS syscall table. */
--- linux-2.4.19-pre1/./arch/mips/kernel/signal.c	Sun Sep  9 12:43:01 2001
+++ linux-2.4.19-pre1-ngpt/./arch/mips/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -661,10 +661,7 @@
 				/* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/mips/kernel/syscalls.h	Mon Oct  8 12:39:18 2001
+++ linux-2.4.19-pre1-ngpt/./arch/mips/kernel/syscalls.h	Thu Feb 28 13:25:26 2002
@@ -235,3 +235,5 @@
 SYS(sys_madvise, 3)
 SYS(sys_getdents64, 3)
 SYS(sys_fcntl64, 3)				/* 4220 */
+SYS(sys_gettid, 0)
+SYS(sys_tkill, 2)
--- linux-2.4.19-pre1/./arch/ppc/kernel/misc.S	Mon Feb 25 13:37:55 2002
+++ linux-2.4.19-pre1-ngpt/./arch/ppc/kernel/misc.S	Thu Feb 28 13:25:26 2002
@@ -1122,6 +1122,7 @@
 	.long sys_madvise	/* 205 */
 	.long sys_mincore
 	.long sys_gettid
+	.long sys_tkill
 	.rept NR_syscalls-(.-sys_call_table)/4
 		.long sys_ni_syscall
 	.endr
--- linux-2.4.19-pre1/./arch/ppc/kernel/signal.c	Mon Nov 26 07:29:17 2001
+++ linux-2.4.19-pre1-ngpt/./arch/ppc/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -645,10 +645,7 @@
 				/* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/m68k/kernel/entry.S	Mon Oct  8 12:39:18 2001
+++ linux-2.4.19-pre1-ngpt/./arch/m68k/kernel/entry.S	Thu Feb 28 13:25:26 2002
@@ -646,6 +646,8 @@
 	.long SYMBOL_NAME(sys_ni_syscall)
 	.long SYMBOL_NAME(sys_ni_syscall)
 	.long SYMBOL_NAME(sys_getdents64)	/* 220 */
+	.long SYMBOL_NAME(sys_gettid)
+	.long SYMBOL_NAME(sys_tkill)
 
 	.rept NR_syscalls-(.-SYMBOL_NAME(sys_call_table))/4
 		.long SYMBOL_NAME(sys_ni_syscall)
--- linux-2.4.19-pre1/./arch/m68k/kernel/signal.c	Wed Jan 24 17:21:28 2001
+++ linux-2.4.19-pre1-ngpt/./arch/m68k/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -1135,10 +1135,7 @@
 				/* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/sparc64/kernel/signal32.c	Fri Apr 27 00:17:25 2001
+++ linux-2.4.19-pre1-ngpt/./arch/sparc64/kernel/signal32.c	Thu Feb 28 13:25:26 2002
@@ -1478,10 +1478,7 @@
 #endif
 				/* fall through */
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOT REACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/sparc64/kernel/systbls.S	Sun Oct 21 12:36:54 2001
+++ linux-2.4.19-pre1-ngpt/./arch/sparc64/kernel/systbls.S	Thu Feb 28 13:25:26 2002
@@ -70,7 +70,7 @@
 /*240*/	.word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
 	.word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys32_sched_rr_get_interval, sys32_nanosleep
 /*250*/	.word sys32_mremap, sys32_sysctl, sys_getsid, sys_fdatasync, sys32_nfsservctl
-	.word sys_aplib
+	.word sys_aplib, sys_tkill
 
 	/* Now the 64-bit native Linux syscall table. */
 
@@ -129,7 +129,7 @@
 /*240*/	.word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
 	.word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep
 /*250*/	.word sys64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
-	.word sys_aplib
+	.word sys_aplib, sys_tkill
 
 #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \
     defined(CONFIG_SOLARIS_EMUL_MODULE)
--- linux-2.4.19-pre1/./arch/sparc64/kernel/signal.c	Sun Mar 25 20:14:21 2001
+++ linux-2.4.19-pre1-ngpt/./arch/sparc64/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -806,10 +806,7 @@
 #endif
 				/* fall through */
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOT REACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/arm/kernel/calls.S	Mon Oct  8 12:39:18 2001
+++ linux-2.4.19-pre1-ngpt/./arch/arm/kernel/calls.S	Thu Feb 28 13:25:26 2002
@@ -236,6 +236,8 @@
 		.long	SYMBOL_NAME(sys_mincore)
 /* 220 */	.long	SYMBOL_NAME(sys_madvise)
 		.long	SYMBOL_NAME(sys_fcntl64)
+		.long	SYMBOL_NAME(sys_gettid)
+		.long	SYMBOL_NAME(sys_tkill)
 __syscall_end:
 
 		.rept	NR_syscalls - (__syscall_end - __syscall_start) / 4
--- linux-2.4.19-pre1/./arch/arm/kernel/signal.c	Thu Oct 11 11:04:57 2001
+++ linux-2.4.19-pre1-ngpt/./arch/arm/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -637,10 +637,7 @@
 				/* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/sh/kernel/entry.S	Mon Oct  8 12:39:18 2001
+++ linux-2.4.19-pre1-ngpt/./arch/sh/kernel/entry.S	Thu Feb 28 13:25:26 2002
@@ -1298,6 +1298,8 @@
 	.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_tkill)
 
 	/*
 	 * NOTE!! This doesn't have to be exact - we just have
--- linux-2.4.19-pre1/./arch/sh/kernel/signal.c	Mon Oct 15 15:36:48 2001
+++ linux-2.4.19-pre1-ngpt/./arch/sh/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -671,10 +671,7 @@
 				/* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/ia64/kernel/entry.S	Fri Nov  9 16:26:17 2001
+++ linux-2.4.19-pre1-ngpt/./arch/ia64/kernel/entry.S	Thu Feb 28 13:25:26 2002
@@ -1142,7 +1142,7 @@
 	data8 ia64_ni_syscall
 	data8 ia64_ni_syscall
 	data8 ia64_ni_syscall
-	data8 ia64_ni_syscall
+	data8 sys_tkill
 	data8 ia64_ni_syscall			// 1230
 	data8 ia64_ni_syscall
 	data8 ia64_ni_syscall
--- linux-2.4.19-pre1/./arch/ia64/kernel/signal.c	Fri Nov  9 16:26:17 2001
+++ linux-2.4.19-pre1-ngpt/./arch/ia64/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -578,10 +578,7 @@
 				/* FALLTHRU */
 
 			      default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/mips64/kernel/scall_64.S	Mon Oct  8 12:39:18 2001
+++ linux-2.4.19-pre1-ngpt/./arch/mips64/kernel/scall_64.S	Thu Feb 28 13:25:26 2002
@@ -347,3 +347,5 @@
 	PTR	sys_mincore
 	PTR	sys_madvise
 	PTR	sys_getdents64
+	PTR	sys_gettid
+	PTR	sys_tkill
--- linux-2.4.19-pre1/./arch/mips64/kernel/scall_o32.S	Mon Oct  8 12:39:18 2001
+++ linux-2.4.19-pre1-ngpt/./arch/mips64/kernel/scall_o32.S	Thu Feb 28 13:25:26 2002
@@ -454,6 +454,8 @@
 	sys	sys_madvise	3
 	sys	sys_getdents64	3
 	sys	sys32_fcntl64	3			/* 4220 */
+	sys	sys32_gettid	0
+	sys	sys32_tkill	2
 	.endm
 
 	.macro	sys function, nargs
--- linux-2.4.19-pre1/./arch/mips64/kernel/signal.c	Sun Sep  9 12:43:01 2001
+++ linux-2.4.19-pre1-ngpt/./arch/mips64/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -685,10 +685,7 @@
 				/* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/mips64/kernel/signal32.c	Sun Sep  9 12:43:01 2001
+++ linux-2.4.19-pre1-ngpt/./arch/mips64/kernel/signal32.c	Thu Feb 28 13:25:26 2002
@@ -757,10 +757,7 @@
 				/* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/s390/kernel/entry.S	Mon Feb 25 13:37:56 2002
+++ linux-2.4.19-pre1-ngpt/./arch/s390/kernel/entry.S	Thu Feb 28 13:25:26 2002
@@ -602,6 +602,8 @@
 	.long  sys_ni_syscall		 /* 224 - reserved for posix_acl */
 	.rept  255-224
 	.long  sys_ni_syscall
+	.long  sys_gettid		/* 226 */
+	.long  sys_tkill		/* 227 */
 	.endr
 
 /*
--- linux-2.4.19-pre1/./arch/s390/kernel/signal.c	Thu Oct 11 11:04:57 2001
+++ linux-2.4.19-pre1-ngpt/./arch/s390/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -563,10 +563,7 @@
                                 /* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/parisc/kernel/signal.c	Wed Dec  6 13:46:39 2000
+++ linux-2.4.19-pre1-ngpt/./arch/parisc/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -581,11 +581,7 @@
 				/* FALLTHRU */
 
 			default:
-				lock_kernel();
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/parisc/kernel/syscall.S	Mon Oct  8 12:39:18 2001
+++ linux-2.4.19-pre1-ngpt/./arch/parisc/kernel/syscall.S	Thu Feb 28 13:25:26 2002
@@ -552,6 +552,8 @@
 	ENTRY_UHOH(shmctl)		/* 195 */
 	ENTRY_SAME(ni_syscall)		/* streams1 */
 	ENTRY_SAME(ni_syscall)		/* streams2 */
+	ENTRY_SAME(gettid)
+	ENTRY_SAME(tkill)
 
 .end
 
--- linux-2.4.19-pre1/./arch/cris/kernel/entry.S	Mon Feb 25 13:37:52 2002
+++ linux-2.4.19-pre1-ngpt/./arch/cris/kernel/entry.S	Thu Feb 28 13:25:26 2002
@@ -1013,6 +1013,7 @@
         .long SYMBOL_NAME(sys_ni_syscall)       /* Reserved for Security */
         .long SYMBOL_NAME(sys_gettid)
         .long SYMBOL_NAME(sys_readahead)        /* 225 */
+        .long SYMBOL_NAME(sys_tkill)
 
         /*
          * NOTE!! This doesn't have to be exact - we just have
--- linux-2.4.19-pre1/./arch/cris/kernel/signal.c	Mon Oct  8 13:43:54 2001
+++ linux-2.4.19-pre1-ngpt/./arch/cris/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -679,10 +679,7 @@
 
 			default:
 				lock_kernel();
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/s390x/kernel/entry.S	Mon Feb 25 13:37:56 2002
+++ linux-2.4.19-pre1-ngpt/./arch/s390x/kernel/entry.S	Thu Feb 28 13:25:26 2002
@@ -635,6 +635,8 @@
 	.long  SYSCALL(sys_ni_syscall,sys_ni_syscall) /* 224 - reserved for posix_acl */
         .rept  255-224
 	.long  SYSCALL(sys_ni_syscall,sys_ni_syscall)
+	.long  SYSCALL(sys_gettid,sys_gettid)
+	.long  SYSCALL(sys_tkill,sys_tkill)
 	.endr
 
 /*
--- linux-2.4.19-pre1/./arch/s390x/kernel/signal.c	Thu Oct 11 11:04:57 2001
+++ linux-2.4.19-pre1-ngpt/./arch/s390x/kernel/signal.c	Thu Feb 28 13:25:26 2002
@@ -569,10 +569,7 @@
                                 /* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}
--- linux-2.4.19-pre1/./arch/s390x/kernel/signal32.c	Thu Oct 11 11:04:57 2001
+++ linux-2.4.19-pre1-ngpt/./arch/s390x/kernel/signal32.c	Thu Feb 28 13:25:26 2002
@@ -699,10 +699,7 @@
                                 /* FALLTHRU */
 
 			default:
-				sigaddset(&current->pending.signal, signr);
-				recalc_sigpending(current);
-				current->flags |= PF_SIGNALED;
-				do_exit(exit_code);
+				sig_exit(signr, exit_code, &info);
 				/* NOTREACHED */
 			}
 		}

                 reply	other threads:[~2002-02-28 19:41 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=66720000.1014925071@baldur \
    --to=dmccr@us.ibm.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcelo@conectiva.com.br \
    /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.