PKUOS - Pintos
Pintos source browser for PKU Operating System course
Macros | Functions | Variables
mmap-shuffle.c File Reference
#include <stdio.h>
#include <string.h>
#include <syscall.h>
#include "tests/arc4.h"
#include "tests/cksum.h"
#include "tests/lib.h"
#include "tests/main.h"
Include dependency graph for mmap-shuffle.c:

Go to the source code of this file.

Macros

#define SIZE   (128 * 1024)
 Creates a 128 kB file and repeatedly shuffles data in it through a memory mapping. More...
 

Functions

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

Variables

static char * buf = (char *) 0x10000000
 

Macro Definition Documentation

◆ SIZE

#define SIZE   (128 * 1024)

Creates a 128 kB file and repeatedly shuffles data in it through a memory mapping.

Definition at line 12 of file mmap-shuffle.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 17 of file mmap-shuffle.c.

References buf, CHECK, cksum(), create(), MAP_FAILED, mmap(), msg(), open(), shuffle(), and SIZE.

Here is the call graph for this function:

Variable Documentation

◆ buf

char* buf = (char *) 0x10000000
static

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

Referenced by test_main().