1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/*
* contract_linux_stubs.c — Linux stub implementations for Hammerhead libcontract FFI
*
* These stubs allow zyginit to compile and link on Linux for development.
* All functions return error codes indicating contracts are not available.
* On Hammerhead, DO NOT compile this file — link with -lcontract instead.
*/
#include <stddef.h>
/* Template management */
int ct_tmpl_activate(int fd) { return -1; }
int ct_tmpl_clear(int fd) { return -1; }
int ct_tmpl_set_informative(int fd, int events) { return -1; }
int ct_tmpl_set_critical(int fd, int events) { return -1; }
/* Process contract template */
int ct_pr_tmpl_set_fatal(int fd, int events) { return -1; }
int ct_pr_tmpl_set_param(int fd, int params) { return -1; }
/* Contract status */
int ct_status_read(int fd, int detail, void **statp) { return -1; }
void ct_status_free(void *stathdl) { }
int ct_status_get_id(void *stathdl) { return -1; }
int ct_status_get_holder(void *stathdl) { return -1; }
int ct_status_get_state(void *stathdl) { return -1; }
int ct_pr_status_get_members(void *stathdl, void **members, unsigned int *n) {
(void)stathdl;
if (members != NULL) *members = NULL;
if (n != NULL) *n = 0;
return 0;
}
/* Contract control */
int ct_ctl_abandon(int fd) { return -1; }
int ct_ctl_adopt(int fd) { return -1; }
/* Contract events */
int ct_event_read(int fd, void **evtp) { return -1; }
void ct_event_free(void *evthdl) { }
int ct_event_get_ctid(void *evthdl) { return -1; }
int ct_event_get_type(void *evthdl) { return -1; }
int ct_event_get_flags(void *evthdl) { return -1; }
/* Process contract event details */
int ct_pr_event_get_exitstatus(void *evthdl, int *status) { return -1; }
int ct_pr_event_get_pid(void *evthdl, int *pid) { return -1; }
/* POSIX — sigsend (Hammerhead-specific) */
int sigsend(int idtype, int id, int sig) { return -1; }
|