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>
29struct cobalt_sigpending;
33union xnsched_policy_param;
35struct cobalt_extension {
36 struct xnthread_personality core;
38 struct cobalt_thread *
39 (*timer_init)(
struct cobalt_extref *reftimer,
40 const struct sigevent *__restrict__ evp);
41 int (*timer_settime)(
struct cobalt_extref *reftimer,
42 const struct itimerspec64 *__restrict__ value,
44 int (*timer_gettime)(
struct cobalt_extref *reftimer,
45 struct itimerspec64 *__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);
69 struct cobalt_extension *extension;
70 struct list_head next;
74static 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 ); \
116struct cobalt_extension;
118struct cobalt_extref {
121static 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:52
int timer_delete(timer_t timerid))
Delete a timer object.
Definition timer.c:106