initial commit
[pfinal.git] / Routix / tareas / stress1 / stress1a.c
blob392f7e0f485668b7b034cf1d200c023b604da78e
1 /* tarea.c */
2 #include "stdarg.h"
3 #include <sys/types.h>
4 #include <lib/routix.h>
5 #include <routix.h>
6 #include <string.h>
7 #include <signal.h>
9 void handler(int);
10 void handler1(int signo);
11 long get_esp(void);
13 int sig = 0;
15 int main (void)
17 kill(getppid(), SIGUSR1);
18 sigset_t mascara;
19 sigfillset(&mascara);
20 sigdelset(&mascara, 2);
21 // sigprocmask(SIG_SETMASK,&mascara ,NULL);
23 sigemptyset(&mascara);
24 sigaddset(&mascara, 4);
25 struct sigaction sig1;
26 sig1.sa_handler = handler;
27 sig1.sa_mask = mascara;
28 sigaction (3, &sig1, NULL);
30 int valor = 0xabcd;
31 // signal(3, handler);
32 signal(4, handler1);
33 signal(2, handler1);
34 printf("Valor antes de senales: 0x%x\n", valor);
35 printf("Tarea.bin: Durmiendo en un while...\n");
36 __asm__ __volatile__ ("mov $0x11111111,%eax ; mov $0x22222222,%ebx ; mov $0x33333333,%ecx ; mov $0x44444444,%edx ; mov $0x55555555,%edi ; mov $0x66666666,%esi");
37 while(sig!=4);
38 printf("Valor despues de senales: 0x%x\n", valor);
40 return 0;
43 void handler(int signo)
45 sig = signo;
46 printf("handler 3 de tarea.bin: Se recibio la senal: %d\t PID: %d\n", signo, getpid());
47 int i;
48 for (i=0 ; i<0x5fffff; i++);
49 printf("saliendo del handler 3\n");
53 void handler1(int signo)
55 // Se puede setear una máscara desde dentro de un handler ????
56 printf("handler1 de tarea.bin: Se recibio la senal: %d\t PID: %d\n", signo, getpid());
57 if (signo==2) {
58 sigset_t mascara;
59 sigemptyset(&mascara);
60 sigprocmask(SIG_SETMASK, &mascara, NULL);
63 sig = signo;
64 //_debug();