提交 1322cb82 编写于 作者: R Rich Felker

header cleanup, conformance fixes - signals

上级 c316b284
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
struct __siginfo
{
int si_signo;
......@@ -57,12 +60,17 @@ struct __siginfo
#define SIG_UNBLOCK 1
#define SIG_SETMASK 2
#define SIG_ERR ((void (*)(int))-1)
#define SIG_DFL ((void (*)(int)) 0)
#define SIG_IGN ((void (*)(int)) 1)
#define SIG_HOLD ((void (*)(int)) 2)
#endif
#ifdef _GNU_SOURCE
#define NSIG 64
#endif
#define SIG_ERR ((void (*)(int))-1)
#define SIG_DFL ((void (*)(int)) 0)
#define SIG_IGN ((void (*)(int)) 1)
#define SIGHUP 1
#define SIGINT 2
......
......@@ -5,6 +5,9 @@
extern "C" {
#endif
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
#define __NEED_size_t
#define __NEED_pid_t
#define __NEED_uid_t
......@@ -17,8 +20,6 @@ extern "C" {
#include <bits/alltypes.h>
typedef int sig_atomic_t;
struct sigaction
{
union {
......@@ -53,12 +54,7 @@ int __libc_current_sigrtmax(void);
#define SIGRTMIN (__libc_current_sigrtmin())
#define SIGRTMAX (__libc_current_sigrtmax())
void (*signal(int, void (*)(int)))(int);
void (*bsd_signal(int, void (*)(int)))(int);
int kill(pid_t, int);
int killpg(pid_t, int);
int raise(int);
int sigpause(int);
int sigemptyset(sigset_t *);
int sigfillset(sigset_t *);
......@@ -75,22 +71,32 @@ int sigwaitinfo(const sigset_t *, siginfo_t *);
int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *);
int sigqueue(pid_t, int, const union sigval);
int siginterrupt(int, int);
int pthread_sigmask(int, const sigset_t *, sigset_t *);
int pthread_kill(pthread_t, int);
int sigaltstack(const stack_t *, stack_t *);
#endif
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
int killpg(pid_t, int);
int sigaltstack(const stack_t *, stack_t *);
int sighold(int);
int sigrelse(int);
int sigignore(int);
int siginterrupt(int, int);
int sigpause(int);
int sigrelse(int);
void (*sigset(int, void (*)(int)))(int);
int pthread_sigmask(int, const sigset_t *, sigset_t *);
int pthread_kill(pthread_t, int);
#endif
#ifdef _GNU_SOURCE
typedef int (*sighandler_t)(int);
void (*bsd_signal(int, void (*)(int)))(int);
#endif
typedef int sig_atomic_t;
void (*signal(int, void (*)(int)))(int);
int raise(int);
#ifdef __cplusplus
}
#endif
......
#include <signal.h>
void (*bsd_signal(int sig, void (*func)(int)))(int)
{
return signal(sig, func);
}
#include <signal.h>
#include <stddef.h>
#include "syscall.h"
#include "libc.h"
int __sigaction(int, const struct sigaction *, struct sigaction *);
......@@ -11,3 +12,5 @@ void (*signal(int sig, void (*func)(int)))(int)
return SIG_ERR;
return sa.sa_handler;
}
weak_alias(signal, bsd_signal);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册