Skip to content

Commit

Permalink
um: merge hard_handler() instances, switch to use of SA_SIGINFO
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Richard Weinberger <richard@nod.at>
  • Loading branch information
Al Viro authored and Richard Weinberger committed Nov 2, 2011
1 parent 5d40de0 commit 7eb1225
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 35 deletions.
12 changes: 8 additions & 4 deletions arch/um/os-Linux/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ void set_sigstack(void *sig_stack, int size)

static void (*handlers[_NSIG])(int sig, struct sigcontext *sc);

void handle_signal(int sig, struct sigcontext *sc)
static void handle_signal(int sig, struct sigcontext *sc)
{
unsigned long pending = 1UL << sig;

Expand Down Expand Up @@ -168,7 +168,11 @@ void handle_signal(int sig, struct sigcontext *sc)
} while (pending);
}

extern void hard_handler(int sig);
static void hard_handler(int sig, siginfo_t *info, void *p)
{
struct ucontext *uc = p;
handle_signal(sig, (struct sigcontext *) &uc->uc_mcontext);
}

void set_handler(int sig, void (*handler)(int), int flags, ...)
{
Expand All @@ -178,7 +182,7 @@ void set_handler(int sig, void (*handler)(int), int flags, ...)
int mask;

handlers[sig] = (void (*)(int, struct sigcontext *)) handler;
action.sa_handler = hard_handler;
action.sa_sigaction = hard_handler;

sigemptyset(&action.sa_mask);

Expand All @@ -190,7 +194,7 @@ void set_handler(int sig, void (*handler)(int), int flags, ...)
if (sig == SIGSEGV)
flags |= SA_NODEFER;

action.sa_flags = flags;
action.sa_flags = flags | SA_SIGINFO;
action.sa_restorer = NULL;
if (sigaction(sig, &action, NULL) < 0)
panic("sigaction failed - errno = %d\n", errno);
Expand Down
2 changes: 1 addition & 1 deletion arch/um/os-Linux/sys-i386/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Licensed under the GPL
#

obj-y = registers.o signal.o task_size.o tls.o
obj-y = registers.o task_size.o tls.o

USER_OBJS := $(obj-y)

Expand Down
13 changes: 0 additions & 13 deletions arch/um/os-Linux/sys-i386/signal.c

This file was deleted.

2 changes: 1 addition & 1 deletion arch/um/os-Linux/sys-x86_64/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Licensed under the GPL
#

obj-y = registers.o prctl.o signal.o task_size.o
obj-y = registers.o prctl.o task_size.o

USER_OBJS := $(obj-y)

Expand Down
16 changes: 0 additions & 16 deletions arch/um/os-Linux/sys-x86_64/signal.c

This file was deleted.

0 comments on commit 7eb1225

Please sign in to comment.