hxtools/sdevel/proc_stat_signal_decode

32 lines
939 B
Perl
Executable File

#!/usr/bin/perl
# SPDX-License-Identifier: MIT
#
# proc_stat_signal_decode - read /proc/stat signal status
# written by Jan Engelhardt, 2007
use strict;
my @signame = qw(HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE
ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM
PROF WINCH IO PWR SYS RTMIN RTMIN+1 RTMIN+2 RTMIN+3 RTMIN+4 RTMIN+5
RTMIN+6 RTMIN+7 RTMIN+8 RTMIN+9 RTMIN+10 RTMIN+11 RTMIN+12 RTMIN+13
RTMIN+14 RTMIN+15 RTMAX-14 RTMAX-13 RTMAX-12 RTMAX-11 RTMAX-10 RTMAX-9
RTMAX-8 RTMAX-7 RTMAX-6 RTMAX-5 RTMAX-4 RTMAX-3 RTMAX-2 RTMAX-1 RTMAX);
while (<>) {
s/^((?:Sig|Shd)\w+\s*:\s*)(\w{8})(\w{8})/"$1".&names($3, $2)/eg;
print;
}
sub names {
my $mask_lo = eval "0x".shift(@_);
my $mask_hi = eval "0x".shift(@_);
my $ret;
for (my $signal_num = 1; $signal_num <= 32; ++$signal_num) {
if ($mask_lo & (1 << ($signal_num - 1))) {
$ret .= $signame[$signal_num-1]." ";
}
}
return $ret;
}