Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 May 2016 19:05:42 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r301071 - head/sys/sys
Message-ID:  <201605311905.u4VJ5geL053766@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Tue May 31 19:05:41 2016
New Revision: 301071
URL: https://svnweb.freebsd.org/changeset/base/301071

Log:
  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.

Modified:
  head/sys/sys/signal.h

Modified: head/sys/sys/signal.h
==============================================================================
--- head/sys/sys/signal.h	Tue May 31 18:45:52 2016	(r301070)
+++ head/sys/sys/signal.h	Tue May 31 19:05:41 2016	(r301071)
@@ -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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605311905.u4VJ5geL053766>