lkml.org 
[lkml]   [2002]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH 2.5.3] Third version of signal changes for thread groups

--On Wednesday, February 06, 2002 09:40:05 -0800 Linus Torvalds <torvalds@transmeta.com> wrote:

> You seem to be using Mulberry, I'm sure there must be some way to fix it,
> but I don't know mb myself.

Yes, and I was under the mistaken belief that it worked reasonably. I
think I've found a workaround now, with the help of other Mulberry
users here. Here's my latest attempt.

> (I can edit and hand-apply patches like these, but I hate to do it, and I
> really really hate to have developers with broken mail configurations, so
> I'd rather go through this several times to get it fixed than to work
> around it)

I absolutely agree. I'm also anxious to get this nailed down. Thanks
for putting up with my attempts.

Dave McCracken

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

-----------------------

--- linux-2.5.3/./kernel/fork.c Mon Jan 28 17:11:45 2002
+++ linux-2.5.3-ngpt/./kernel/fork.c Fri Feb 1 14:08:52 2002
@@ -724,10 +724,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.5.3/./kernel/signal.c Mon Jan 28 17:11:45 2002
+++ linux-2.5.3-ngpt/./kernel/signal.c Wed Feb 6 09:44:33 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
@@ -589,7 +618,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;
@@ -636,8 +665,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;
}
@@ -660,7 +696,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)
@@ -983,6 +1019,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.5.3/./include/linux/sched.h Tue Jan 29 23:41:12 2002
+++ linux-2.5.3-ngpt/./include/linux/sched.h Wed Feb 6 09:48:57 2002
@@ -564,6 +564,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);
@@ -839,8 +840,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 unhash_process(struct task_struct *p)
{
--- linux-2.5.3/./include/asm-i386/unistd.h Tue Jan 29 20:46:00 2002
+++ linux-2.5.3-ngpt/./include/asm-i386/unistd.h Fri Feb 1 13:15:08 2002
@@ -242,6 +242,7 @@
#define __NR_removexattr 235
#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> */

--- linux-2.5.3/./include/asm-i386/siginfo.h Tue Jan 29 23:41:10 2002
+++ linux-2.5.3-ngpt/./include/asm-i386/siginfo.h Fri Feb 1 14:07:04 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.5.3/./include/asm-mips/unistd.h Mon Jul 2 15:56:40 2001
+++ linux-2.5.3-ngpt/./include/asm-mips/unistd.h Fri Feb 1 13:12:28 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.5.3/./include/asm-mips/siginfo.h Wed May 24 20:38:26 2000
+++ linux-2.5.3-ngpt/./include/asm-mips/siginfo.h Fri Feb 1 13:12:28 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.5.3/./include/asm-alpha/unistd.h Fri Nov 9 15:45:35 2001
+++ linux-2.5.3-ngpt/./include/asm-alpha/unistd.h Fri Feb 1 13:12:28 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.5.3/./include/asm-alpha/siginfo.h Wed May 24 20:38:26 2000
+++ linux-2.5.3-ngpt/./include/asm-alpha/siginfo.h Fri Feb 1 13:12:28 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.5.3/./include/asm-m68k/unistd.h Thu Oct 25 15:53:55 2001
+++ linux-2.5.3-ngpt/./include/asm-m68k/unistd.h Fri Feb 1 13:12:28 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.5.3/./include/asm-m68k/siginfo.h Mon Nov 27 19:11:26 2000
+++ linux-2.5.3-ngpt/./include/asm-m68k/siginfo.h Fri Feb 1 13:12:28 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.5.3/./include/asm-sparc/unistd.h Sun Oct 21 12:36:54 2001
+++ linux-2.5.3-ngpt/./include/asm-sparc/unistd.h Fri Feb 1 13:12:29 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.5.3/./include/asm-sparc/siginfo.h Mon Jun 19 19:59:39 2000
+++ linux-2.5.3-ngpt/./include/asm-sparc/siginfo.h Fri Feb 1 13:12:29 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.5.3/./include/asm-ppc/unistd.h Fri Nov 2 19:43:54 2001
+++ linux-2.5.3-ngpt/./include/asm-ppc/unistd.h Fri Feb 1 13:12:29 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.5.3/./include/asm-ppc/siginfo.h Mon May 21 17:02:06 2001
+++ linux-2.5.3-ngpt/./include/asm-ppc/siginfo.h Fri Feb 1 13:12:29 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.5.3/./include/asm-sparc64/unistd.h Sun Oct 21 12:36:54 2001
+++ linux-2.5.3-ngpt/./include/asm-sparc64/unistd.h Fri Feb 1 13:12:29 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.5.3/./include/asm-sparc64/siginfo.h Wed May 24 20:38:26 2000
+++ linux-2.5.3-ngpt/./include/asm-sparc64/siginfo.h Fri Feb 1 13:12:29 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.5.3/./include/asm-arm/siginfo.h Sun Aug 12 13:14:00 2001
+++ linux-2.5.3-ngpt/./include/asm-arm/siginfo.h Fri Feb 1 13:12:28 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.5.3/./include/asm-sh/siginfo.h Thu Jan 4 15:19:13 2001
+++ linux-2.5.3-ngpt/./include/asm-sh/siginfo.h Fri Feb 1 13:12:29 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.5.3/./include/asm-sh/unistd.h Mon Oct 2 13:57:34 2000
+++ linux-2.5.3-ngpt/./include/asm-sh/unistd.h Fri Feb 1 13:12:29 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.5.3/./include/asm-ia64/siginfo.h Thu Apr 5 14:51:47 2001
+++ linux-2.5.3-ngpt/./include/asm-ia64/siginfo.h Fri Feb 1 13:16:25 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.5.3/./include/asm-ia64/unistd.h Fri Nov 9 16:26:17 2001
+++ linux-2.5.3-ngpt/./include/asm-ia64/unistd.h Fri Feb 1 13:12:28 2002
@@ -206,6 +206,7 @@
#define __NR_getdents64 1214
#define __NR_getunwind 1215
#define __NR_readahead 1216
+#define __NR_tkill 1217

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

--- linux-2.5.3/./include/asm-mips64/siginfo.h Wed Jul 4 13:50:39 2001
+++ linux-2.5.3-ngpt/./include/asm-mips64/siginfo.h Fri Feb 1 13:12:28 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.5.3/./include/asm-mips64/unistd.h Tue Nov 28 23:42:04 2000
+++ linux-2.5.3-ngpt/./include/asm-mips64/unistd.h Fri Feb 1 13:12:28 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.5.3/./include/asm-s390/siginfo.h Tue Feb 13 16:13:44 2001
+++ linux-2.5.3-ngpt/./include/asm-s390/siginfo.h Fri Feb 1 13:12:29 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.5.3/./include/asm-s390/unistd.h Thu Oct 11 11:43:38 2001
+++ linux-2.5.3-ngpt/./include/asm-s390/unistd.h Fri Feb 1 13:12:29 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.5.3/./include/asm-parisc/siginfo.h Tue Dec 5 14:29:39 2000
+++ linux-2.5.3-ngpt/./include/asm-parisc/siginfo.h Fri Feb 1 13:12:29 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.5.3/./include/asm-parisc/unistd.h Tue Dec 5 14:29:39 2000
+++ linux-2.5.3-ngpt/./include/asm-parisc/unistd.h Fri Feb 1 13:12:29 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.5.3/./include/asm-cris/siginfo.h Thu Feb 8 18:32:44 2001
+++ linux-2.5.3-ngpt/./include/asm-cris/siginfo.h Fri Feb 1 13:12:28 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.5.3/./include/asm-cris/unistd.h Mon Jan 21 18:00:39 2002
+++ linux-2.5.3-ngpt/./include/asm-cris/unistd.h Fri Feb 1 13:12:28 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.5.3/./include/asm-s390x/unistd.h Thu Oct 11 11:43:38 2001
+++ linux-2.5.3-ngpt/./include/asm-s390x/unistd.h Fri Feb 1 13:12:29 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.5.3/./include/asm-s390x/siginfo.h Tue Feb 13 16:13:44 2001
+++ linux-2.5.3-ngpt/./include/asm-s390x/siginfo.h Fri Feb 1 13:12:29 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.5.3/./arch/i386/kernel/entry.S Tue Jan 29 20:50:30 2002
+++ linux-2.5.3-ngpt/./arch/i386/kernel/entry.S Fri Feb 1 13:14:11 2002
@@ -667,6 +667,7 @@
.long SYMBOL_NAME(sys_removexattr) /* 235 */
.long SYMBOL_NAME(sys_lremovexattr)
.long SYMBOL_NAME(sys_fremovexattr)
+ .long SYMBOL_NAME(sys_tkill)

.rept NR_syscalls-(.-sys_call_table)/4
.long SYMBOL_NAME(sys_ni_syscall)
--- linux-2.5.3/./arch/i386/kernel/signal.c Mon Jan 28 17:11:45 2002
+++ linux-2.5.3-ngpt/./arch/i386/kernel/signal.c Wed Feb 6 09:47:45 2002
@@ -683,10 +683,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.5.3/./arch/alpha/kernel/entry.S Mon Jan 28 17:14:22 2002
+++ linux-2.5.3-ngpt/./arch/alpha/kernel/entry.S Fri Feb 1 13:12:28 2002
@@ -1148,3 +1148,4 @@
.quad sys_gettid
.quad sys_readahead
.quad sys_ni_syscall /* 380, sys_security */
+ .quad sys_tkill
--- linux-2.5.3/./arch/alpha/kernel/signal.c Fri Nov 9 15:45:35 2001
+++ linux-2.5.3-ngpt/./arch/alpha/kernel/signal.c Wed Feb 6 10:02:10 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.5.3/./arch/sparc/kernel/signal.c Mon Jan 14 12:10:44 2002
+++ linux-2.5.3-ngpt/./arch/sparc/kernel/signal.c Wed Feb 6 10:02:31 2002
@@ -1280,10 +1280,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.5.3/./arch/sparc/kernel/systbls.S Sun Oct 21 12:36:54 2001
+++ linux-2.5.3-ngpt/./arch/sparc/kernel/systbls.S Fri Feb 1 13:12:28 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.5.3/./arch/mips/kernel/signal.c Sun Sep 9 12:43:01 2001
+++ linux-2.5.3-ngpt/./arch/mips/kernel/signal.c Wed Feb 6 10:02:48 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.5.3/./arch/mips/kernel/syscalls.h Mon Oct 8 12:39:18 2001
+++ linux-2.5.3-ngpt/./arch/mips/kernel/syscalls.h Fri Feb 1 13:12:28 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.5.3/./arch/ppc/kernel/misc.S Fri Nov 2 19:43:54 2001
+++ linux-2.5.3-ngpt/./arch/ppc/kernel/misc.S Fri Feb 1 13:12:28 2002
@@ -1121,6 +1121,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.5.3/./arch/ppc/kernel/signal.c Mon May 21 19:04:47 2001
+++ linux-2.5.3-ngpt/./arch/ppc/kernel/signal.c Wed Feb 6 10:03:06 2002
@@ -641,10 +641,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.5.3/./arch/m68k/kernel/entry.S Mon Oct 8 12:39:18 2001
+++ linux-2.5.3-ngpt/./arch/m68k/kernel/entry.S Fri Feb 1 13:12:28 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.5.3/./arch/m68k/kernel/signal.c Wed Jan 24 17:21:28 2001
+++ linux-2.5.3-ngpt/./arch/m68k/kernel/signal.c Wed Feb 6 10:03:22 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.5.3/./arch/sparc64/kernel/signal32.c Mon Jan 14 12:10:44 2002
+++ linux-2.5.3-ngpt/./arch/sparc64/kernel/signal32.c Wed Feb 6 10:03:43 2002
@@ -1479,10 +1479,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.5.3/./arch/sparc64/kernel/systbls.S Sun Oct 21 12:36:54 2001
+++ linux-2.5.3-ngpt/./arch/sparc64/kernel/systbls.S Fri Feb 1 13:12:28 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.5.3/./arch/sparc64/kernel/signal.c Mon Jan 14 12:10:44 2002
+++ linux-2.5.3-ngpt/./arch/sparc64/kernel/signal.c Wed Feb 6 10:03:54 2002
@@ -807,10 +807,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.5.3/./arch/arm/kernel/calls.S Mon Oct 8 12:39:18 2001
+++ linux-2.5.3-ngpt/./arch/arm/kernel/calls.S Fri Feb 1 13:12:28 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.5.3/./arch/arm/kernel/signal.c Sat Jan 5 15:04:30 2002
+++ linux-2.5.3-ngpt/./arch/arm/kernel/signal.c Wed Feb 6 10:04:08 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.5.3/./arch/sh/kernel/entry.S Mon Jan 28 17:14:23 2002
+++ linux-2.5.3-ngpt/./arch/sh/kernel/entry.S Fri Feb 1 13:12:28 2002
@@ -1195,6 +1195,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.5.3/./arch/sh/kernel/signal.c Thu Jan 24 14:08:15 2002
+++ linux-2.5.3-ngpt/./arch/sh/kernel/signal.c Wed Feb 6 10:42:28 2002
@@ -673,10 +673,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.5.3/./arch/ia64/kernel/entry.S Mon Jan 28 17:14:22 2002
+++ linux-2.5.3-ngpt/./arch/ia64/kernel/entry.S Fri Feb 1 13:12:28 2002
@@ -1130,6 +1130,7 @@
data8 sys_getdents64
data8 sys_getunwind // 1215
data8 sys_readahead
+ data8 sys_tkill
data8 ia64_ni_syscall
data8 ia64_ni_syscall
data8 ia64_ni_syscall
--- linux-2.5.3/./arch/ia64/kernel/signal.c Fri Nov 9 16:26:17 2001
+++ linux-2.5.3-ngpt/./arch/ia64/kernel/signal.c Wed Feb 6 10:44:10 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.5.3/./arch/mips64/kernel/scall_64.S Mon Jan 28 17:14:22 2002
+++ linux-2.5.3-ngpt/./arch/mips64/kernel/scall_64.S Fri Feb 1 13:12:28 2002
@@ -347,3 +347,5 @@
PTR sys_mincore
PTR sys_madvise
PTR sys_getdents64
+ PTR sys_gettid
+ PTR sys_tkill
--- linux-2.5.3/./arch/mips64/kernel/scall_o32.S Mon Jan 28 17:14:23 2002
+++ linux-2.5.3-ngpt/./arch/mips64/kernel/scall_o32.S Fri Feb 1 13:12:28 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.5.3/./arch/mips64/kernel/signal.c Sun Sep 9 12:43:01 2001
+++ linux-2.5.3-ngpt/./arch/mips64/kernel/signal.c Wed Feb 6 10:04:45 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.5.3/./arch/mips64/kernel/signal32.c Sun Sep 9 12:43:01 2001
+++ linux-2.5.3-ngpt/./arch/mips64/kernel/signal32.c Wed Feb 6 10:04:57 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.5.3/./arch/s390/kernel/entry.S Mon Jan 28 17:14:23 2002
+++ linux-2.5.3-ngpt/./arch/s390/kernel/entry.S Fri Feb 1 13:12:28 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.5.3/./arch/s390/kernel/signal.c Thu Oct 11 11:04:57 2001
+++ linux-2.5.3-ngpt/./arch/s390/kernel/signal.c Wed Feb 6 10:44:27 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.5.3/./arch/parisc/kernel/signal.c Wed Dec 6 13:46:39 2000
+++ linux-2.5.3-ngpt/./arch/parisc/kernel/signal.c Wed Feb 6 10:44:41 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.5.3/./arch/parisc/kernel/syscall.S Mon Oct 8 12:39:18 2001
+++ linux-2.5.3-ngpt/./arch/parisc/kernel/syscall.S Fri Feb 1 13:12:28 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.5.3/./arch/cris/kernel/entry.S Mon Jan 21 18:00:39 2002
+++ linux-2.5.3-ngpt/./arch/cris/kernel/entry.S Fri Feb 1 13:12:28 2002
@@ -1015,6 +1015,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.5.3/./arch/cris/kernel/signal.c Mon Oct 8 13:43:54 2001
+++ linux-2.5.3-ngpt/./arch/cris/kernel/signal.c Wed Feb 6 10:44:53 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.5.3/./arch/s390x/kernel/entry.S Mon Jan 28 17:14:23 2002
+++ linux-2.5.3-ngpt/./arch/s390x/kernel/entry.S Fri Feb 1 13:12:28 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.5.3/./arch/s390x/kernel/signal.c Thu Oct 11 11:04:57 2001
+++ linux-2.5.3-ngpt/./arch/s390x/kernel/signal.c Wed Feb 6 10:05:16 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.5.3/./arch/s390x/kernel/signal32.c Thu Oct 11 11:04:57 2001
+++ linux-2.5.3-ngpt/./arch/s390x/kernel/signal32.c Wed Feb 6 10:05:34 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 */
}
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:24    [W:0.096 / U:0.040 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site