X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/87067c7f16425837971f5c1b5fd0fc5338757377..084eac3d5fa7deeab2296cf20653f4f7b3f75cd0:/lunaix-os/includes/lunaix/signal.h diff --git a/lunaix-os/includes/lunaix/signal.h b/lunaix-os/includes/lunaix/signal.h index af191af..556823b 100644 --- a/lunaix-os/includes/lunaix/signal.h +++ b/lunaix-os/includes/lunaix/signal.h @@ -1,6 +1,7 @@ #ifndef __LUNAIX_SIGNAL_H #define __LUNAIX_SIGNAL_H +#include #include #define _SIG_NUM 16 @@ -27,7 +28,42 @@ #define sigset_union(set, set2) ((set) = (set) | (set2)) #define sigset_intersect(set, set2) ((set) = (set) & (set2)) +struct sigact +{ + sigset_t sa_mask; + void* sa_actor; + void* sa_handler; + pid_t sender; +}; + +struct sigregistry { + struct sigact* signals[_SIG_NUM]; +}; + +struct sigctx +{ + sigset_t sig_pending; + sigset_t sig_mask; + signum_t sig_active; + signum_t sig_order[_SIG_NUM]; +}; + int -signal_send(pid_t pid, int signum); +signal_send(pid_t pid, signum_t signum); + +void +signal_dup_context(struct sigctx* dest_ctx); + +void +signal_dup_registry(struct sigregistry* dest_reg); + +void +signal_reset_context(struct sigctx* sigctx); + +void +signal_reset_registry(struct sigregistry* sigreg); + +void +signal_free_registry(struct sigregistry* sigreg); #endif /* __LUNAIX_SIGNAL_H */