tools/perf/scripts/perl/rwtop.pl

Source file repositories/reference/linux-study-clean/tools/perf/scripts/perl/rwtop.pl

File Facts

System
Linux kernel
Corpus path
tools/perf/scripts/perl/rwtop.pl
Extension
.pl
Size
4645 bytes
Lines
204
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: tools
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

if ($ret > 0) {
	$reads{$common_pid}{bytes_read} += $ret;
    } else {
	if (!defined ($reads{$common_pid}{bytes_read})) {
	    $reads{$common_pid}{bytes_read} = 0;
	}
	$reads{$common_pid}{errors}{$ret}++;
    }
}

sub syscalls::sys_enter_read
{
    my ($event_name, $context, $common_cpu, $common_secs, $common_nsecs,
	$common_pid, $common_comm, $common_callchain,
	$nr, $fd, $buf, $count) = @_;

    print_check();

    $reads{$common_pid}{bytes_requested} += $count;
    $reads{$common_pid}{total_reads}++;
    $reads{$common_pid}{comm} = $common_comm;
}

sub syscalls::sys_exit_write
{
    my ($event_name, $context, $common_cpu, $common_secs, $common_nsecs,
	$common_pid, $common_comm, $common_callchain,
	$nr, $ret) = @_;

    print_check();

    if ($ret <= 0) {
	$writes{$common_pid}{errors}{$ret}++;
    }
}

sub syscalls::sys_enter_write
{
    my ($event_name, $context, $common_cpu, $common_secs, $common_nsecs,
	$common_pid, $common_comm, $common_callchain,
	$nr, $fd, $buf, $count) = @_;

    print_check();

    $writes{$common_pid}{bytes_written} += $count;
    $writes{$common_pid}{total_writes}++;
    $writes{$common_pid}{comm} = $common_comm;
}

sub trace_begin
{
    my $sa = POSIX::SigAction->new(\&set_print_pending);
    $sa->flags(SA_RESTART);
    $sa->safe(1);
    POSIX::sigaction(SIGALRM, $sa) or die "Can't set SIGALRM handler: $!\n";
    alarm 1;
}

sub trace_end
{
    print_unhandled();
    print_totals();
}

sub print_check()
{
    if ($print_pending == 1) {
	$print_pending = 0;
	print_totals();
    }

Annotation

Implementation Notes