[Dhcp-agent-commits] dhcp-agent dhcp-util.c,1.17,1.18 dhcp-util.h,1.4,1.5
Status: Alpha
Brought to you by:
actmodern
From: <act...@us...> - 2002-06-19 00:57:19
|
Update of /cvsroot/dhcp-agent/dhcp-agent In directory usw-pr-cvs1:/tmp/cvs-serv18809 Modified Files: dhcp-util.c dhcp-util.h Log Message: added remove_alarm Index: dhcp-util.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-util.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** dhcp-util.c 19 Jun 2002 00:40:12 -0000 1.17 --- dhcp-util.c 19 Jun 2002 00:57:16 -0000 1.18 *************** *** 267,270 **** --- 267,289 ---- } + void remove_interrupt(int sig) + { + sigset_t signal_set; + + sigemptyset(&signal_set); + sigaddset(&signal_set, sig); + + if(sigpending(&signal_set)) { + add_interrupt_handler(sig, SIG_IGN); + sigfillset(&signal_set); + sigdelset(&signal_set, SIGALRM); + + sigsuspend(&signal_set); + add_interrupt_handler(sig, SIG_DFL); + } + + return; + } + /* String routines. */ *************** *** 500,508 **** } /* will trigger alarm for one time only. */ void set_alarm(struct timeval alarm_time) { struct itimerval timer; - struct timeval disarm_timer = { 0, 0 }; timer.it_interval = alarm_time; --- 519,528 ---- } + static struct timeval disarm_timer = { 0, 0 }; + /* will trigger alarm for one time only. */ void set_alarm(struct timeval alarm_time) { struct itimerval timer; timer.it_interval = alarm_time; *************** *** 524,527 **** --- 544,562 ---- } + void remove_alarm(void) + { + struct itimerval timer; + + timer.it_interval = disarm_timer; + timer.it_value = disarm_timer; + + setitimer(ITIMER_REAL, &timer, NULL); + + /* now make sure we don't have a pending SIGARLM. */ + remove_interrupt(SIGALRM); + + return; + } + /* sigio handling routine and variable. * we only need to use this on *BSD *************** *** 547,550 **** --- 582,586 ---- void track_sigio(void) { + have_io = 0; add_interrupt_handler(SIGIO, handle_sigio); return; *************** *** 553,560 **** int had_io(void) { ! if(have_io) { ! have_io = 0; ! return 1; ! } else ! return 0; } --- 589,592 ---- int had_io(void) { ! return have_io; } Index: dhcp-util.h =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-util.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** dhcp-util.h 19 Jun 2002 00:40:12 -0000 1.4 --- dhcp-util.h 19 Jun 2002 00:57:16 -0000 1.5 *************** *** 49,54 **** --- 49,56 ---- extern void block_interrupts(void); extern void add_interrupt_handler(int sigtype, void (*sighandler)(int)); + extern void remove_interrupt(int sig); extern int had_alarm(void); extern void set_alarm(struct timeval alarm_time); + extern void remove_alarm(void); extern void info_message(char *fmt, ...); extern char *splice_string(const char *s1, const char *s2); |