#!/usr/bin/perl -w

# diffint -- look at /proc/interrupts twice and print the differences
# -- useful for getting a quick summary of what devices are active

use strict;

my $SLEEP = 30;

sub get_ints ()
{
    my $x = shift;
    my %ih;
    
    open PI, "</proc/interrupts" or die;
    
    while (my $line = <PI>) {
	if ($line =~ /^\s+([0-9]+):\s+([0-9]+)\s+XT-PIC\s+([0-9A-Za-z\-\/\ ]+)\s+$/) {
	    $ih{$3} = $2;
	    #printf "$3 $2\n";
	}
    }

    close PI;

    return %ih;
}

my %ints_before;
my %ints_after;

%ints_before = get_ints ();
system "sleep $SLEEP";
%ints_after = get_ints ();

print "interrupts per second:\n";
foreach my $a (sort keys %ints_after) {
    my $n = 1.0 * $ints_after{$a} - $ints_before{$a};
    $n /= $SLEEP;
    print "  $a : $n\n";
}


syntax highlighted by Code2HTML, v. 0.9.1