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,
58 int (*thread_setsched)(
struct cobalt_extref *refthread,
59 struct xnsched_class *sched_class,
60 union xnsched_policy_param *param);
64 struct cobalt_extref {
65 struct cobalt_extension *extension;
66 struct list_head next;
70 static inline void cobalt_set_extref(
struct cobalt_extref *ref,
71 struct cobalt_extension *ext,
83 #define cobalt_initcall_extension(__extfn, __extref, __owner, __ret, __args...) \
86 if ((__owner) && (__owner)->extref.extension) { \
87 (__extref)->extension = (__owner)->extref.extension; \
88 if ((__extref)->extension->ops.__extfn) { \
89 (__ret) = (__extref)->extension->ops. \
90 __extfn(__extref, ##__args ); \
94 (__extref)->extension = NULL; \
98 #define cobalt_call_extension(__extfn, __extref, __ret, __args...) \
101 if ((__extref)->extension && \
102 (__extref)->extension->ops.__extfn) { \
103 (__ret) = (__extref)->extension->ops. \
104 __extfn(__extref, ##__args ); \
112 struct cobalt_extension;
114 struct cobalt_extref {
117 static inline void cobalt_set_extref(
struct cobalt_extref *ref,
118 struct cobalt_extension *ext,
123 #define cobalt_initcall_extension(__extfn, __extref, __owner, __ret, __args...) \
124 ({ (void)(__owner); (void)(__ret); 0; })
126 #define cobalt_call_extension(__extfn, __extref, __ret, __args...) \
127 ({ (void)(__ret); 0; })
int sched_yield(void)
Yield the processor.
Definition: thread.c:800
int timer_gettime(timer_t timerid, struct itimerspec *value)
Get timer next expiration date and reload value.
Definition: timer.c:202
int timer_delete(timer_t timerid)
Delete a timer object.
Definition: timer.c:102
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:161