Commit 38445ca0 authored by Joel Sing's avatar Joel Sing

runtime: fix netbsd sigaction struct

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6198063
parent a1bf5207
...@@ -11,10 +11,10 @@ extern void runtime·sigtramp(void); ...@@ -11,10 +11,10 @@ extern void runtime·sigtramp(void);
typedef struct sigaction { typedef struct sigaction {
union { union {
void (*__sa_handler)(int32); void (*_sa_handler)(int32);
void (*__sa_sigaction)(int32, Siginfo*, void *); void (*_sa_sigaction)(int32, Siginfo*, void *);
} __sigaction_u; /* signal handler */ } _sa_u; /* signal handler */
uint32 sa_mask; /* signal mask to apply */ uint32 sa_mask[4]; /* signal mask to apply */
int32 sa_flags; /* see signal options below */ int32 sa_flags; /* see signal options below */
} Sigaction; } Sigaction;
...@@ -124,9 +124,12 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart) ...@@ -124,9 +124,12 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart)
sa.sa_flags = SA_SIGINFO|SA_ONSTACK; sa.sa_flags = SA_SIGINFO|SA_ONSTACK;
if(restart) if(restart)
sa.sa_flags |= SA_RESTART; sa.sa_flags |= SA_RESTART;
sa.sa_mask = ~0ULL; sa.sa_mask[0] = ~0U;
sa.sa_mask[1] = ~0U;
sa.sa_mask[2] = ~0U;
sa.sa_mask[3] = ~0U;
if (fn == runtime·sighandler) if (fn == runtime·sighandler)
fn = (void*)runtime·sigtramp; fn = (void*)runtime·sigtramp;
sa.__sigaction_u.__sa_sigaction = (void*)fn; sa._sa_u._sa_sigaction = (void*)fn;
runtime·sigaction(i, &sa, nil); runtime·sigaction(i, &sa, nil);
} }
...@@ -11,10 +11,10 @@ extern void runtime·sigtramp(void); ...@@ -11,10 +11,10 @@ extern void runtime·sigtramp(void);
typedef struct sigaction { typedef struct sigaction {
union { union {
void (*__sa_handler)(int32); void (*_sa_handler)(int32);
void (*__sa_sigaction)(int32, Siginfo*, void *); void (*_sa_sigaction)(int32, Siginfo*, void *);
} __sigaction_u; /* signal handler */ } _sa_u; /* signal handler */
uint32 sa_mask; /* signal mask to apply */ uint32 sa_mask[4]; /* signal mask to apply */
int32 sa_flags; /* see signal options below */ int32 sa_flags; /* see signal options below */
} Sigaction; } Sigaction;
...@@ -133,9 +133,12 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart) ...@@ -133,9 +133,12 @@ runtime·setsig(int32 i, void (*fn)(int32, Siginfo*, void*, G*), bool restart)
sa.sa_flags = SA_SIGINFO|SA_ONSTACK; sa.sa_flags = SA_SIGINFO|SA_ONSTACK;
if(restart) if(restart)
sa.sa_flags |= SA_RESTART; sa.sa_flags |= SA_RESTART;
sa.sa_mask = ~0ULL; sa.sa_mask[0] = ~0U;
sa.sa_mask[1] = ~0U;
sa.sa_mask[2] = ~0U;
sa.sa_mask[3] = ~0U;
if (fn == runtime·sighandler) if (fn == runtime·sighandler)
fn = (void*)runtime·sigtramp; fn = (void*)runtime·sigtramp;
sa.__sigaction_u.__sa_sigaction = (void*)fn; sa._sa_u._sa_sigaction = (void*)fn;
runtime·sigaction(i, &sa, nil); runtime·sigaction(i, &sa, nil);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment