Skip to contentSkip to conversation

Re: [Fwd: sigcontext on Linux-ppc in user space]

Fwd: sigcontext on Linux-ppc in user space [email protected] 1 participant 1 message Jan 25, 2001

lore
Share & tools
lore
#0 lore raw

Ok, actually the segfault was for a more complicated function, but the simplified example still gives the wrong answer. i.e scp should point to a struct sigcontext and scp->signal should be 10 in the sample program.

John Kacur/Toronto/IBM@IBMCA
[email protected]
(416) 448-2584 (phone)
778-2584 (tie line)

"Kevin B. Hendricks" <[email protected]> on 01/25/2001 01:10:40 PM

Please respond to [email protected]

To: John Kacur/Toronto/IBM@IBMCA
cc: [email protected], [email protected]
Subject: Re: [Fwd: sigcontext on Linux-ppc in user space]

Hi,

Here is what I get from running it on my system (ppc linux with 2.2.15 kernel with some mods and glibc-2.1.3).

But no segfault.

Kevin

[kbhend@localhost ~]$ gcc -O2 -ojunk junk.c
[kbhend@localhost ~]$ ./junk
SIGUSR1 = 10
scp = 7fffe9a4
scp->signal = 0
[kbhend@localhost ~]$

Quoted 29 lines · On Thursday, January 25, 2001, at 10:09 AM, [email protected] wrote:

#include <stdio.h>
#include <signal.h>

/* Function Prototypes */
void install_sigusr1_handler(void);
void sigusr_handler(int , siginfo_t *, struct sigcontext * scp);

int main(void)

{
        install_sigusr1_handler();
        printf("SIGUSR1 = %d\n", SIGUSR1);
        raise(SIGUSR1);
        exit(0);
}

void install_sigusr1_handler(void)

{
        struct sigaction newAct;

        if (sigemptyset(&newAct.sa_mask) != 0) {
                fprintf(stderr, "Warning, sigemptyset failed.\n");
        }

        newAct.sa_flags = 0;
        newAct.sa_flags |= SA_SIGINFO | SA_RESTART;

        newAct.sa_sigaction = (void

(*)(int,siginfo_t*,void*))sigusr_handler;

Quoted 8 lines
        if (sigaction(SIGUSR1, &newAct, NULL) != 0) {
                fprintf(stderr, "Couldn't install SIGUSR1 handler.\n");
                fprintf(stderr, "Exiting.\n");
                exit(1);
        }
}

void sigusr_handler(int signo, siginfo_t *siginfp, struct sigcontext *

scp)

Quoted 6 lines
{
        printf("scp = %08x\n", scp);
        printf("scp->signal = %d\n", scp->signal);
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/