18 #ifndef _COBALT_POSIX_SIGNAL_H 19 #define _COBALT_POSIX_SIGNAL_H 21 #include <linux/signal.h> 22 #include <cobalt/kernel/timer.h> 23 #include <cobalt/kernel/list.h> 24 #include <cobalt/uapi/signal.h> 25 #include <xenomai/posix/syscall.h> 29 struct cobalt_sigpending {
31 struct list_head next;
35 void cobalt_copy_siginfo(
int code,
36 struct siginfo *__restrict__ dst,
37 const struct siginfo *__restrict__ src)
39 dst->si_signo = src->si_signo;
40 dst->si_errno = src->si_errno;
45 dst->si_tid = src->si_tid;
46 dst->si_overrun = src->si_overrun;
47 dst->si_value = src->si_value;
51 dst->si_value = src->si_value;
54 dst->si_pid = src->si_pid;
55 dst->si_uid = src->si_uid;
59 int __cobalt_sigwait(sigset_t *
set);
61 int __cobalt_sigtimedwait(sigset_t *
set,
62 const struct timespec *timeout,
66 int __cobalt_sigwaitinfo(sigset_t *
set,
70 int __cobalt_sigqueue(pid_t pid,
int sig,
const union sigval *value);
72 int cobalt_signal_send(
struct cobalt_thread *thread,
73 struct cobalt_sigpending *sigp,
76 int cobalt_signal_send_pid(pid_t pid,
77 struct cobalt_sigpending *sigp);
79 struct cobalt_sigpending *cobalt_signal_alloc(
void);
81 void cobalt_signal_free(
struct cobalt_sigpending *sigp);
83 void cobalt_signal_flush(
struct cobalt_thread *thread);
85 int cobalt_signal_wait(sigset_t *
set,
struct siginfo *si,
86 xnticks_t timeout, xntmode_t tmode);
88 int __cobalt_kill(
struct cobalt_thread *thread,
91 COBALT_SYSCALL_DECL(sigwait,
92 (
const sigset_t __user *u_set,
int __user *u_sig));
94 COBALT_SYSCALL_DECL(sigtimedwait,
95 (
const sigset_t __user *u_set,
96 struct siginfo __user *u_si,
97 const struct timespec __user *u_timeout));
99 COBALT_SYSCALL_DECL(sigwaitinfo,
100 (
const sigset_t __user *u_set,
101 struct siginfo __user *u_si));
103 COBALT_SYSCALL_DECL(sigpending,
104 (old_sigset_t __user *u_set));
106 COBALT_SYSCALL_DECL(kill, (pid_t pid,
int sig));
108 COBALT_SYSCALL_DECL(sigqueue,
109 (pid_t pid,
int sig,
const union sigval __user *u_value));
111 int cobalt_signal_init(
void);