[SOLVED] CS代考计算机代写 /* Verifies that mmap’d regions are only written back on munmap

30 $

File Name: CS代考计算机代写_/*_Verifies_that_mmap’d_regions_are_only_written_back_on_munmap.zip
File Size: 838.38 KB

SKU: 4991493680 Category: Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Or Upload Your Assignment Here:


/* Verifies that mmap’d regions are only written back on munmap
if the data was actually modified in memory. */

#include
#include
#include “tests/vm/sample.inc”
#include “tests/lib.h”
#include “tests/main.h”

void
test_main (void)
{
static const char overwrite[] = “Now is the time for all good…”;
static char buffer[sizeof sample – 1];
char *actual = (char *) 0x54321000;
int handle;
mapid_t map;

/* Open file, map, verify data. */
CHECK ((handle = open (“sample.txt”)) > 1, “open ”sample.txt””);
CHECK ((map = mmap (handle, actual)) != MAP_FAILED, “mmap ”sample.txt””);
if (memcmp (actual, sample, strlen (sample)))
fail (“read of mmap’d file reported bad data”);

/* Modify file. */
CHECK (write (handle, overwrite, strlen (overwrite))
== (int) strlen (overwrite),
“write ”sample.txt””);

/* Close mapping.Data should not be written back, because we
didn’t modify it via the mapping. */
msg (“munmap ”sample.txt””);
munmap (map);

/* Read file back. */
msg (“seek ”sample.txt””);
seek (handle, 0);
CHECK (read (handle, buffer, sizeof buffer) == sizeof buffer,
“read ”sample.txt””);

/* Verify that file overwrite worked. */
if (memcmp (buffer, overwrite, strlen (overwrite))
|| memcmp (buffer + strlen (overwrite), sample + strlen (overwrite),
strlen (sample) – strlen (overwrite)))
{
if (!memcmp (buffer, sample, strlen (sample)))
fail (“munmap wrote back clean page”);
else
fail (“read surprising data from file”);
}
else
msg (“file change was retained after munmap”);
}

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] CS代考计算机代写 /* Verifies that mmap’d regions are only written back on munmap
30 $