The Pedigree Project 0.1
memfd-contract-test/contract.h
1#ifndef MEMFD_CONTRACT_H
2#define MEMFD_CONTRACT_H
3#include <errno.h>
4#include <fcntl.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#define MEMFD_APP "/applications/memfd-contract-test"
19
20int64_t mf_now(void);
21void mf_pause(int milliseconds);
22int mf_wait(volatile int* flag, int milliseconds);
23int mf_reap(pid_t child, int milliseconds);
24int mf_byte(int socket, char expected);
25int mf_send_fd(int socket, int fd);
26int mf_receive_fd(int socket);
27int mf_make(size_t bytes);
28int mf_size(int fd, off_t expected);
29int mf_contents(int fd, off_t offset, const void* expected, size_t length);
30int memfd_creation(void);
31int memfd_seals(void);
32int memfd_mappings(void);
33int memfd_lifetime(void);
34int memfd_races(void);
35int memfd_exec(int argc, char** argv);
36#endif