From 01885f533de81ff73e9da1519a4b5f2316b49f86 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 14 Dec 2015 10:06:18 +0100 Subject: FreeBSD compatibility for * libc/include/sys/_sigset.h: New. * libc/include/sys/select.h: Do not include and to avoid cyclic header file dependencies. Include specialized header files instead. (sigset_t): Conditionally define. * libc/include/sys/signal.h (sigset_t): Likewise. * libc/include/sys/time.h: Include if __BSD_VISIBLE. * libc/include/sys/types.h: Likewise. --- newlib/libc/include/sys/_sigset.h | 43 +++++++++++++++++++++++++++++++++++++++ newlib/libc/include/sys/select.h | 15 +++++++------- newlib/libc/include/sys/signal.h | 7 ++++--- newlib/libc/include/sys/time.h | 6 ++---- newlib/libc/include/sys/types.h | 2 ++ 5 files changed, 58 insertions(+), 15 deletions(-) create mode 100644 newlib/libc/include/sys/_sigset.h (limited to 'newlib/libc/include/sys') diff --git a/newlib/libc/include/sys/_sigset.h b/newlib/libc/include/sys/_sigset.h new file mode 100644 index 000000000..a9c0d2d4e --- /dev/null +++ b/newlib/libc/include/sys/_sigset.h @@ -0,0 +1,43 @@ +/*- + * Copyright (c) 1982, 1986, 1989, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)signal.h 8.4 (Berkeley) 5/4/95 + * $FreeBSD$ + */ + +#ifndef _SYS__SIGSET_H_ +#define _SYS__SIGSET_H_ + +typedef unsigned long __sigset_t; + +#endif /* !_SYS__SIGSET_H_ */ diff --git a/newlib/libc/include/sys/select.h b/newlib/libc/include/sys/select.h index ffe890049..de779e61a 100644 --- a/newlib/libc/include/sys/select.h +++ b/newlib/libc/include/sys/select.h @@ -23,15 +23,14 @@ details. */ #include -/* Get fd_set, and macros like FD_SET */ -#include +#include +#include +#include -/* Get definition of timeval. */ -#include -#include - -/* Get definition of sigset_t. */ -#include +#if !defined(_SIGSET_T_DECLARED) +#define _SIGSET_T_DECLARED +typedef __sigset_t sigset_t; +#endif # define _SYS_TYPES_FD_SET /* diff --git a/newlib/libc/include/sys/signal.h b/newlib/libc/include/sys/signal.h index 09f0778e1..3ff0eb73c 100644 --- a/newlib/libc/include/sys/signal.h +++ b/newlib/libc/include/sys/signal.h @@ -10,13 +10,14 @@ extern "C" { #include #include #include +#include #include /* #ifndef __STRICT_ANSI__*/ -/* Cygwin defines it's own sigset_t in include/cygwin/signal.h */ -#ifndef __CYGWIN__ -typedef unsigned long sigset_t; +#if !defined(_SIGSET_T_DECLARED) +#define _SIGSET_T_DECLARED +typedef __sigset_t sigset_t; #endif #if defined(__rtems__) diff --git a/newlib/libc/include/sys/time.h b/newlib/libc/include/sys/time.h index 7e7205bd8..521be68db 100644 --- a/newlib/libc/include/sys/time.h +++ b/newlib/libc/include/sys/time.h @@ -43,11 +43,9 @@ #include #include -/* Cygwin exposes sys/select.h to users of sys/time.h for a couple of years - so we have to maintain that. Note that this is in accordance with POSIX. */ -#ifdef __CYGWIN__ +#if __BSD_VISIBLE #include -#endif /* __CYGWIN__ */ +#endif struct timezone { int tz_minuteswest; /* minutes west of Greenwich */ diff --git a/newlib/libc/include/sys/types.h b/newlib/libc/include/sys/types.h index 5dd6c75fe..207c8f87a 100644 --- a/newlib/libc/include/sys/types.h +++ b/newlib/libc/include/sys/types.h @@ -86,6 +86,8 @@ typedef quad_t * qaddr_t; # if __BSD_VISIBLE +#include + # define physadr physadr_t # define quad quad_t -- cgit v1.2.3