PKUOS - Pintos
Pintos source browser for PKU Operating System course
Macros | Functions
mmap-write.c File Reference
#include <string.h>
#include <syscall.h>
#include "tests/vm/sample.inc"
#include "tests/lib.h"
#include "tests/main.h"
Include dependency graph for mmap-write.c:

Go to the source code of this file.

Macros

#define ACTUAL   ((void *) 0x10000000)
 Writes to a file through a mapping, and unmaps the file, then reads the data in the file back using the read system call to verify. More...
 

Functions

void test_main (void)
 tests/main.h More...
 

Macro Definition Documentation

◆ ACTUAL

#define ACTUAL   ((void *) 0x10000000)

Writes to a file through a mapping, and unmaps the file, then reads the data in the file back using the read system call to verify.

Definition at line 11 of file mmap-write.c.

Function Documentation

◆ test_main()

void test_main ( void  )

tests/main.h

tests/main.h

tests/main.h

This must fail, because that directory is non-empty.

tests/main.h

This must fail.

tests/main.h

Then delete most of them, for two reasons. First, "tar" limits file names to 100 characters (which could be extended to 256 without much trouble). Second, a full disk has no room for the tar archive.

tests/main.h

This should terminate the process with a -1 exit code.

tests/main.h

Sets the stack pointer (esp) to an invalid value and invokes a system call, which should then terminate the process with a -1 exit code.

tests/main.h

The second close must either fail silently or terminate with exit code -1.

tests/main.h

This is valid, so it must succeed.

tests/main.h

The process must be terminated with exit code -1.

tests/main.h

The process must be terminated with -1 exit code.

tests/main.h

Must kill process.

tests/main.h

The exec system call must return -1.

tests/main.h

(Pintos does not have inheritance of file handles, so this must fail.) The parent process then attempts to use the file handle, which must succeed.

tests/main.h

The process must be terminated with -1 exit code because the argument to the system call would be above the top of the user address space.

tests/main.h

The process must be terminated with -1 exit code.

For Project 3: The bad address lies approximately 64MB below the code segment, so there is no ambiguity that this attempt must be rejected even after stack growth is implemented. Moreover, a good stack growth heuristics should probably not grow the stack for the purpose of reading the system call number and arguments.

tests/main.h

This must work.

tests/main.h

This may fail or terminate the process with -1 exit code.

tests/main.h

The first call must wait in the usual way and return the exit code. The second wait call must return -1 immediately.

tests/main.h

Tries to write to a mapping present in the parent. The process must be terminated with -1 exit code.

Definition at line 14 of file mmap-write.c.

References ACTUAL, buf, CHECK, close(), create(), MAP_FAILED, memcmp(), memcpy(), mmap(), munmap(), open(), read(), and strlen().

Here is the call graph for this function: