ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Async-Interrupt/Interrupt.pm
(Generate patch)

Comparing Async-Interrupt/Interrupt.pm (file contents):
Revision 1.21 by root, Thu Jul 30 03:59:47 2009 UTC vs.
Revision 1.28 by root, Wed Nov 23 02:33:48 2011 UTC

233use common::sense; 233use common::sense;
234 234
235BEGIN { 235BEGIN {
236 # the next line forces initialisation of internal 236 # the next line forces initialisation of internal
237 # signal handling variables, otherwise, PL_sig_pending 237 # signal handling variables, otherwise, PL_sig_pending
238 # etc. will be null pointers. 238 # etc. might be null pointers.
239 $SIG{KILL} = sub { }; 239 $SIG{KILL} = sub { };
240 240
241 our $VERSION = '1.0'; 241 our $VERSION = '1.05';
242 242
243 require XSLoader; 243 require XSLoader;
244 XSLoader::load ("Async::Interrupt", $VERSION); 244 XSLoader::load ("Async::Interrupt", $VERSION);
245} 245}
246 246
432When you expect a lot of signals (e.g. when using SIGIO), then enabling 432When you expect a lot of signals (e.g. when using SIGIO), then enabling
433signal hysteresis can reduce the number of handler invocations 433signal hysteresis can reduce the number of handler invocations
434considerably, at the cost of two extra syscalls. 434considerably, at the cost of two extra syscalls.
435 435
436Note that setting the signal to C<SIG_IGN> can have unintended side 436Note that setting the signal to C<SIG_IGN> can have unintended side
437effects when you fork and exec other programs, as often they do nto expect 437effects when you fork and exec other programs, as often they do not expect
438signals to be ignored by default. 438signals to be ignored by default.
439 439
440=item $async->block 440=item $async->block
441 441
442=item $async->unblock 442=item $async->unblock
536 536
537=back 537=back
538 538
539=head1 THE Async::Interrupt::EventPipe CLASS 539=head1 THE Async::Interrupt::EventPipe CLASS
540 540
541Pipes are the predominent utility to make asynchronous signals 541Pipes are the predominant utility to make asynchronous signals
542synchronous. However, pipes are hard to come by: they don't exist on the 542synchronous. However, pipes are hard to come by: they don't exist on the
543broken windows platform, and on GNU/Linux systems, you might want to use 543broken windows platform, and on GNU/Linux systems, you might want to use
544an C<eventfd> instead. 544an C<eventfd> instead.
545 545
546This class creates selectable event pipes in a portable fashion: on 546This class creates selectable event pipes in a portable fashion: on
576 576
577=item $epipe->drain 577=item $epipe->drain
578 578
579Drain (empty) the pipe. 579Drain (empty) the pipe.
580 580
581=item ($c_func, $c_arg) = $epipe->signal_func
582
581=item ($c_func, $c_arg) = $epipe->drain_func 583=item ($c_func, $c_arg) = $epipe->drain_func
582 584
583Returns a function pointer and C<void *> argument that can be called to 585These two methods returns a function pointer and C<void *> argument
584have the effect of C<< $epipe->drain >> on the XS level. 586that can be called to have the effect of C<< $epipe->signal >> or C<<
587$epipe->drain >>, respectively, on the XS level.
585 588
586It has the following prototype and needs to be passed the specified 589They both have the following prototype and need to be passed their
587C<$c_arg>, which is a C<void *> cast to C<IV>: 590C<$c_arg>, which is a C<void *> cast to an C<IV>:
588 591
589 void (*c_func) (void *c_arg) 592 void (*c_func) (void *c_arg)
590 593
591An example call would look like: 594An example call would look like:
592 595

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines