ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.c
(Generate patch)

Comparing libev/ev.c (file contents):
Revision 1.33 by root, Thu Nov 1 11:11:22 2007 UTC vs.
Revision 1.34 by root, Thu Nov 1 11:43:11 2007 UTC

323/*****************************************************************************/ 323/*****************************************************************************/
324 324
325typedef struct 325typedef struct
326{ 326{
327 struct ev_signal *head; 327 struct ev_signal *head;
328 sig_atomic_t gotsig; 328 sig_atomic_t volatile gotsig;
329} ANSIG; 329} ANSIG;
330 330
331static ANSIG *signals; 331static ANSIG *signals;
332static int signalmax; 332static int signalmax;
333 333
334static int sigpipe [2]; 334static int sigpipe [2];
335static sig_atomic_t gotsig; 335static sig_atomic_t volatile gotsig;
336static struct ev_io sigev; 336static struct ev_io sigev;
337 337
338static void 338static void
339signals_init (ANSIG *base, int count) 339signals_init (ANSIG *base, int count)
340{ 340{
353 signals [signum - 1].gotsig = 1; 353 signals [signum - 1].gotsig = 1;
354 354
355 if (!gotsig) 355 if (!gotsig)
356 { 356 {
357 gotsig = 1; 357 gotsig = 1;
358 write (sigpipe [1], &gotsig, 1); 358 write (sigpipe [1], &signum, 1);
359 } 359 }
360} 360}
361 361
362static void 362static void
363sigcb (struct ev_io *iow, int revents) 363sigcb (struct ev_io *iow, int revents)
364{ 364{
365 struct ev_signal *w; 365 struct ev_signal *w;
366 int sig; 366 int sig;
367 367
368 read (sigpipe [0], &revents, 1);
368 gotsig = 0; 369 gotsig = 0;
369 read (sigpipe [0], &revents, 1);
370 370
371 for (sig = signalmax; sig--; ) 371 for (sig = signalmax; sig--; )
372 if (signals [sig].gotsig) 372 if (signals [sig].gotsig)
373 { 373 {
374 signals [sig].gotsig = 0; 374 signals [sig].gotsig = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines