mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-14 03:46:47 +00:00
89 lines
2.5 KiB
C
89 lines
2.5 KiB
C
#pragma once
|
||
#include <libc/src/unistd.h>
|
||
|
||
#define SIGHUP 1
|
||
#define SIGINT 2
|
||
#define SIGQUIT 3
|
||
#define SIGILL 4
|
||
#define SIGTRAP 5
|
||
#define SIGABRT 6
|
||
#define SIGIOT 6
|
||
#define SIGBUS 7
|
||
#define SIGFPE 8
|
||
#define SIGKILL 9
|
||
#define SIGUSR1 10
|
||
#define SIGSEGV 11
|
||
#define SIGUSR2 12
|
||
#define SIGPIPE 13
|
||
#define SIGALRM 14
|
||
#define SIGTERM 15
|
||
#define SIGSTKFLT 16
|
||
#define SIGCHLD 17
|
||
#define SIGCONT 18
|
||
#define SIGSTOP 19
|
||
#define SIGTSTP 20
|
||
#define SIGTTIN 21
|
||
#define SIGTTOU 22
|
||
#define SIGURG 23
|
||
#define SIGXCPU 24
|
||
#define SIGXFSZ 25
|
||
#define SIGVTALRM 26
|
||
#define SIGPROF 27
|
||
#define SIGWINCH 28
|
||
#define SIGIO 29
|
||
#define SIGPOLL SIGIO
|
||
|
||
#define SIGPWR 30
|
||
#define SIGSYS 31
|
||
|
||
/* These should not be considered constants from userland. */
|
||
#define SIGRTMIN 32
|
||
#define SIGRTMAX MAX_SIG_NUM
|
||
|
||
typedef void (*__sighandler_t) (int);
|
||
|
||
// 注意,该结构体最大16字节
|
||
union __sifields {
|
||
/* kill() */
|
||
struct
|
||
{
|
||
pid_t _pid; /* 信号发送者的pid */
|
||
} _kill;
|
||
};
|
||
|
||
// 注意,该结构体最大大小为32字节
|
||
#define __SIGINFO \
|
||
struct \
|
||
{ \
|
||
int32_t si_signo; /* signal number */ \
|
||
int32_t si_code; \
|
||
int32_t si_errno; \
|
||
uint32_t reserved; /* 保留备用 */ \
|
||
union __sifields _sifields; \
|
||
}
|
||
|
||
typedef struct
|
||
{
|
||
union {
|
||
__SIGINFO;
|
||
uint64_t padding[4]; // 让siginfo占用32字节大小
|
||
};
|
||
} siginfo_t;
|
||
|
||
typedef struct
|
||
{
|
||
uint64_t set;
|
||
} sigset_t;
|
||
|
||
struct sigaction
|
||
{
|
||
// sa_handler和sa_sigaction二选1
|
||
__sighandler_t sa_handler;
|
||
void (*sa_sigaction)(int, siginfo_t *, void *);
|
||
sigset_t sa_mask;
|
||
uint64_t sa_flags;
|
||
void (*sa_restorer)(void);
|
||
};
|
||
|
||
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
|
||
int signal(int signum, __sighandler_t handler); |