The Pedigree Project
0.1
src
user
applications
pipe-transfer-contract-test
pipe-transfer-contract-test/contract.h
1
#ifndef PIPE_TRANSFER_CONTRACT_H
2
#define PIPE_TRANSFER_CONTRACT_H
3
#include <errno.h>
4
#include <fcntl.h>
5
#include <pthread.h>
6
#include <stdint.h>
7
#include <stdio.h>
8
9
#include <sys/types.h>
10
#include <sys/uio.h>
11
12
#define CHECK(condition) \
13
do { \
14
if (!(condition)) { \
15
fprintf(stderr, "%s:%d: %s (errno=%d)\n", __FILE__, __LINE__, #condition, errno); \
16
failed = 1; \
17
goto out; \
18
} \
19
} while (0)
20
enum
{ PT_SPLICE, PT_TEE, PT_VMSPLICE, PT_CAPACITY = 4096, PT_FILLER = -1 };
21
struct
pt_call
{
22
int
kind, input, output;
23
off_t *input_offset, *output_offset;
24
size_t
count;
25
unsigned
flags;
26
struct
iovec* vectors;
27
size_t
vector_count;
28
volatile
int
ready, gate, entered, done;
29
ssize_t result;
30
int
error;
31
};
32
int64_t pt_now(
void
);
33
void
pt_pause(
int
milliseconds);
34
int
pt_wait(
volatile
int
* flag,
int
milliseconds);
35
int
pt_reap(pid_t child,
int
milliseconds);
36
int
pt_ready(
int
fd,
short
events,
int
milliseconds);
37
int
pt_wait_readiness(
int
fd,
short
events,
int
expected);
38
unsigned
char
pt_pattern(
size_t
offset,
int
seed);
39
int
pt_fill(
int
fd,
size_t
count,
int
seed);
40
int
pt_read(
int
fd,
size_t
count,
size_t
source_offset,
int
seed);
41
int
pt_file(
size_t
count,
int
seed);
42
int
pt_verify(
int
fd, off_t offset,
size_t
count,
size_t
source_offset,
int
seed);
43
ssize_t pt_socket_full(
int
fd);
44
int
pt_send_fd(
int
socket,
int
fd);
45
int
pt_receive_fd(
int
socket);
46
void
* pt_worker(
void
* argument);
47
int
pt_join(pthread_t
worker
,
struct
pt_call
* call);
48
void
pt_diagnostic(
const
struct
pt_call
* call);
49
int
pipe_transfer_splice(
void
);
50
int
pipe_transfer_tee(
void
);
51
int
pipe_transfer_vmsplice(
void
);
52
int
pipe_transfer_lifetime(
void
);
53
int
pipe_transfer_readiness(
void
);
54
int
pipe_transfer_concurrency(
void
);
55
#endif
pt_call
Definition
pipe-transfer-contract-test/contract.h:21
worker
Definition
ramfs-inode-contract-test/main.c:51
Generated on Tue Sep 29 2026 04:30:13 for The Pedigree Project by
1.9.8