Sophie

Sophie

distrib > Mageia > 3 > i586 > by-pkgid > 323967fcbf524f258c45f1ff39d3dd62 > files > 16

perl-GTop-0.180.0-2.mga3.i586.rpm

#!perl

#port of libgtop-x.xx/examples/mountlist.c

use strict;
use ExtUtils::testlib;
use GTop ();

my $gtop = GTop->new;

my $pid = shift || $$;

printf STDERR "Getting memory maps for pid %d.\n\n", $pid;

my($procmap, $maps) = $gtop->proc_map($pid);
my $number = $procmap->number;

for (my $i = 0; $i < $number; $i++) {
    my $filename = $maps->filename($i) || "-";
    my $perm = $maps->perm_string($i);
    my $device = $maps->device($i);;
    my $device_minor = ($device & 255);
    my $device_major = (($device >> 8) & 255);
    my $ptr_size = length pack("p", 0);
    if ($filename) {
	my $format;
	if ($ptr_size == 8) {
	    $format = "%016lx-%016lx %016lx - " .
		      "%02x:%02x %08lu - %4s - %s\n";
	}
	else {
	    $format = "%08lx-%08lx %08lx - " .
		      "%02x:%02x %08lu - %4s - %s\n";
	}
	printf STDERR $format,
	    $maps->start($i),
	    $maps->end($i),
	    $maps->offset($i),
	    $device_major, $device_minor,
	    $maps->inode($i),
	    $perm, $filename;

    } 
    else {
	my $format;

	if ($ptr_size == 8) {
	    $format = "%016lx-%016lx %016lx - " .
		      "%02x:%02x %08lu - %4s\n";
	}
	else {
	    $format = "%08lx-%08lx %08lx - " .
		      "%02x:%02x %08lu - %4s\n";

	    printf STDERR $format,
		$maps->start($i),
		$maps->end($i),
		$maps->offset($i),
		$device_major, $device_minor,
		$maps->inode($i),
		$perm;
	}
    }	
}