198d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam/* Ltrace Test : signals.c. 298d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam Objectives : Verify that ltrace can trace user defined signal. 398d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam This file was written by Yao Qi <qiyao@cn.ibm.com>. */ 498d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam 598d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam#include<stdio.h> 698d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam#include<signal.h> 798d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam#include <sys/types.h> 898d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam 998d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam#define LOOP 20 1098d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam 1198d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamvoid 1298d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamhandler(int signum,siginfo_t *info,void *act) 1398d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam{ 1498d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam} 1598d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam 1698d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamint 1798d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliammain () 1898d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam{ 1998d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam struct sigaction act; 2098d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam union sigval mysigval; 2198d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam int i; 2298d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam int sig; 2398d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam pid_t pid; 2498d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam 2598d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam mysigval.sival_int=0; 26105adb6627b19be7208fe55c226cbcfbbeb2f00cArnaud Patard sig = SIGUSR1; 2798d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam pid=getpid(); 2898d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam 2998d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam sigemptyset(&act.sa_mask); 3098d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam act.sa_sigaction=handler; 3198d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam act.sa_flags=SA_SIGINFO; 3298d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam 3398d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam if(sigaction(sig,&act,NULL) < 0) 3498d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam { 3598d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam printf("install sigal error\n"); 3698d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam } 3798d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam 3898d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam for(i=0; i< LOOP; i++) 3998d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam { 4098d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam usleep(100); 4198d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam sigqueue(pid,sig,mysigval); 4298d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam } 4398d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam return 0; 4498d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam} 45