PKUOS - Pintos
Pintos source browser for PKU Operating System course
Functions | Variables
mmap-over-data.c File Reference
#include <stdint.h>
#include <round.h>
#include <syscall.h>
#include "tests/lib.h"
#include "tests/main.h"
Include dependency graph for mmap-over-data.c:

Go to the source code of this file.

Functions

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

Variables

static char x
 Verifies that mapping over the data segment is disallowed. More...
 

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 12 of file mmap-over-data.c.

References CHECK, MAP_FAILED, mmap(), open(), ROUND_DOWN, and x.

Here is the call graph for this function:

Variable Documentation

◆ x

char x
static

Verifies that mapping over the data segment is disallowed.

Definition at line 9 of file mmap-over-data.c.

Referenced by bcd_to_bin(), clear_row(), find_cursor(), format_integer(), is_power_of_2(), nlz(), test_main(), and turn_off_least_1bit().