19 #ifndef _COPPERPLATE_SEMOBJ_H 20 #define _COPPERPLATE_SEMOBJ_H 22 #include <boilerplate/compiler.h> 23 #include <copperplate/reference.h> 25 struct semobj_waitentry {
30 #ifdef CONFIG_XENO_COBALT 32 #include <semaphore.h> 34 struct semobj_corespec {
40 #include <copperplate/syncobj.h> 42 struct semobj_corespec {
51 struct semobj_corespec core;
52 fnref_type(
void (*)(
struct semobj *smobj)) finalizer;
55 #define SEMOBJ_PRIO 0x1 56 #define SEMOBJ_PULSE 0x2 57 #define SEMOBJ_WARNDEL 0x4 63 int semobj_init(
struct semobj *smobj,
65 fnref_type(
void (*)(
struct semobj *smobj)) finalizer);
67 int semobj_destroy(
struct semobj *smobj);
69 void semobj_uninit(
struct semobj *smobj);
71 int semobj_post(
struct semobj *smobj);
73 int semobj_broadcast(
struct semobj *smobj);
75 int semobj_wait(
struct semobj *smobj,
76 const struct timespec *timeout) __must_check;
78 int semobj_getvalue(
struct semobj *smobj,
int *sval);
80 int semobj_inquire(
struct semobj *smobj,
size_t waitsz,
81 struct semobj_waitentry *waitlist,