11#include <kernel/spinlock.h>
12#include <kernel/atomic.h>
17#include <sys/signal.h>
20#include <kernel/arch/i686/signal.h>
27#define SIGNAL_MAX (SIGNAL_COUNT - 1)
28#define SIGNAL_COUNT NSIG
36struct signal_context {
53static inline void signal_queue_init(
struct signal_queue *queue)
55 INIT_SPINLOCK(queue->lock);
56 INIT_LLIST(queue->signals);
63 struct sigaction sa_action;
71 struct signal_action sig_actions[SIGNAL_COUNT];
80 ucontext_t *p_ucontext;
87void signal_set_free(
struct signal_set *set);
90struct signal_set *signal_set_clone(
struct signal_set *set);
93void signal_set_reset(
struct signal_set *set);
95struct signal_context *signal_queue_pop(
struct signal_queue *queue,
99size_t signal_queue_flush(
struct signal_queue *queue);
101void signal_deliver(
struct thread *
thread,
struct signal_context *sig_ctx);
106error_t signal_process(
struct process *
process,
const siginfo_t *sig_info);
111error_t signal_thread(
struct thread *
thread,
const siginfo_t *sig_info);
117error_t arch_signal_deliver_catch(
struct thread *,
const struct signal_action *,
118 const struct signal_context *);
The head of a doubly linked list.
Definition: linked_list.h:43
Intrusive doubly-linked list node.
Definition: linked_list.h:27
A single process.
Definition: process.h:86
Spinlock.
Definition: spinlock.h:29
A single thread.
Definition: process.h:149