Skip to content

Exploration of verified paging using the Serval framework - Semester project by Michael Paper

Notifications You must be signed in to change notification settings

epfl-dcsl/serval-paging

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Servaled paging

C library handling page allocation and page mapping mechanisms. Intended to be proved correct by Serval.

How to prove with Serval

From the root directory of this repository, run the following commands:

docker run -it --name serval unsat/serval-tools:artifact

This will open a shell in the Serval container. Open another terminal and go to the root directory of this repository again, then run from there:

docker cp $(pwd) serval:/serval/racket/test

Then, from inside the Serval container :

cp /usr/riscv64-linux-gnu/include/gnu/stubs-lp64d.h /usr/riscv64-linux-gnu/include/gnu/stubs-lp64.h
cd /serval/racket/test/
cp servaled-paging/{src/all.c,include/all.h,specs/all.rkt} .
make -C ../../ raco-test

There should be 2 errors: they come from a missing library required by some of Serval's own tests. They can be ignored. Any other error should come from the allocation spec and implementation.

To make the verification faster, you can remove some of the verifications done on other Serval test files by replacing in /serval/racket/racket.mk :

RACO_TESTS      += $(wildcard racket/test/*.rkt)

by

override RACO_TESTS = racket/test/all.rkt

With only the tests of the allocation/paging library remaining, all tests should pass. Otherwise send me an email.

Directory structure

The headers are in include/ and the source files are in src/.

About

Exploration of verified paging using the Serval framework - Semester project by Michael Paper

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published