18 #ifndef _COBALT_POSIX_EXTENSION_H
19 #define _COBALT_POSIX_EXTENSION_H
21 #include <linux/time.h>
22 #include <linux/list.h>
24 #ifdef CONFIG_XENO_OPT_COBALT_EXTENSION
26 #include <cobalt/kernel/thread.h>
29 struct cobalt_sigpending;
33 union xnsched_policy_param;
35 struct cobalt_extension {
36 struct xnthread_personality core;
38 struct cobalt_thread *
39 (*timer_init)(
struct cobalt_extref *reftimer,
40 const struct sigevent *__restrict__ evp);
42 const struct itimerspec *__restrict__ value,
45 struct itimerspec *__restrict__ value);
47 int (*timer_cleanup)(
struct cobalt_extref *reftimer);
48 int (*signal_deliver)(
struct cobalt_extref *refthread,
50 struct cobalt_sigpending *sigp);
51 int (*signal_queue)(
struct cobalt_extref *refthread,
52 struct cobalt_sigpending *sigp);
53 int (*signal_copyinfo)(
struct cobalt_extref *refthread,
55 const struct siginfo *si,
57 int (*signal_copyinfo_compat)(
struct cobalt_extref *refthread,
59 const struct siginfo *si,
62 int (*thread_setsched)(
struct cobalt_extref *refthread,
63 struct xnsched_class *sched_class,
64 union xnsched_policy_param *param);
68 struct cobalt_extref {
69 struct cobalt_extension *extension;
70 struct list_head next;
74 static inline void cobalt_set_extref(
struct cobalt_extref *ref,
75 struct cobalt_extension *ext,
87 #define cobalt_initcall_extension(__extfn, __extref, __owner, __ret, __args...) \
90 if ((__owner) && (__owner)->extref.extension) { \
91 (__extref)->extension = (__owner)->extref.extension; \
92 if ((__extref)->extension->ops.__extfn) { \
93 (__ret) = (__extref)->extension->ops. \
94 __extfn(__extref, ##__args ); \
98 (__extref)->extension = NULL; \
102 #define cobalt_call_extension(__extfn, __extref, __ret, __args...) \
105 if ((__extref)->extension && \
106 (__extref)->extension->ops.__extfn) { \
107 (__ret) = (__extref)->extension->ops. \
108 __extfn(__extref, ##__args ); \
116 struct cobalt_extension;
118 struct cobalt_extref {
121 static inline void cobalt_set_extref(
struct cobalt_extref *ref,
122 struct cobalt_extension *ext,
127 #define cobalt_initcall_extension(__extfn, __extref, __owner, __ret, __args...) \
128 ({ (void)(__owner); (void)(__ret); 0; })
130 #define cobalt_call_extension(__extfn, __extref, __ret, __args...) \
131 ({ (void)(__ret); 0; })
int sched_yield(void)
Yield the processor.
Definition: sched.c:57
int timer_settime(timer_t timerid, int flags, const struct itimerspec *__restrict__ value, struct itimerspec *__restrict__ ovalue)
Start or stop a timer.
Definition: timer.c:165
int timer_gettime(timer_t timerid, struct itimerspec *value)
Get timer next expiration date and reload value.
Definition: timer.c:208
int timer_delete(timer_t timerid)
Delete a timer object.
Definition: timer.c:105