19#ifndef _COPPERPLATE_SEMOBJ_H
20#define _COPPERPLATE_SEMOBJ_H
22#include <boilerplate/compiler.h>
23#include <copperplate/reference.h>
25struct semobj_waitentry {
30#ifdef CONFIG_XENO_COBALT
34struct semobj_corespec {
40#include <copperplate/syncobj.h>
42struct 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
63int semobj_init(
struct semobj *smobj,
65 fnref_type(
void (*)(
struct semobj *smobj)) finalizer);
67int semobj_destroy(
struct semobj *smobj);
69void semobj_uninit(
struct semobj *smobj);
71int semobj_post(
struct semobj *smobj);
73int semobj_broadcast(
struct semobj *smobj);
75int semobj_wait(
struct semobj *smobj,
76 const struct timespec *timeout) __must_check;
78int semobj_getvalue(
struct semobj *smobj,
int *sval);
80int semobj_inquire(
struct semobj *smobj,
size_t waitsz,
81 struct semobj_waitentry *waitlist,