File Coverage

blib/lib/POSIX/RT/Signal.pm
Criterion Covered Total %
statement 34 34 100.0
branch 1 2 50.0
condition 1 3 33.3
subroutine 11 11 100.0
pod 2 2 100.0
total 49 52 94.2


line stmt bran cond sub pod time code
1             package POSIX::RT::Signal;
2             $POSIX::RT::Signal::VERSION = '0.019';
3 1     1   156915 use strict;
  1         3  
  1         74  
4 1     1   7 use warnings;
  1         7  
  1         60  
5              
6 1     1   6 use Exporter 'import';
  1         2  
  1         97  
7             our @EXPORT = qw/sigwaitinfo sigtimedwait sigwait sigqueue allocate_signal deallocate_signal/;
8             our %EXPORT_TAGS = (all => \@EXPORT);
9              
10 1     1   7 use Carp qw/croak/;
  1         4  
  1         75  
11 1     1   589 use POSIX qw//;
  1         11031  
  1         40  
12 1     1   9 use XSLoader;
  1         3  
  1         65  
13 1     1   665 use Signal::Info;
  1         899  
  1         64  
14 1     1   829 use threads::shared;
  1         1882  
  1         12  
15              
16             XSLoader::load(__PACKAGE__, __PACKAGE__->VERSION);
17              
18 1     1   974 my @signals : shared = (defined &POSIX::SIGRTMIN) ? (POSIX::SIGRTMIN() .. POSIX::SIGRTMAX()) : (POSIX::SIGUSR1(), POSIX::SIGUSR2());
  1         1662  
  1         274  
19              
20             my %allowed = map { ( $_ => 1 ) } @signals;
21              
22             sub allocate_signal {
23 3     3 1 463544 my ($priority) = @_;
24 3   33     15 return +($priority ? shift @signals : pop @signals) || croak 'no more signal numbers available';
25             }
26              
27             sub deallocate_signal {
28 1     1 1 1140 my ($signal) = @_;
29 1 50       7 croak 'Signal not from original set' if not $allowed{$signal};
30 1         8 @signals = sort { $a <=> $b } @signals, $signal;
  29         30  
31 1         2 return;
32             }
33              
34             1;
35              
36             #ABSTRACT: POSIX Real-time signal handling functions
37              
38             __END__