The Pedigree Project 0.1
remap-file-pages-contract-test/contract.h
1#ifndef REMAP_FILE_PAGES_CONTRACT_H
2#define REMAP_FILE_PAGES_CONTRACT_H
3
4#include <errno.h>
5#include <stdint.h>
6#include <stdio.h>
7
8#include <sys/types.h>
9
10#define CHECK(condition) \
11 do { \
12 if (!(condition)) { \
13 fprintf(stderr, "%s:%d: %s (errno=%d)\n", __FILE__, __LINE__, #condition, errno); \
14 failed = 1; \
15 goto out; \
16 } \
17 } while (0)
18
19enum { RP_MEMFD, RP_RAMFS, RP_EXT2 };
20struct rp_file {
21 int fd;
22 int backend;
23 char path[128];
24};
25
26extern size_t rp_page;
27int rp_create(struct rp_file* file, int backend);
28int rp_open_alias(const struct rp_file* file);
29void rp_close(struct rp_file* file);
30unsigned char rp_pattern(size_t offset);
31int rp_matches(const volatile unsigned char* bytes, size_t offset, size_t length, int zero);
32int rp_contents(int fd, size_t offset, size_t length, int zero);
33int rp_size(int fd, size_t size);
34int rp_resident(void* address, size_t pages, unsigned bits, const char* stage);
35int rp_reap(pid_t child, int milliseconds);
36int rp_send(int fd, char byte);
37int rp_receive(int fd, char byte);
38int rp_fault(void* address, int signal, int write_access);
39int rp_limit(size_t bytes);
40int rp_unprivileged(void);
41int rp_offsets(void);
42int rp_admission(void);
43int rp_lifetime(void);
44int rp_locks(void);
45int rp_resize(void);
46
47#endif