1#ifndef XATTR_CONTRACT_H
2#define XATTR_CONTRACT_H
10#define CHECK(condition) \
13 fprintf(stderr, "%s:%d: %s (errno=%d)\n", __FILE__, __LINE__, #condition, errno); \
19enum { XA_MEMFD, XA_RAMFS, XA_EXT2 };
20enum { XA_PATH, XA_LINK, XA_FD };
29extern size_t xa_block;
31int xa_reap(pid_t child,
int milliseconds);
32int xa_send(
int fd,
char byte);
33int xa_receive(
int fd,
char expected);
34int xa_read_all(
int fd,
void* buffer,
size_t length);
35int xa_write_all(
int fd,
const void* buffer,
size_t length);
36int xa_create(
struct xa_file* file,
int backend,
int directory);
37int xa_open_alias(
const struct xa_file* file);
38void xa_close(
struct xa_file* file);
39int xa_set(
const struct xa_file* file,
int how,
const char* name,
const void* value,
size_t size,
41ssize_t xa_get(
const struct xa_file* file,
int how,
const char* name,
void* value,
size_t size);
42ssize_t xa_list(
const struct xa_file* file,
int how,
char* names,
size_t size);
43int xa_remove(
const struct xa_file* file,
int how,
const char* name);
44int xa_value(
const struct xa_file* file,
int how,
const char* name,
const void* value,
size_t size);
45int xa_names(
const struct xa_file* file,
int how,
const char*
const* names,
size_t count);
46int xa_unprivileged(uid_t uid, gid_t gid,
const gid_t* groups,
size_t count);
48int xa_admission(
void);
49int xa_permissions(
void);
51int xa_concurrency(
void);
54int xa_persistence(
const char* base,
const char* token,
int write_stage);