citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

mem_unix.pm (448B)


      1 package mem;
      2 
      3 use Modern::Perl;
      4 use POSIX;
      5 use Sys::Mmap;
      6 use autodie;
      7 
      8 our $os_allocsize = POSIX::sysconf(POSIX::_SC_PAGESIZE);
      9 
     10 sub get_mem {
     11 	my ($self) = @_;
     12 
     13 	my $procfile = "/tmp/citrun.out";
     14 	open( my $fh, "<", $procfile );
     15 
     16 	$self->{mem} = '';
     17 	mmap( $self->{mem}, 0, PROT_READ, MAP_SHARED, $fh ) or die "mmap: $!";
     18 	$self->{size} = length $self->{mem};
     19 
     20 	close $fh;
     21 
     22 	# Consumer of /tmp/citrun.out must remove it.
     23 	unlink $procfile;
     24 }
     25 
     26 1;