sub _bsd_size_check { # kB = kilobytes, kBt = kilobytes * ticks (of CPU): my( $userSecs, $sysSecs, $res_kB, $shared_kBt, $data_kBt, $stack_kBt )= BSD::Resource::getrusage(); my @next; do { # keep refetching until one clock tick passes @next= BSD::Resource::getrusage(); } while( $data_kBt == $next[4] ); # Compute the differences between the two results: for( $userSecs, $sysSecs, $res_kB, $shared_kBt, $data_kBt, $stack_kBt ) { $_= shift(@next) - $_; } my $ticks= ( $userSecs + $sysSecs ) * 128; my $shared_kB= $shared_kBt / $ticks; my $unshared_kB= ( $data_kBt + $stack_kBt ) / $ticks; return( $unshared_kB + $shared_kB, $shared_kB ); }