1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-09 13:42:56 +00:00

Improve POSIX conformance of <signal.h>.

- This header file has always depended on pthread_t, pthread_attr_t,
  struct timespec, size_t and uid_t. Only as of POSIX 2008, these
  dependencies have been states explicitly. They should now be defined.

- In our implementation, struct sigevent::sigev_notify_attributes has
  type "void *" instead of "pthread_attr_t *". My guess is that this was
  done to prevent pulling in the pthread types, but this can easily be
  avoided by using the underlying structure types.
This commit is contained in:
Ed Schouten 2016-05-31 19:05:41 +00:00
parent e0db04b3de
commit 08c8d10cf3
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=301071

View File

@ -45,6 +45,23 @@
#include <machine/_limits.h> /* __MINSIGSTKSZ */
#include <machine/signal.h> /* sig_atomic_t; trap codes; sigcontext */
#if __POSIX_VISIBLE >= 200809
#include <sys/_pthreadtypes.h>
#include <sys/_timespec.h>
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
#ifndef _UID_T_DECLARED
typedef __uid_t uid_t;
#define _UID_T_DECLARED
#endif
#endif /* __POSIX_VISIBLE >= 200809 */
/*
* System defined signals.
*/
@ -160,6 +177,9 @@ union sigval {
#endif
#if __POSIX_VISIBLE >= 199309
struct pthread_attr;
struct sigevent {
int sigev_notify; /* Notification type */
int sigev_signo; /* Signal number */
@ -168,7 +188,7 @@ struct sigevent {
__lwpid_t _threadid;
struct {
void (*_function)(union sigval);
void *_attribute; /* pthread_attr_t * */
struct pthread_attr **_attribute;
} _sigev_thread;
unsigned short _kevent_flags;
long __spare__[8];
@ -190,6 +210,7 @@ struct sigevent {
#define SIGEV_KEVENT 3 /* Generate a kevent. */
#define SIGEV_THREAD_ID 4 /* Send signal to a kernel thread. */
#endif
#endif /* __POSIX_VISIBLE >= 199309 */
#if __POSIX_VISIBLE >= 199309 || __XSI_VISIBLE