summaryrefslogtreecommitdiffstats
path: root/newlib/libc/sys/rtems/include
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/rtems/include')
-rw-r--r--newlib/libc/sys/rtems/include/machine/_types.h38
-rw-r--r--newlib/libc/sys/rtems/include/machine/limits.h5
-rw-r--r--newlib/libc/sys/rtems/include/machine/param.h101
-rw-r--r--newlib/libc/sys/rtems/include/sys/cpuset.h311
-rw-r--r--newlib/libc/sys/rtems/include/sys/dirent.h64
-rw-r--r--newlib/libc/sys/rtems/include/sys/param.h217
-rw-r--r--newlib/libc/sys/rtems/include/sys/syslimits.h64
-rw-r--r--newlib/libc/sys/rtems/include/sys/utime.h34
8 files changed, 834 insertions, 0 deletions
diff --git a/newlib/libc/sys/rtems/include/machine/_types.h b/newlib/libc/sys/rtems/include/machine/_types.h
new file mode 100644
index 000000000..1711c7ae8
--- /dev/null
+++ b/newlib/libc/sys/rtems/include/machine/_types.h
@@ -0,0 +1,38 @@
+/*
+ * $Id$
+ */
+
+#ifndef _MACHINE__TYPES_H
+#define _MACHINE__TYPES_H
+
+/* This disables some conflicting type definitions in <machine/types.h> */
+#define _HAVE_SYSTYPES
+
+#include <machine/_default_types.h>
+
+typedef __int32_t blksize_t;
+typedef __int32_t blkcnt_t;
+
+typedef __uint64_t __dev_t;
+#define __dev_t_defined 1
+
+#if defined(__arm__) || defined(__i386__) || defined(__m68k__) || defined(__mips__) || defined(__PPC__) || defined(__sparc__)
+/* Use 64bit types */
+typedef __int64_t _off_t;
+#define __off_t_defined 1
+
+typedef __int64_t _fpos_t;
+#define __fpos_t_defined 1
+#else
+/* Use 32bit types */
+typedef __int32_t _off_t;
+#define __off_t_defined 1
+
+typedef __int32_t _fpos_t;
+#define __fpos_t_defined 1
+#endif
+
+typedef __uint32_t _mode_t;
+#define __mode_t_defined 1
+
+#endif
diff --git a/newlib/libc/sys/rtems/include/machine/limits.h b/newlib/libc/sys/rtems/include/machine/limits.h
new file mode 100644
index 000000000..2b4c47e48
--- /dev/null
+++ b/newlib/libc/sys/rtems/include/machine/limits.h
@@ -0,0 +1,5 @@
+/*
+ * $Id$
+ */
+
+/* intentionally empty file */
diff --git a/newlib/libc/sys/rtems/include/machine/param.h b/newlib/libc/sys/rtems/include/machine/param.h
new file mode 100644
index 000000000..74891f504
--- /dev/null
+++ b/newlib/libc/sys/rtems/include/machine/param.h
@@ -0,0 +1,101 @@
+/*
+ * $Id$
+ */
+
+#ifndef _MACHINE_PARAM_H_
+#define _MACHINE_PARAM_H_
+
+/*
+ * These aren't really machine-dependent for RTEMS.....
+ */
+
+/*
+#define MACHINE "i386"
+#define MID_MACHINE MID_I386
+*/
+
+/*
+ * Round p (pointer or byte index) up to a correctly-aligned value
+ * for all data types (int, long, ...). The result is unsigned int
+ * and must be cast to any desired pointer type.
+ */
+#if defined(__sparc__)
+#define ALIGNBYTES (sizeof(double) - 1)
+#else
+#define ALIGNBYTES (sizeof(int) - 1)
+#endif
+#define ALIGN(p) (((unsigned)(p) + ALIGNBYTES) & ~ALIGNBYTES)
+
+#define PAGE_SHIFT 12 /* LOG2(PAGE_SIZE) */
+#define PAGE_SIZE (1<<PAGE_SHIFT) /* bytes/page */
+#define PAGE_MASK (PAGE_SIZE-1)
+#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t)))
+
+#define NPDEPG (PAGE_SIZE/(sizeof (pd_entry_t)))
+#define PDRSHIFT 22 /* LOG2(NBPDR) */
+#define NBPDR (1<<PDRSHIFT) /* bytes/page dir */
+
+#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
+#define DEV_BSIZE (1<<DEV_BSHIFT)
+
+#if defined(__AVR__) || defined(__h8300__)
+#define BLKDEV_IOSIZE 1024
+#define MAXPHYS (1 * 1024) /* max raw I/O transfer size */
+#else
+#define BLKDEV_IOSIZE 2048
+#define MAXPHYS (64 * 1024) /* max raw I/O transfer size */
+#endif
+
+#define UPAGES 2 /* pages of u-area */
+
+/*
+ * Constants related to network buffer management.
+ * MCLBYTES must be no larger than CLBYTES (the software page size), and,
+ * on machines that exchange pages of input or output buffers with mbuf
+ * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
+ * of the hardware page size.
+ */
+#ifndef MSIZE
+#define MSIZE 128 /* size of an mbuf */
+#endif /* MSIZE */
+
+#ifndef MCLSHIFT
+#define MCLSHIFT 11 /* convert bytes to m_buf clusters */
+#endif /* MCLSHIFT */
+#define MCLBYTES (1 << MCLSHIFT) /* size of an m_buf cluster */
+#define MCLOFSET (MCLBYTES - 1) /* offset within an m_buf cluster */
+
+/*
+ * Some macros for units conversion
+ */
+
+/* clicks to bytes */
+#define ctob(x) ((x)<<PAGE_SHIFT)
+
+/* bytes to clicks */
+#define btoc(x) (((unsigned)(x)+PAGE_MASK)>>PAGE_SHIFT)
+
+/*
+ * btodb() is messy and perhaps slow because `bytes' may be an off_t. We
+ * want to shift an unsigned type to avoid sign extension and we don't
+ * want to widen `bytes' unnecessarily. Assume that the result fits in
+ * a daddr_t.
+ */
+#define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \
+ (sizeof (bytes) > sizeof(long) \
+ ? (daddr_t)((unsigned long long)(bytes) >> DEV_BSHIFT) \
+ : (daddr_t)((unsigned long)(bytes) >> DEV_BSHIFT))
+
+#define dbtob(db) /* calculates (db * DEV_BSIZE) */ \
+ ((off_t)(db) << DEV_BSHIFT)
+
+/*
+ * Mach derived conversion macros
+ */
+#define trunc_page(x) ((unsigned)(x) & ~PAGE_MASK)
+#define round_page(x) ((((unsigned)(x)) + PAGE_MASK) & ~PAGE_MASK)
+
+#define atop(x) ((unsigned)(x) >> PAGE_SHIFT)
+#define ptoa(x) ((unsigned)(x) << PAGE_SHIFT)
+
+#endif /* !_MACHINE_PARAM_H_ */
diff --git a/newlib/libc/sys/rtems/include/sys/cpuset.h b/newlib/libc/sys/rtems/include/sys/cpuset.h
new file mode 100644
index 000000000..8fae475a8
--- /dev/null
+++ b/newlib/libc/sys/rtems/include/sys/cpuset.h
@@ -0,0 +1,311 @@
+/*
+ * Copyright (c) 2013 On-Line Applications Research Corporation.
+ * All rights reserved.
+ *
+ * On-Line Applications Research Corporation
+ * 7047 Old Madison Pike Suite 320
+ * Huntsville Alabama 35806
+ * <info@oarcorp.com>
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+/*
+ * This file implements an API compatible with static portion of
+ * the GNU/Linux cpu_set_t macros but is independently implemented.
+ * The GNU/Linux manual page and the FreeBSD cpuset_t implementation
+ * were used as reference material.
+ *
+ * Not implemented:
+ * + Linux CPU_XXX_S
+ * + FreeBSD CPU_SUBSET
+ * + FreeBSD CPU_OVERLAP
+ */
+
+
+#ifndef _SYS_CPUSET_H_
+#define _SYS_CPUSET_H_
+
+#include <sys/cdefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* RTEMS supports a maximum of 32 CPU cores */
+#ifndef CPU_SETSIZE
+#define CPU_SETSIZE 32
+#endif
+
+/* word in the cpu set */
+typedef __uint32_t cpu_set_word_t;
+
+/* Number of bits per cpu_set_t element */
+#define _NCPUBITS (sizeof(cpu_set_word_t) * 8)
+
+/* Number of words in the cpu_set_t array */
+#define _NCPUWORDS (((CPU_SETSIZE)+((_NCPUBITS)-1))/(_NCPUBITS))
+
+/* Define the cpu set structure */
+typedef struct _cpuset {
+ cpu_set_word_t __bits[_NCPUWORDS];
+} cpu_set_t;
+
+/* determine the mask for a particular cpu within the element */
+static __inline cpu_set_word_t __cpuset_mask(int cpu)
+{
+ return (cpu_set_word_t)1 << ((size_t)cpu % _NCPUBITS);
+}
+
+/* determine the index for this cpu within the cpu set array */
+static __inline size_t __cpuset_index(int cpu)
+{
+ return (size_t)cpu / _NCPUBITS;
+}
+
+#define CPU_ALLOC_SIZE(_num_cpus) \
+ (sizeof(cpu_set_word_t) * (((_num_cpus) + _NCPUBITS - 1) / _NCPUBITS))
+
+cpu_set_t *__cpuset_alloc(int num_cpus);
+
+static __inline cpu_set_t *CPU_ALLOC(int num_cpus)
+{
+ return __cpuset_alloc(num_cpus);
+}
+
+void __cpuset_free(cpu_set_t *set);
+
+static __inline void CPU_FREE(cpu_set_t *set)
+{
+ __cpuset_free(set);
+}
+
+static __inline void CPU_ZERO_S(size_t setsize, cpu_set_t *set)
+{
+ cpu_set_word_t *w = &set->__bits[0];
+ size_t n = setsize / sizeof(*w);
+ size_t i;
+
+ for (i = 0; i < n; ++i)
+ w[i] = 0;
+}
+
+static __inline void CPU_ZERO(cpu_set_t *set)
+{
+ CPU_ZERO_S(sizeof(*set), set);
+}
+
+static __inline void CPU_FILL_S(size_t setsize, cpu_set_t *set)
+{
+ cpu_set_word_t *w = &set->__bits[0];
+ size_t n = setsize / sizeof(*w);
+ size_t i;
+
+ for (i = 0; i < n; ++i)
+ w[i] = ~(cpu_set_word_t)0;
+}
+
+static __inline void CPU_FILL(cpu_set_t *set)
+{
+ CPU_FILL_S(sizeof(*set), set);
+}
+
+static __inline void CPU_SET_S(int cpu, size_t setsize, cpu_set_t *set)
+{
+ cpu_set_word_t *w = &set->__bits[0];
+
+ w[__cpuset_index(cpu)] |= __cpuset_mask(cpu);
+}
+
+static __inline void CPU_SET(int cpu, cpu_set_t *set)
+{
+ CPU_SET_S(cpu, sizeof(*set), set);
+}
+
+static __inline void CPU_CLR_S(int cpu, size_t setsize, cpu_set_t *set)
+{
+ cpu_set_word_t *w = &set->__bits[0];
+
+ w[__cpuset_index(cpu)] &= ~__cpuset_mask(cpu);
+}
+
+static __inline void CPU_CLR(int cpu, cpu_set_t *set)
+{
+ CPU_CLR_S(cpu, sizeof(*set), set);
+}
+
+static __inline int CPU_ISSET_S(int cpu, size_t setsize, const cpu_set_t *set)
+{
+ const cpu_set_word_t *w = &set->__bits[0];
+
+ return ((w[__cpuset_index(cpu)] & __cpuset_mask(cpu)) != 0);
+}
+
+static __inline int CPU_ISSET(int cpu, const cpu_set_t *set)
+{
+ return CPU_ISSET_S(cpu, sizeof(*set), set);
+}
+
+/* copy src set to dest set */
+static __inline void CPU_COPY( cpu_set_t *dest, const cpu_set_t *src )
+{
+ *dest = *src;
+}
+
+static __inline void CPU_AND_S(size_t setsize, cpu_set_t *destset,
+ const cpu_set_t *srcset1, const cpu_set_t *srcset2)
+{
+ cpu_set_word_t *wdest = &destset->__bits[0];
+ const cpu_set_word_t *wsrc1 = &srcset1->__bits[0];
+ const cpu_set_word_t *wsrc2 = &srcset2->__bits[0];
+ size_t n = setsize / sizeof(*wdest);
+ size_t i;
+
+ for (i = 0; i < n; ++i)
+ wdest[i] = wsrc1[i] & wsrc2[i];
+}
+
+static __inline void CPU_AND(cpu_set_t *destset, const cpu_set_t *srcset1,
+ const cpu_set_t *srcset2)
+{
+ CPU_AND_S(sizeof(*destset), destset, srcset1, srcset2);
+}
+
+static __inline void CPU_OR_S(size_t setsize, cpu_set_t *destset,
+ const cpu_set_t *srcset1, const cpu_set_t *srcset2)
+{
+ cpu_set_word_t *wdest = &destset->__bits[0];
+ const cpu_set_word_t *wsrc1 = &srcset1->__bits[0];
+ const cpu_set_word_t *wsrc2 = &srcset2->__bits[0];
+ size_t n = setsize / sizeof(*wdest);
+ size_t i;
+
+ for (i = 0; i < n; ++i)
+ wdest[i] = wsrc1[i] | wsrc2[i];
+}
+
+static __inline void CPU_OR(cpu_set_t *destset, const cpu_set_t *srcset1,
+ const cpu_set_t *srcset2)
+{
+ CPU_OR_S(sizeof(*destset), destset, srcset1, srcset2);
+}
+
+static __inline void CPU_XOR_S(size_t setsize, cpu_set_t *destset,
+ const cpu_set_t *srcset1, const cpu_set_t *srcset2)
+{
+ cpu_set_word_t *wdest = &destset->__bits[0];
+ const cpu_set_word_t *wsrc1 = &srcset1->__bits[0];
+ const cpu_set_word_t *wsrc2 = &srcset2->__bits[0];
+ size_t n = setsize / sizeof(*wdest);
+ size_t i;
+
+ for (i = 0; i < n; ++i)
+ wdest[i] = wsrc1[i] ^ wsrc2[i];
+}
+
+static __inline void CPU_XOR(cpu_set_t *destset, const cpu_set_t *srcset1,
+ const cpu_set_t *srcset2)
+{
+ CPU_XOR_S(sizeof(*destset), destset, srcset1, srcset2);
+}
+
+static __inline void CPU_NAND_S(size_t setsize, cpu_set_t *destset,
+ const cpu_set_t *srcset1, const cpu_set_t *srcset2)
+{
+ cpu_set_word_t *wdest = &destset->__bits[0];
+ const cpu_set_word_t *wsrc1 = &srcset1->__bits[0];
+ const cpu_set_word_t *wsrc2 = &srcset2->__bits[0];
+ size_t n = setsize / sizeof(*wdest);
+ size_t i;
+
+ for (i = 0; i < n; ++i)
+ wdest[i] = ~(wsrc1[i] & wsrc2[i]);
+}
+
+static __inline void CPU_NAND(cpu_set_t *destset, const cpu_set_t *srcset1,
+ const cpu_set_t *srcset2)
+{
+ CPU_NAND_S(sizeof(*destset), destset, srcset1, srcset2);
+}
+
+static __inline int CPU_COUNT_S(size_t setsize, const cpu_set_t *set)
+{
+ int count = 0;
+ const cpu_set_word_t *w = &set->__bits[0];
+ size_t n = setsize / sizeof(*w);
+ size_t i;
+ int cpu;
+
+ for (i = 0; i < n; ++i)
+ for (cpu = 0; cpu < (int)_NCPUBITS; ++cpu)
+ count += (w[i] & __cpuset_mask(cpu)) != 0;
+
+ return count;
+}
+
+static __inline int CPU_COUNT(const cpu_set_t *set)
+{
+ return CPU_COUNT_S(sizeof(*set), set);
+}
+
+static __inline int CPU_EQUAL_S(size_t setsize, const cpu_set_t *set1,
+ const cpu_set_t *set2)
+{
+ const cpu_set_word_t *w1 = &set1->__bits[0];
+ const cpu_set_word_t *w2 = &set2->__bits[0];
+ size_t n = setsize / sizeof(*w1);
+ size_t i;
+
+ for (i = 0; i < n; ++i)
+ if (w1[i] != w2[i])
+ return 0;
+
+ return 1;
+}
+
+static __inline int CPU_EQUAL(const cpu_set_t *set1, const cpu_set_t *set2)
+{
+ return CPU_EQUAL_S(sizeof(*set1), set1, set2);
+}
+
+/* return 1 if the sets set1 and set2 are equal, otherwise return 0 */
+static __inline int CPU_CMP( const cpu_set_t *set1, const cpu_set_t *set2 )
+{
+ return CPU_EQUAL(set1, set2);
+}
+
+/* return 1 if the set is empty, otherwise return 0 */
+static __inline int CPU_EMPTY( const cpu_set_t *set )
+{
+ size_t i;
+
+ for (i=0; i < _NCPUWORDS; i++)
+ if (set->__bits[i] != 0 )
+ return 0;
+ return 1;
+}
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/newlib/libc/sys/rtems/include/sys/dirent.h b/newlib/libc/sys/rtems/include/sys/dirent.h
new file mode 100644
index 000000000..5a3a54dbf
--- /dev/null
+++ b/newlib/libc/sys/rtems/include/sys/dirent.h
@@ -0,0 +1,64 @@
+#ifndef _SYS_DIRENT_H
+# define _SYS_DIRENT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * This file was written to be compatible with the BSD directory
+ * routines, so it looks like it. But it was written from scratch.
+ * Sean Eric Fagan, sef@Kithrup.COM
+ *
+ * Copied to RTEMS configuration without modification.
+ */
+
+typedef struct _dirdesc {
+ int dd_fd;
+ long dd_loc;
+ long dd_size;
+ char *dd_buf;
+ int dd_len;
+ long dd_seek;
+} DIR;
+
+# define __dirfd(dp) ((dp)->dd_fd)
+
+DIR *opendir(const char *);
+struct dirent *readdir(DIR *);
+int readdir_r(DIR *__restrict, struct dirent *__restrict,
+ struct dirent **__restrict);
+void rewinddir(DIR *);
+int closedir(DIR *);
+void seekdir(DIR *dir, long loc);
+long telldir(DIR *dir);
+
+#ifdef _COMPILING_NEWLIB
+void _seekdir(DIR *dir, long offset);
+#endif
+
+#include <sys/types.h>
+
+#include <limits.h>
+
+struct dirent {
+ long d_ino;
+ off_t d_off;
+ unsigned short d_reclen;
+ /* we need better syntax for variable-sized arrays */
+ unsigned short d_namlen;
+ char d_name[NAME_MAX + 1];
+};
+
+int scandir ( const char *dirname,
+ struct dirent *** namelist,
+ int (*select)(const struct dirent *),
+ int (*dcomp)(const struct dirent **, const struct dirent **)
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/newlib/libc/sys/rtems/include/sys/param.h b/newlib/libc/sys/rtems/include/sys/param.h
new file mode 100644
index 000000000..f1e598c88
--- /dev/null
+++ b/newlib/libc/sys/rtems/include/sys/param.h
@@ -0,0 +1,217 @@
+/*-
+ * Copyright (c) 1982, 1986, 1989, 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.
+ *
+ * @(#)param.h 8.3 (Berkeley) 4/4/95
+ * $Id$
+ */
+
+#ifndef _SYS_PARAM_H_
+#define _SYS_PARAM_H_
+
+/* from newlib's <sys/param.h> */
+
+#include <sys/config.h>
+#include <machine/endian.h>
+
+# define PATHSIZE (1024)
+
+/* end of from newlib's <sys/param.h> */
+
+#include <unistd.h>
+
+#define BSD 199506 /* System version (year & month). */
+#define BSD4_3 1
+#define BSD4_4 1
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef LOCORE
+#include <sys/types.h>
+#endif
+
+/*
+ * Machine-independent constants (some used in following include files).
+ * Redefined constants are from POSIX 1003.1 limits file.
+ *
+ * MAXCOMLEN should be >= sizeof(ac_comm) (see <acct.h>)
+ */
+#include <sys/syslimits.h>
+
+#define MAXCOMLEN 19 /* max command name remembered */
+#define MAXINTERP PATH_MAX /* max interpreter file name length */
+#define MAXLOGNAME 33 /* max login name length (incl. NUL) */
+#define MAXUPRC CHILD_MAX /* max simultaneous processes */
+#define NCARGS ARG_MAX /* max bytes for an exec function */
+#define NGROUPS (NGROUPS_MAX+1) /* max number groups */
+#define NOFILE OPEN_MAX /* max open files per process */
+#define NOGROUP 65535 /* marker for empty group set member */
+#define MAXHOSTNAMELEN 256 /* max hostname size */
+#define SPECNAMELEN 63 /* max length of devicename */
+
+/* More types and definitions used throughout the kernel. */
+#if defined(KERNEL) || defined(_KERNEL)
+#include <sys/cdefs.h>
+#include <sys/errno.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/uio.h>
+#include <sys/priority.h>
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef TRUE
+#define TRUE 1
+#endif
+#endif
+
+/* Signals. */
+#include <sys/signal.h>
+
+/* Machine type dependent parameters. */
+#include <machine/param.h>
+#include <machine/limits.h>
+
+#define PRIMASK 0x0ff
+#define PCATCH 0x100 /* OR'd with pri for tsleep to check signals */
+
+#define NZERO 0 /* default "nice" */
+
+#define NBPW sizeof(int) /* number of bytes per word (integer) */
+
+#define CMASK 022 /* default file mask: S_IWGRP|S_IWOTH */
+#define NODEV (dev_t)(-1) /* non-existent device */
+
+#define CBLOCK 128 /* Clist block size, must be a power of 2. */
+#define CBQSIZE (CBLOCK/NBBY) /* Quote bytes/cblock - can do better. */
+ /* Data chars/clist. */
+#define CBSIZE (CBLOCK - sizeof(struct cblock *) - CBQSIZE)
+#define CROUND (CBLOCK - 1) /* Clist rounding. */
+
+/*
+ * File system parameters and macros.
+ *
+ * MAXBSIZE - Filesystems are made out of blocks of at most MAXBSIZE bytes
+ * per block. MAXBSIZE may be made larger without effecting
+ * any existing filesystems as long as it does not exceed MAXPHYS,
+ * and may be made smaller at the risk of not being able to use
+ * filesystems which require a block size exceeding MAXBSIZE.
+ *
+ * BKVASIZE - Nominal buffer space per buffer, in bytes. BKVASIZE is the
+ * minimum KVM memory reservation the kernel is willing to make.
+ * Filesystems can of course request smaller chunks. Actual
+ * backing memory uses a chunk size of a page (PAGE_SIZE).
+ *
+ * If you make BKVASIZE too small you risk seriously fragmenting
+ * the buffer KVM map which may slow things down a bit. If you
+ * make it too big the kernel will not be able to optimally use
+ * the KVM memory reserved for the buffer cache and will wind
+ * up with too-few buffers.
+ *
+ * The default is 16384, roughly 2x the block size used by a
+ * normal UFS filesystem.
+ */
+#define MAXBSIZE 65536 /* must be power of 2 */
+#define BKVASIZE 16384 /* must be power of 2 */
+#define BKVAMASK (BKVASIZE-1)
+
+/*
+ * MAXPATHLEN defines the longest permissible path length after expanding
+ * symbolic links. It is used to allocate a temporary buffer from the buffer
+ * pool in which to do the name expansion, hence should be a power of two,
+ * and must be less than or equal to MAXBSIZE. MAXSYMLINKS defines the
+ * maximum number of symbolic links that may be expanded in a path name.
+ * It should be set high enough to allow all legitimate uses, but halt
+ * infinite loops reasonably quickly.
+ */
+#define MAXPATHLEN PATH_MAX
+#define MAXSYMLINKS 32
+
+/* Bit map related macros. */
+#define setbit(a,i) (((unsigned char *)(a))[(i)/NBBY] |= 1<<((i)%NBBY))
+#define clrbit(a,i) (((unsigned char *)(a))[(i)/NBBY] &= ~(1<<((i)%NBBY)))
+#define isset(a,i) \
+ (((const unsigned char *)(a))[(i)/NBBY] & (1<<((i)%NBBY)))
+#define isclr(a,i) \
+ ((((const unsigned char *)(a))[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
+
+/* Macros for counting and rounding. */
+#ifndef howmany
+#define howmany(x, y) (((x)+((y)-1))/(y))
+#endif
+#define rounddown(x, y) (((x)/(y))*(y))
+#define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) /* to any y */
+#define roundup2(x, y) (((x)+((y)-1))&(~((y)-1))) /* if y is powers of two */
+#define powerof2(x) ((((x)-1)&(x))==0)
+
+/* Macros for min/max. */
+#if !(defined(KERNEL) || defined(_KERNEL))
+#define MIN(a,b) (((a)<(b))?(a):(b))
+#define MAX(a,b) (((a)>(b))?(a):(b))
+#endif
+
+/*
+ * Constants for setting the parameters of the kernel memory allocator.
+ *
+ * 2 ** MINBUCKET is the smallest unit of memory that will be
+ * allocated. It must be at least large enough to hold a pointer.
+ *
+ * Units of memory less or equal to MAXALLOCSAVE will permanently
+ * allocate physical memory; requests for these size pieces of
+ * memory are quite fast. Allocations greater than MAXALLOCSAVE must
+ * always allocate and free physical memory; requests for these
+ * size allocations should be done infrequently as they will be slow.
+ *
+ * Constraints: PAGE_SIZE <= MAXALLOCSAVE <= 2 ** (MINBUCKET + 14), and
+ * MAXALLOCSIZE must be a power of two.
+ */
+#define MINBUCKET 4 /* 4 => min allocation of 16 bytes */
+#define MAXALLOCSAVE (2 * PAGE_SIZE)
+
+/*
+ * Scale factor for scaled integers used to count %cpu time and load avgs.
+ *
+ * The number of CPU `tick's that map to a unique `%age' can be expressed
+ * by the formula (1 / (2 ^ (FSHIFT - 11))). The maximum load average that
+ * can be calculated (assuming 32 bits) can be closely approximated using
+ * the formula (2 ^ (2 * (16 - FSHIFT))) for (FSHIFT < 15).
+ *
+ * For the scheduler to maintain a 1:1 mapping of CPU `tick' to `%age',
+ * FSHIFT must be at least 11; this gives us a maximum load avg of ~1024.
+ */
+#define FSHIFT 11 /* bits to right of fixed binary point */
+#define FSCALE (1<<FSHIFT)
+
+#endif /* _SYS_PARAM_H_ */
diff --git a/newlib/libc/sys/rtems/include/sys/syslimits.h b/newlib/libc/sys/rtems/include/sys/syslimits.h
new file mode 100644
index 000000000..2295afe34
--- /dev/null
+++ b/newlib/libc/sys/rtems/include/sys/syslimits.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. 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 the University of
+ * California, Berkeley and its contributors.
+ * 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.
+ *
+ * @(#)syslimits.h 8.1 (Berkeley) 6/2/93
+ * $Id$
+ */
+
+#ifndef _SYS_SYSLIMITS_H_
+#define _SYS_SYSLIMITS_H_
+
+#define ARG_MAX 4096 /* max bytes for an exec function */
+#ifndef CHILD_MAX
+#define CHILD_MAX 6 /* max simultaneous processes */
+#endif
+#define LINK_MAX 8 /* max file link count */
+#define MAX_CANON 255 /* max bytes in term canon input line */
+#define MAX_INPUT 255 /* max bytes in terminal input */
+#define NAME_MAX 255 /* max bytes in a file name */
+#define NGROUPS_MAX 15 /* max supplemental group id's */
+#ifndef OPEN_MAX
+#define OPEN_MAX 64 /* max open files per process */
+#endif
+#define PATH_MAX 255 /* max bytes in pathname */
+#define PIPE_BUF 512 /* max bytes for atomic pipe writes */
+#define IOV_MAX 1024 /* max elements in i/o vector */
+#define BC_BASE_MAX 99 /* max ibase/obase values in bc(1) */
+#define BC_DIM_MAX 2048 /* max array elements in bc(1) */
+#define BC_SCALE_MAX 99 /* max scale value in bc(1) */
+#define BC_STRING_MAX 1000 /* max const string length in bc(1) */
+#define COLL_WEIGHTS_MAX 0 /* max weights for order keyword */
+#define EXPR_NEST_MAX 32 /* max expressions nested in expr(1) */
+#define LINE_MAX 2048 /* max bytes in an input line */
+#define RE_DUP_MAX 255 /* max RE's in interval notation */
+
+#endif
diff --git a/newlib/libc/sys/rtems/include/sys/utime.h b/newlib/libc/sys/rtems/include/sys/utime.h
new file mode 100644
index 000000000..561136bb4
--- /dev/null
+++ b/newlib/libc/sys/rtems/include/sys/utime.h
@@ -0,0 +1,34 @@
+/*
+ * $Id$
+ */
+
+#ifndef __UTIME_h__
+#define __UTIME_h__
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * POSIX 1003.1b 5.6.6 Set File Access and Modification Times
+ */
+
+struct utimbuf {
+ time_t actime; /* Access time */
+ time_t modtime; /* Modification time */
+};
+
+/* Functions */
+
+int utime(
+ const char *path,
+ const struct utimbuf *times
+);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* _SYS_UTIME_H */