File Coverage

blib/lib/Sys/SigAction/Alarm.pm
Criterion Covered Total %
statement 20 20 100.0
branch 2 2 100.0
condition 2 3 66.6
subroutine 7 7 100.0
pod 0 2 0.0
total 31 34 91.1


line stmt bran cond sub pod time code
1              
2             package Sys::SigAction::Alarm;
3             require 5.005;
4 8     8   126979 use strict;
  8         16  
  8         380  
5 8     8   57 use warnings;
  8         13  
  8         538  
6 8     8   42 use vars qw( @ISA @EXPORT_OK );
  8         12  
  8         929  
7             require Exporter;
8             @ISA = qw( Exporter );
9             @EXPORT_OK = qw( ssa_alarm );
10 8     8   43 my $have_hires = scalar eval 'use Time::HiRes; Time::HiRes::ualarm(0); 1;';
  8         15  
  8         113  
11 8     8   426 use POSIX qw( INT_MAX ceil ) ;
  8         7852  
  8         45  
12             my $hrworks;
13             sub ssa_alarm($)
14             {
15 14     14 0 32 my $secs = shift;
16             #print print "secs=$secs\n";
17              
18 14 100 66     106 if ( $hrworks and ($secs <= (INT_MAX()/1_000_000.0) ) )
19             {
20 13         139 Time::HiRes::ualarm( $secs * 1_000_000 );
21             }
22             else
23             {
24 1         36 alarm( ceil( $secs ) );
25             }
26             }
27              
28 2     2 0 192628 sub hires_works { return $hrworks; }; #test support
29              
30             $hrworks = 1; 1;