File: proc_stat_signal_decode

package info (click to toggle)
hxtools 20201116-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,696 kB
  • sloc: ansic: 5,074; perl: 3,589; cpp: 2,152; sh: 1,610; asm: 173; makefile: 153
file content (35 lines) | stat: -rwxr-xr-x 1,049 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
32
33
34
35
#!/usr/bin/perl
#
#	proc_stat_signal_decode
#	written by Jan Engelhardt, 2007
#
#	This program is free software; you can redistribute it and/or
#	modify it under the terms of the WTF Public License version 2 or
#	(at your option) any later version.
#

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;
}