aboutsummaryrefslogtreecommitdiff
path: root/sys/sys
diff options
context:
space:
mode:
authorPeter Dufault <dufault@FreeBSD.org>1998-03-04 10:27:00 +0000
committerPeter Dufault <dufault@FreeBSD.org>1998-03-04 10:27:00 +0000
commit917e476dad16ee2bb972f70adede8bd9693aca13 (patch)
tree9a4a250a06cdd01d476f1e2cce24699984e7a22a /sys/sys
parent644d85f4ca78ccb6055a1246fa5ec3124bd43182 (diff)
downloadsrc-917e476dad16ee2bb972f70adede8bd9693aca13.tar.gz
src-917e476dad16ee2bb972f70adede8bd9693aca13.zip
Reviewed by: msmith, bde long ago
POSIX.4 headers and sysctl variables. Nothing should change unless POSIX4 is defined or _POSIX_VERSION is set to 199309.
Notes
Notes: svn path=/head/; revision=34030
Diffstat (limited to 'sys/sys')
-rw-r--r--sys/sys/mman.h26
-rw-r--r--sys/sys/posix4.h300
-rw-r--r--sys/sys/proc.h3
-rw-r--r--sys/sys/rtprio.h21
-rw-r--r--sys/sys/semaphore.h61
-rw-r--r--sys/sys/sysctl.h12
-rw-r--r--sys/sys/time.h8
-rw-r--r--sys/sys/timetc.h8
-rw-r--r--sys/sys/unistd.h87
9 files changed, 516 insertions, 10 deletions
diff --git a/sys/sys/mman.h b/sys/sys/mman.h
index f1a054b3efed..f0b609f3ea71 100644
--- a/sys/sys/mman.h
+++ b/sys/sys/mman.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)mman.h 8.2 (Berkeley) 1/9/95
- * $Id: mman.h,v 1.19 1997/12/02 21:30:03 dyson Exp $
+ * $Id: mman.h,v 1.20 1997/12/31 01:22:00 alex Exp $
*/
#ifndef _SYS_MMAN_H_
@@ -63,6 +63,15 @@
#define MAP_NOEXTEND 0x0100 /* for MAP_FILE, don't change file size */
#define MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */
+#ifdef POSIX4_VISIBLE
+/*
+ * Process memory locking
+ */
+#define MCL_CURRENT 0x0001 /* Lock only current memory */
+#define MCL_FUTURE 0x0002 /* Lock all future memory as well */
+
+#endif /* POSIX4_VISIBLE */
+
/*
* Error return from mmap()
*/
@@ -75,6 +84,7 @@
#define MS_ASYNC 0x0001 /* return immediately */
#define MS_INVALIDATE 0x0002 /* invalidate all cached data */
+
/*
* Mapping type
*/
@@ -105,9 +115,12 @@
#include <sys/cdefs.h>
__BEGIN_DECLS
-int madvise __P((void *, size_t, int));
-int mincore __P((const void *, size_t, char *));
-int minherit __P((void *, size_t, int));
+#ifdef POSIX4_VISIBLE
+int mlockall __P((int));
+int munlockall __P((void));
+int shm_open __P((const char *, int, mode_t));
+int shm_unlink __P((const char *));
+#endif /* POSIX4_VISIBLE */
int mlock __P((const void *, size_t));
#ifndef _MMAP_DECLARED
#define _MMAP_DECLARED
@@ -117,6 +130,11 @@ int mprotect __P((const void *, size_t, int));
int msync __P((void *, size_t, int));
int munlock __P((const void *, size_t));
int munmap __P((void *, size_t));
+#ifndef _POSIX_SOURCE
+int madvise __P((void *, size_t, int));
+int mincore __P((const void *, size_t, char *));
+int minherit __P((void *, size_t, int));
+#endif
__END_DECLS
#endif /* !KERNEL */
diff --git a/sys/sys/posix4.h b/sys/sys/posix4.h
new file mode 100644
index 000000000000..5037b03bbd7e
--- /dev/null
+++ b/sys/sys/posix4.h
@@ -0,0 +1,300 @@
+#ifndef _POSIX4_POSIX4_H_
+#define _POSIX4_POSIX4_H_
+/*-
+ * Copyright (c) 1996, 1997, 1998
+ * HD Associates, Inc. All rights reserved.
+ *
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by HD Associates, Inc
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES 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 HD ASSOCIATES 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.
+ *
+ */
+
+#if defined(_POSIX_VERSION) && _POSIX_VERSION >= 199309L
+#include <sys/param.h>
+#include <sys/ioccom.h>
+#include <sched.h>
+
+/*
+ * This defines POSIX4_VISIBLE to indicate posix4 extensions should show up.
+ * You should test this when you add a posix4 extension to a header
+ * that exists in POSIX.1. Try "man 9 posix4".
+ */
+
+#if !defined(_POSIX_C_SOURCE) || \
+ defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309L
+#define POSIX4_VISIBLE
+#endif
+
+/*
+ *
+ * March 1, 1998: Details from here on change and this header file
+ * is volatile.
+ *
+ * Locally I've got PRIORITY SCHEDULING
+ * set as a system call available only to root
+ * and I'm still using a pseudo device to gate everything else.
+ *
+ * This interface vectors us into the kernel through a
+ * POSIX4 pseudo device with some user privilege authorization along
+ * the way.
+ *
+ * XXX I'm going with option 3.
+ *
+ * This has drawbacks from the point of view of ktrace. There
+ * are (at least) three ways to do this:
+ *
+ * 1. As it is being done, which is bad for ktrace and is hokey
+ * but is easy to extend during development;
+ * 2. Add a system call for every POSIX4 entry point, which
+ * will result in many more system calls (on the order of 64)
+ * 3. Add a system call for each POSIX4 option, which is a bit more
+ * useful for ktrace and will add only about 14 new system calls.
+ *
+ */
+
+#define POSIX4_FACILITIES 16
+#define POSIX4_ONE_ONLY
+
+/*
+ * All facility request structures have a posix4_dispatch header
+ * at the front. Return values are always an indication of
+ * success or failure and are automatically converted into an errno
+ * by the kernel. "Non-errno" return codes are handled via ret.
+ */
+struct posix4_dispatch {
+ int op;
+ int ret;
+};
+
+#if defined(_POSIX_PRIORITY_SCHEDULING)
+
+/*
+ * KSCHED_OP_RW is a vector of read/write flags for each entry indexed
+ * by the enum ksched_op.
+ *
+ * 1 means you need write access, 0 means read is sufficient.
+ */
+
+enum ksched_op {
+
+#define KSCHED_OP_RW { 1, 0, 1, 0, 0, 0, 0, 0 }
+
+ SCHED_SETPARAM,
+ SCHED_GETPARAM,
+ SCHED_SETSCHEDULER,
+ SCHED_GETSCHEDULER,
+ SCHED_YIELD,
+ SCHED_GET_PRIORITY_MAX,
+ SCHED_GET_PRIORITY_MIN,
+ SCHED_RR_GET_INTERVAL,
+ SCHED_OP_MAX
+};
+
+struct ksched
+{
+ struct posix4_dispatch dispatch;
+ pid_t pid;
+ int policy;
+ struct sched_param param;
+ struct timespec interval;
+};
+
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+
+#if defined(_POSIX_MEMLOCK) ^ defined(_POSIX_MEMLOCK_RANGE)
+/* This implementation expects these two options to always be together.
+ * If one isn't handled it should be disabled at
+ * run time.
+ */
+#error _POSIX_MEMLOCK and _POSIX_MEMLOCK_RANGE should always be together
+#endif
+
+#if defined(_POSIX_MEMLOCK) && defined(_POSIX_MEMLOCK_RANGE)
+
+enum kmemlock_op {
+
+#define KMEMLOCK_OP_RW { 1, 1, 1, 1 }
+
+ MEMLOCK_MLOCKALL,
+ MEMLOCK_MUNLOCKALL,
+ MEMLOCK_MLOCK,
+ MEMLOCK_MUNLOCK,
+ MEMLOCK_OP_MAX
+};
+
+struct kmemlock
+{
+ struct posix4_dispatch dispatch;
+ int flags;
+ void *addr;
+ size_t len;
+};
+
+#endif /* _POSIX_MEMLOCK && _POSIX_MEMLOCK_RANGE */
+
+#if defined(KERNEL)
+
+struct proc;
+
+void *posix4malloc __P((int *, size_t));
+void posix4free __P((int *, void *));
+int posix4proc __P((struct proc *, pid_t, struct proc **));
+int posix4ioctl __P((dev_t, int, caddr_t, int, struct proc *));
+void posix4attach __P((int));
+void posix4_facility __P((int, int));
+
+struct lkm_table;
+int posix4_init __P((struct lkm_table *, int , int ));
+
+#ifdef _POSIX_PRIORITY_SCHEDULING
+
+int ksched_attach(int, int, void **);
+int ksched_detach(void *);
+
+int ksched_setparam(int *, void *,
+ struct proc *, const struct sched_param *);
+int ksched_getparam(int *, void *,
+ struct proc *, struct sched_param *);
+
+int ksched_setscheduler(int *, void *,
+ struct proc *, int, const struct sched_param *);
+int ksched_getscheduler(int *, void *, struct proc *);
+
+int ksched_yield(int *, void *);
+
+int ksched_get_priority_max(int *, void *, int);
+int ksched_get_priority_min(int *, void *, int);
+
+int ksched_rr_get_interval(int *, void *, struct proc *, struct timespec *);
+
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+
+#if defined(_POSIX_MEMLOCK) && defined(_POSIX_MEMLOCK_RANGE)
+
+int kmemlock_attach(int, int, void **);
+int kmemlock_detach(void *);
+int kmlockall(int *, void *, int);
+int kmunlockall(int *, void *);
+int kmlock(int *, void *, const void *, size_t);
+int kmunlock(int *, void *, const void *, size_t );
+
+#endif /* _POSIX_MEMLOCK && _POSIX_MEMLOCK_RANGE */
+
+#endif /* KERNEL */
+
+/* A facility is an implementation of one of the optional portions of
+ * POSIX4 as selected by the feature test macros, such as the fixed
+ * priority scheduler or the realtime signals.
+ */
+
+/* Each facility has a facility code, an opcode, and r-w attributes.
+ * To exercise the operation associated with an opcode you need the
+ * appropriate privileges on the POSIX4 device with the facility
+ * bit set in the minor number. This means that every facility has
+ * a protection bit: Probably more than we need, but it may have
+ * advantages.
+ *
+ */
+
+#define posix4encode(FACILITY, RW) (FACILITY)
+#define posix4decode(X, FACILITY_P) \
+ do { \
+ *(FACILITY_P) = ((X) & 0xff); \
+ } while (0)
+
+/*
+ * The dispatch codes:
+ */
+#define IO_POSIX4_PRIORITY_SCHEDULING _IOWR('r', \
+ CTL_POSIX4_PRIORITY_SCHEDULING, struct ksched)
+
+#define IO_POSIX4_MEMLOCK _IOWR('r', \
+ CTL_POSIX4_MEMLOCK, struct ksched)
+
+/*
+ * CTL_POSIX4 definitions for syscfg
+ */
+
+#define CTL_POSIX4_ASYNCHRONOUS_IO 1 /* boolean */
+#define CTL_POSIX4_MAPPED_FILES 2 /* boolean */
+#define CTL_POSIX4_MEMLOCK 3 /* boolean */
+#define CTL_POSIX4_MEMLOCK_RANGE 4 /* boolean */
+#define CTL_POSIX4_MEMORY_PROTECTION 5 /* boolean */
+#define CTL_POSIX4_MESSAGE_PASSING 6 /* boolean */
+#define CTL_POSIX4_PRIORITIZED_IO 7 /* boolean */
+#define CTL_POSIX4_PRIORITY_SCHEDULING 8 /* boolean */
+#define CTL_POSIX4_REALTIME_SIGNALS 9 /* boolean */
+#define CTL_POSIX4_SEMAPHORES 10 /* boolean */
+#define CTL_POSIX4_FSYNC 11 /* boolean */
+#define CTL_POSIX4_SHARED_MEMORY_OBJECTS 12 /* boolean */
+#define CTL_POSIX4_SYNCHRONIZED_IO 13 /* boolean */
+#define CTL_POSIX4_TIMERS 14 /* boolean */
+#define CTL_POSIX4_AIO_LISTIO_MAX 15 /* int */
+#define CTL_POSIX4_AIO_MAX 16 /* int */
+#define CTL_POSIX4_AIO_PRIO_DELTA_MAX 17 /* int */
+#define CTL_POSIX4_DELAYTIMER_MAX 18 /* int */
+#define CTL_POSIX4_MQ_OPEN_MAX 19 /* int */
+#define CTL_POSIX4_PAGESIZE 20 /* int */
+#define CTL_POSIX4_RTSIG_MAX 21 /* int */
+#define CTL_POSIX4_SEM_NSEMS_MAX 22 /* int */
+#define CTL_POSIX4_SEM_VALUE_MAX 23 /* int */
+#define CTL_POSIX4_SIGQUEUE_MAX 24 /* int */
+#define CTL_POSIX4_TIMER_MAX 25 /* int */
+
+#define CTL_POSIX4_N_CTLS 25
+
+#define CTL_POSIX4_NAMES { \
+ { 0, 0 }, \
+ { "asynchronous_io", CTLTYPE_INT }, \
+ { "mapped_files", CTLTYPE_INT }, \
+ { "memlock", CTLTYPE_INT }, \
+ { "memlock_range", CTLTYPE_INT }, \
+ { "memory_protection", CTLTYPE_INT }, \
+ { "message_passing", CTLTYPE_INT }, \
+ { "prioritized_io", CTLTYPE_INT }, \
+ { "priority_scheduling", CTLTYPE_INT }, \
+ { "realtime_signals", CTLTYPE_INT }, \
+ { "semaphores", CTLTYPE_INT }, \
+ { "fsync", CTLTYPE_INT }, \
+ { "shared_memory_objects", CTLTYPE_INT }, \
+ { "synchronized_io", CTLTYPE_INT }, \
+ { "timers", CTLTYPE_INT }, \
+ { "aio_listio_max", CTLTYPE_INT }, \
+ { "aio_max", CTLTYPE_INT }, \
+ { "aio_prio_delta_max", CTLTYPE_INT }, \
+ { "delaytimer_max", CTLTYPE_INT }, \
+ { "mq_open_max", CTLTYPE_INT }, \
+ { "pagesize", CTLTYPE_INT }, \
+ { "rtsig_max", CTLTYPE_INT }, \
+ { "nsems_max", CTLTYPE_INT }, \
+ { "sem_value_max", CTLTYPE_INT }, \
+ { "sigqueue_max", CTLTYPE_INT }, \
+ { "timer_max", CTLTYPE_INT }, \
+}
+
+#endif /* _POSIX_VERSION >= 199309L */
+#endif /* _POSIX4_POSIX4_H_ */
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index c4acd8ccfd13..bed9f51f3679 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)proc.h 8.15 (Berkeley) 5/19/95
- * $Id: proc.h,v 1.53 1998/01/22 17:30:11 dyson Exp $
+ * $Id: proc.h,v 1.54 1998/02/20 13:52:15 bde Exp $
*/
#ifndef _SYS_PROC_H_
@@ -329,6 +329,7 @@ int leavepgrp __P((struct proc *p));
void mi_switch __P((void));
void procinit __P((void));
void resetpriority __P((struct proc *));
+int roundrobin_interval __P((void));
void setrunnable __P((struct proc *));
void setrunqueue __P((struct proc *));
void sleepinit __P((void));
diff --git a/sys/sys/rtprio.h b/sys/sys/rtprio.h
index dd9521e7c810..5b6830def121 100644
--- a/sys/sys/rtprio.h
+++ b/sys/sys/rtprio.h
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: rtprio.h,v 1.4 1997/02/22 09:45:48 peter Exp $
*/
#ifndef _SYS_RTPRIO_H_
@@ -39,10 +39,29 @@
*/
/* priority types */
+
#define RTP_PRIO_REALTIME 0
#define RTP_PRIO_NORMAL 1
#define RTP_PRIO_IDLE 2
+/* RTP_PRIO_FIFO is Posix 4 SCHED_FIFO.
+ * Careful: These are based on the kernel config POSIX4 and not
+ * the compile time test _POSIX_PRIORITY_SCHEDULING since they
+ * set the behavior of the system.
+ */
+
+#ifdef POSIX4
+#define RTP_PRIO_FIFO_BIT 4
+#define RTP_PRIO_FIFO (RTP_PRIO_REALTIME | RTP_PRIO_FIFO_BIT)
+#define RTP_PRIO_BASE(P) ((P) & ~RTP_PRIO_FIFO_BIT)
+#define RTP_PRIO_IS_REALTIME(P) (RTP_PRIO_BASE(P) == RTP_PRIO_REALTIME)
+#define RTP_PRIO_NEED_RR(P) ((P) != RTP_PRIO_FIFO)
+#else
+#define RTP_PRIO_BASE(P) (P)
+#define RTP_PRIO_IS_REALTIME(P) (P == RTP_PRIO_REALTIME)
+#define RTP_PRIO_NEED_RR(P) (1)
+#endif
+
/* priority range */
#define RTP_PRIO_MIN 0 /* Highest priority */
#define RTP_PRIO_MAX 31 /* Lowest priority */
diff --git a/sys/sys/semaphore.h b/sys/sys/semaphore.h
new file mode 100644
index 000000000000..fbcab1312593
--- /dev/null
+++ b/sys/sys/semaphore.h
@@ -0,0 +1,61 @@
+#ifndef _SEMAPHORE_H_
+#define _SEMAPHORE_H_
+
+/* semaphore.h: POSIX.4 semaphores */
+
+/*-
+ * Copyright (c) 1996, 1997
+ * HD Associates, Inc. All rights reserved.
+ *
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by HD Associates, Inc
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES 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 HD ASSOCIATES 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.
+ *
+ */
+
+#ifdef POSIX4_INCLUDE_MAYBES
+#include <sys/types.h>
+#include <fcntl.h>
+#endif
+
+typedef int sem_t;
+
+#ifndef KERNEL
+#include <sys/cdefs.h>
+
+int sem_init __P(sem_t *, int, unsigned int));
+int sem_destroy __P((sem_t *));
+sem_t sem_open __P((const char *, int, ...));
+int sem_close __P((sem_t *));
+int sem_unlink __P((const char *));
+int sem_wait((sem_t *));
+int sem_trywait((sem_t *));
+int sem_post((sem_t *));
+int sem_getvalue((sem_t *, int *));
+
+#endif /* KERNEL */
+
+#endif /* _SEMAPHORE_H_ */
diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h
index a92749fad431..cd8f293cd235 100644
--- a/sys/sys/sysctl.h
+++ b/sys/sys/sysctl.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)sysctl.h 8.1 (Berkeley) 6/2/93
- * $Id: sysctl.h,v 1.56 1997/09/07 05:27:26 bde Exp $
+ * $Id: sysctl.h,v 1.57 1997/09/07 16:53:52 bde Exp $
*/
#ifndef _SYS_SYSCTL_H_
@@ -180,7 +180,16 @@ int sysctl_handle_opaque SYSCTL_HANDLER_ARGS;
#define CTL_HW 6 /* generic cpu/io */
#define CTL_MACHDEP 7 /* machine dependent */
#define CTL_USER 8 /* user-level */
+
+#ifdef POSIX4
+#define CTL_POSIX4 9 /* user-level */
+#define CTL_MAXID 10 /* number of valid top-level ids */
+
+#define CTL_POSIX4_NAME { "posix4", CTLTYPE_NODE },
+#else
#define CTL_MAXID 9 /* number of valid top-level ids */
+#define CTL_POSIX4_NAME
+#endif /* POSIX4 */
#define CTL_NAMES { \
{ 0, 0 }, \
@@ -192,6 +201,7 @@ int sysctl_handle_opaque SYSCTL_HANDLER_ARGS;
{ "hw", CTLTYPE_NODE }, \
{ "machdep", CTLTYPE_NODE }, \
{ "user", CTLTYPE_NODE }, \
+ CTL_POSIX4_NAME \
}
/*
diff --git a/sys/sys/time.h b/sys/sys/time.h
index c68eec15e2d3..b3ec8b726217 100644
--- a/sys/sys/time.h
+++ b/sys/sys/time.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)time.h 8.5 (Berkeley) 5/4/95
- * $Id: time.h,v 1.18 1998/02/21 03:20:46 jb Exp $
+ * $Id: time.h,v 1.19 1998/02/25 02:14:14 bde Exp $
*/
#ifndef _SYS_TIME_H_
@@ -194,12 +194,18 @@ struct clockinfo {
int profhz; /* profiling clock frequency */
};
+/* CLOCK_REALTIME and TIMER_ABSTIME are supposed to be in time.h */
+
+#ifndef CLOCK_REALTIME
#define CLOCK_REALTIME 0
+#endif
#define CLOCK_VIRTUAL 1
#define CLOCK_PROF 2
#define TIMER_RELTIME 0x0 /* relative timer */
+#ifndef TIMER_ABSTIME
#define TIMER_ABSTIME 0x1 /* absolute timer */
+#endif
#ifdef KERNEL
extern struct timecounter *timecounter;
diff --git a/sys/sys/timetc.h b/sys/sys/timetc.h
index c68eec15e2d3..b3ec8b726217 100644
--- a/sys/sys/timetc.h
+++ b/sys/sys/timetc.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)time.h 8.5 (Berkeley) 5/4/95
- * $Id: time.h,v 1.18 1998/02/21 03:20:46 jb Exp $
+ * $Id: time.h,v 1.19 1998/02/25 02:14:14 bde Exp $
*/
#ifndef _SYS_TIME_H_
@@ -194,12 +194,18 @@ struct clockinfo {
int profhz; /* profiling clock frequency */
};
+/* CLOCK_REALTIME and TIMER_ABSTIME are supposed to be in time.h */
+
+#ifndef CLOCK_REALTIME
#define CLOCK_REALTIME 0
+#endif
#define CLOCK_VIRTUAL 1
#define CLOCK_PROF 2
#define TIMER_RELTIME 0x0 /* relative timer */
+#ifndef TIMER_ABSTIME
#define TIMER_ABSTIME 0x1 /* absolute timer */
+#endif
#ifdef KERNEL
extern struct timecounter *timecounter;
diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h
index efe6785ae3e0..e31a7d3d7384 100644
--- a/sys/sys/unistd.h
+++ b/sys/sys/unistd.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)unistd.h 8.2 (Berkeley) 1/7/94
- * $Id: unistd.h,v 1.13 1997/02/22 09:46:21 peter Exp $
+ * $Id: unistd.h,v 1.14 1997/06/16 00:29:26 dyson Exp $
*/
#ifndef _SYS_UNISTD_H_
@@ -50,7 +50,47 @@
#define _POSIX_SAVED_IDS /* saved set-user-ID and set-group-ID */
#endif
+#ifdef POSIX4
+
+/* Select POSIX.4 regardless.
+ * Don't undef first - we want an error on conflicts.
+ */
+
+#define _POSIX_VERSION 199309L
+#endif
+
+#ifndef _POSIX_VERSION
#define _POSIX_VERSION 199009L
+#endif
+
+#if _POSIX_VERSION > 199009L
+/*
+ * Set it up so that all new headers can assume _POSIX_C_SOURCE is the
+ * only thing that must be looked at to determine the feature set,
+ * and so that old headers don't have to change:
+ */
+#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
+/*
+ * Default to latest:
+ */
+#define _POSIX_C_SOURCE _POSIX_VERSION
+#endif
+
+#if defined(_POSIX_C_SOURCE) && !defined(_POSIX_SOURCE)
+/*
+ * Define _POSIX_SOURCE for older headers:
+ */
+#define _POSIX_SOURCE
+#endif
+
+#if _POSIX_VERSION >= 199309L
+#include <posix4/posix4.h>
+#endif
+
+#endif /* _POSIX_VERSION */
+
+
+
#define _POSIX2_VERSION 199212L
/* execution-time symbolic constants */
@@ -122,6 +162,51 @@
/* configurable system strings */
#define _CS_PATH 1
+#ifdef POSIX4_VISIBLE
+
+#if 0
+/* Not until the dust settles after the header commit
+ */
+#define _POSIX_PRIORITY_SCHEDULING
+#define _POSIX_ASYNCHRONOUS_IO
+#define _POSIX_MEMLOCK
+#define _POSIX_MEMLOCK_RANGE
+#endif
+
+/* POSIX 4 sysconf options */
+#define _SC_ASYNCHRONOUS_IO 28
+#define _SC_MAPPED_FILES 29
+#define _SC_MEMLOCK 30
+#define _SC_MEMLOCK_RANGE 31
+#define _SC_MEMORY_PROTECTION 32
+#define _SC_MESSAGE_PASSING 33
+#define _SC_PRIORITIZED_IO 34
+#define _SC_PRIORITY_SCHEDULING 35
+#define _SC_REALTIME_SIGNALS 36
+#define _SC_SEMAPHORES 37
+#define _SC_FSYNC 38
+#define _SC_SHARED_MEMORY_OBJECTS 39
+#define _SC_SYNCHRONIZED_IO 40
+#define _SC_TIMERS 41
+#define _SC_AIO_LISTIO_MAX 42
+#define _SC_AIO_MAX 43
+#define _SC_AIO_PRIO_DELTA_MAX 44
+#define _SC_DELAYTIMER_MAX 45
+#define _SC_MQ_OPEN_MAX 46
+#define _SC_PAGESIZE 47
+#define _SC_RTSIG_MAX 48
+#define _SC_SEM_NSEMS_MAX 49
+#define _SC_SEM_VALUE_MAX 50
+#define _SC_SIGQUEUE_MAX 51
+#define _SC_TIMER_MAX 52
+
+/* POSIX 4 pathconf and fpathconf options */
+#define _PC_ASYNC_IO 53
+#define _PC_PRIO_IO 54
+#define _PC_SYNC_IO 55
+
+#endif /* POSIX4_VISIBLE */
+
#ifndef _POSIX_SOURCE
/*
* rfork() options.