From a6cb7f759e0f75306218bb1b5202df67c211456b Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Wed, 5 Feb 2020 19:41:52 +0300 Subject: [PATCH] Kernel+LibC: Add some Unix signal types & definitions --- Kernel/UnixTypes.h | 29 ++++++++++++++++++++++++++++- Libraries/LibC/signal.h | 23 ++++++++++++++++++++++- Libraries/LibC/sys/types.h | 2 ++ Libraries/LibC/sys/wait.h | 6 ++++++ 4 files changed, 58 insertions(+), 2 deletions(-) diff --git a/Kernel/UnixTypes.h b/Kernel/UnixTypes.h index 1c638e6910..b7b83c5b78 100644 --- a/Kernel/UnixTypes.h +++ b/Kernel/UnixTypes.h @@ -274,7 +274,21 @@ typedef void (*__sighandler_t)(int); typedef __sighandler_t sighandler_t; typedef u32 sigset_t; -typedef void siginfo_t; + +union sigval { + int sival_int; + void* sival_ptr; +}; + +typedef struct siginfo { + int si_signo; + int si_code; + pid_t si_pid; + uid_t si_uid; + void* si_addr; + int si_status; + union sigval si_value; +} siginfo_t; struct sigaction { union { @@ -294,6 +308,13 @@ struct sigaction { #define SIG_UNBLOCK 1 #define SIG_SETMASK 2 +#define CLD_EXITED 0 +#define CLD_KILLED 1 +#define CLD_DUMPED 2 +#define CLD_TRAPPED 3 +#define CLD_STOPPED 4 +#define CLD_CONTINUED 5 + #define OFF_T_MAX 2147483647 typedef i32 off_t; @@ -432,6 +453,12 @@ struct timespec { long tv_nsec; }; +typedef enum { + P_ALL = 1, + P_PID, + P_PGID +} idtype_t; + typedef int clockid_t; #define CLOCK_MONOTONIC 1 diff --git a/Libraries/LibC/signal.h b/Libraries/LibC/signal.h index 3fcb8c4441..9700f62144 100644 --- a/Libraries/LibC/signal.h +++ b/Libraries/LibC/signal.h @@ -35,9 +35,23 @@ typedef void (*__sighandler_t)(int); typedef __sighandler_t sighandler_t; typedef uint32_t sigset_t; -typedef void siginfo_t; typedef uint32_t sig_atomic_t; +union sigval { + int sival_int; + void* sival_ptr; +}; + +typedef struct siginfo { + int si_signo; + int si_code; + pid_t si_pid; + uid_t si_uid; + void* si_addr; + int si_status; + union sigval si_value; +} siginfo_t; + struct sigaction { union { void (*sa_handler)(int); @@ -82,4 +96,11 @@ extern const char* sys_siglist[NSIG]; #define SIG_UNBLOCK 1 #define SIG_SETMASK 2 +#define CLD_EXITED 0 +#define CLD_KILLED 1 +#define CLD_DUMPED 2 +#define CLD_TRAPPED 3 +#define CLD_STOPPED 4 +#define CLD_CONTINUED 5 + __END_DECLS diff --git a/Libraries/LibC/sys/types.h b/Libraries/LibC/sys/types.h index 05cb15571e..2a279278e5 100644 --- a/Libraries/LibC/sys/types.h +++ b/Libraries/LibC/sys/types.h @@ -43,6 +43,8 @@ typedef uint32_t gid_t; typedef int __pid_t; #define pid_t __pid_t +typedef int id_t; + typedef int __ssize_t; #define ssize_t __ssize_t diff --git a/Libraries/LibC/sys/wait.h b/Libraries/LibC/sys/wait.h index 2a2fc162a1..a0b49a0046 100644 --- a/Libraries/LibC/sys/wait.h +++ b/Libraries/LibC/sys/wait.h @@ -44,6 +44,12 @@ __BEGIN_DECLS #define WEXITED 4 #define WCONTINUED 8 +typedef enum { + P_ALL = 1, + P_PID, + P_PGID +} idtype_t; + pid_t waitpid(pid_t, int* wstatus, int options); pid_t wait(int* wstatus);