Nick Desaulniers e566313a1f
[libc][signal] clean up usage of sighandler_t (#125745)
`man 3 signal`'s declaration has a face _only a mother could love_.

sighandler_t and __sighandler_t are not defined in the C standard, or POSIX.

They are helpful typedefs provided by glibc and the Linux kernel UAPI headers
respectively since working with function pointers' syntax can be painful. But
we should not rely on them; in C++ we have `auto*` and `using` statements.

Remove the proxy header, and only include a typedef for sighandler_t when
targeting Linux, for compatibility with glibc.

Fixes: #125598
2025-02-07 10:43:56 -08:00

90 lines
1.9 KiB
YAML

header: signal.h
header_template: signal.h.def
macros: []
types:
- type_name: pid_t
- type_name: sig_atomic_t
- type_name: sighandler_t
- type_name: siginfo_t
- type_name: sigset_t
- type_name: stack_t
- type_name: struct_sigaction
- type_name: union_sigval
enums: []
objects: []
functions:
- name: kill
standards:
- POSIX
return_type: int
arguments:
- type: pid_t
- type: int
- name: raise
standards:
- stdc
return_type: int
arguments:
- type: int
- name: sigaction
standards:
- POSIX
return_type: int
arguments:
- type: int
- type: const struct sigaction *__restrict
- type: struct sigaction *__restrict
- name: sigaddset
standards:
- POSIX
return_type: int
arguments:
- type: sigset_t *
- type: int
- name: sigaltstack
standards:
- POSIX
return_type: int
arguments:
- type: const stack_t *__restrict
- type: stack_t *__restrict
- name: sigdelset
standards:
- POSIX
return_type: int
arguments:
- type: sigset_t *
- type: int
- name: sigemptyset
standards:
- POSIX
return_type: int
arguments:
- type: sigset_t *
- name: sigfillset
standards:
- POSIX
return_type: int
arguments:
- type: sigset_t *
- name: signal
standards:
- stdc
# May the Geneva Convention have mercy on my soul... Why this insanity?
# Well: signal returns a function pointer to a function with no return
# value and which accepts an int. The parameter list appears on the far
# right of the declaration. i.e.
# void (*signal(int, void (*)(int)))(int);
return_type: void (*
arguments:
- type: int
- type: void (*)(int)))(int
- name: sigprocmask
standards:
- POSIX
return_type: int
arguments:
- type: int
- type: const sigset_t *__restrict
- type: sigset_t *__restrict