File: proc_stat_signal_decode

package info (click to toggle)
hxtools 20221119-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,760 kB
  • sloc: ansic: 5,114; perl: 3,612; cpp: 2,727; sh: 1,622; makefile: 156
file content (31 lines) | stat: -rwxr-xr-x 939 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/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;
}