This is the mail archive of the
newlib@sources.redhat.com
mailing list for the newlib project.
Re: [RFA]: Adding sysconf values to libc/include/sys/unistd.h
OK.
Attached is a replacement for the file sys/unistd.h in
newlib 1.8.2 that AFAIK adds every _SC constant defined
in POSIX 1003.1b and the last draft 1003.1c I saw.
I must admit to not compiling this. The only real difference
between the RTEMS unistd.h and the newlib one were the
missing _SC defines in newlib's version. They were in
alphabetical order in RTEMS and numbered accordingly. I
kept the numeric values for the ones already in newlib
and renumbered the remaining ones.
RTEMS would not require its own unistd.h with these modifications.
YEAH!!
I looked some at the files in newlib/libc/sys/rtems and mostly they
reflect the addition of pthreads to the corresponding newlib files.
Any ideas on how to merge them into the mainstream?
Christopher Faylor wrote:
>
> On Wed, Oct 25, 2000 at 10:06:32AM -0500, Joel Sherrill wrote:
> >> Not if it breaks backwards compatibility, IMO.
> >
> >RTEMS has no backward compatability issues on the values of the
> >constants. Make them what they have to be and RTEMS will
> >deal with the change.
> >
> >I repeat -- RTEMS tries to be standard -- we do not want to
> >have special configurations or deviate. If the constants
> >are all there, we don't care what the values are. We just
> >want them defined coherently and efficiently. :)
> >
> >So if changing the numbers makes them compatable with Cygwin
> >or Solaris or whatever, change them. If they are defined,
> >we would prefer to use them from libc/include.
>
> I was referring to backwards compatibility with anything that
> is using the constants. Cygwin is one thing. I don't know
> if anything else is using them.
>
> The best way to handle this is for you to submit a patch. That
> should make it clear what is changing and what is not.
>
> cgf
--
Joel Sherrill, Ph.D. Director of Research & Development
joel@OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
#ifndef _SYS_UNISTD_H
#define _SYS_UNISTD_H
#ifdef __cplusplus
extern "C" {
#endif
#include <_ansi.h>
#include <sys/types.h>
#define __need_size_t
#include <stddef.h>
extern char **environ;
void _EXFUN(_exit, (int __status ) _ATTRIBUTE ((noreturn)));
int _EXFUN(access,(const char *__path, int __amode ));
unsigned _EXFUN(alarm, (unsigned __secs ));
int _EXFUN(chdir, (const char *__path ));
int _EXFUN(chmod, (const char *__path, mode_t __mode ));
int _EXFUN(chown, (const char *__path, uid_t __owner, gid_t __group ));
int _EXFUN(close, (int __fildes ));
char _EXFUN(*ctermid, (char *__s ));
char _EXFUN(*cuserid, (char *__s ));
int _EXFUN(dup, (int __fildes ));
int _EXFUN(dup2, (int __fildes, int __fildes2 ));
int _EXFUN(execl, (const char *__path, const char *, ... ));
int _EXFUN(execle, (const char *__path, const char *, ... ));
int _EXFUN(execlp, (const char *__file, const char *, ... ));
int _EXFUN(execv, (const char *__path, char * const __argv[] ));
int _EXFUN(execve, (const char *__path, char * const __argv[], char * const __envp[] ));
int _EXFUN(execvp, (const char *__file, char * const __argv[] ));
pid_t _EXFUN(fork, (void ));
long _EXFUN(fpathconf, (int __fd, int __name ));
int _EXFUN(fsync, (int __fd));
char _EXFUN(*getcwd, (char *__buf, size_t __size ));
gid_t _EXFUN(getegid, (void ));
uid_t _EXFUN(geteuid, (void ));
gid_t _EXFUN(getgid, (void ));
int _EXFUN(getgroups, (int __gidsetsize, gid_t __grouplist[] ));
char _EXFUN(*getlogin, (void ));
char _EXFUN(*getpass, (__const char *__prompt));
size_t _EXFUN(getpagesize, (void));
pid_t _EXFUN(getpgrp, (void ));
pid_t _EXFUN(getpid, (void ));
pid_t _EXFUN(getppid, (void ));
uid_t _EXFUN(getuid, (void ));
int _EXFUN(isatty, (int __fildes ));
int _EXFUN(link, (const char *__path1, const char *__path2 ));
int _EXFUN(nice, (int __nice_value ));
off_t _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ));
long _EXFUN(pathconf, (const char *__path, int __name ));
int _EXFUN(pause, (void ));
int _EXFUN(pipe, (int __fildes[2] ));
int _EXFUN(read, (int __fildes, void *__buf, size_t __nbyte ));
int _EXFUN(rmdir, (const char *__path ));
void * _EXFUN(sbrk, (size_t __incr));
int _EXFUN(setgid, (gid_t __gid ));
int _EXFUN(setpgid, (pid_t __pid, pid_t __pgid ));
pid_t _EXFUN(setsid, (void ));
int _EXFUN(setuid, (uid_t __uid ));
unsigned _EXFUN(sleep, (unsigned int __seconds ));
void _EXFUN(swab, (const void *, void *, ssize_t));
long _EXFUN(sysconf, (int __name ));
pid_t _EXFUN(tcgetpgrp, (int __fildes ));
int _EXFUN(tcsetpgrp, (int __fildes, pid_t __pgrp_id ));
char _EXFUN(*ttyname, (int __fildes ));
int _EXFUN(unlink, (const char *__path ));
int _EXFUN(write, (int __fildes, const void *__buf, size_t __nbyte ));
/* Provide prototypes for most of the _<systemcall> names that are
provided in newlib for some compilers. */
int _EXFUN(_close, (int __fildes ));
pid_t _EXFUN(_fork, (void ));
pid_t _EXFUN(_getpid, (void ));
int _EXFUN(_link, (const char *__path1, const char *__path2 ));
off_t _EXFUN(_lseek, (int __fildes, off_t __offset, int __whence ));
int _EXFUN(_read, (int __fildes, void *__buf, size_t __nbyte ));
void * _EXFUN(_sbrk, (size_t __incr));
int _EXFUN(_unlink, (const char *__path ));
int _EXFUN(_write, (int __fildes, const void *__buf, size_t __nbyte ));
#if defined(__CYGWIN32__) || defined(__rtems__)
unsigned _EXFUN(usleep, (unsigned int __useconds));
int _EXFUN(ftruncate, (int __fd, off_t __length));
int _EXFUN(truncate, (const char *, off_t __length));
int _EXFUN(gethostname, (char *__name, size_t __len));
char * _EXFUN(mktemp, (char *));
int _EXFUN(sync, (void));
int _EXFUN(readlink, (const char *__path, char *__buf, int __buflen));
int _EXFUN(symlink, (const char *__name1, const char *__name2));
#endif
# define F_OK 0
# define R_OK 4
# define W_OK 2
# define X_OK 1
# define SEEK_SET 0
# define SEEK_CUR 1
# define SEEK_END 2
/*
* RTEMS adheres to a later version of POSIX -- 1003.1b.
*
* XXX this version string should change.
*/
#ifdef __rtems__
#ifndef _POSIX_JOB_CONTROL
# define _POSIX_JOB_CONTROL 1
#endif
#ifndef _POSIX_SAVED_IDS
# define _POSIX_SAVED_IDS 1
#endif
# define _POSIX_VERSION 199009L
#else
#ifdef __svr4__
# define _POSIX_JOB_CONTROL 1
# define _POSIX_SAVED_IDS 1
# define _POSIX_VERSION 199009L
#endif
#endif
#ifdef __CYGWIN32__
# define _POSIX_JOB_CONTROL 1
# define _POSIX_SAVED_IDS 0
# define _POSIX_VERSION 199009L
#endif
#define STDIN_FILENO 0 /* standard input file descriptor */
#define STDOUT_FILENO 1 /* standard output file descriptor */
#define STDERR_FILENO 2 /* standard error file descriptor */
long _EXFUN(sysconf, (int __name));
/*
* 4.8.1 Get Configurable System Variables, P1003.1b-1993, p. 96
*
* NOTE: Table 4-2, Configurable System Variables, p. 96
*/
#define _SC_ARG_MAX 0
#define _SC_CHILD_MAX 1
#define _SC_CLK_TCK 2
#define _SC_NGROUPS_MAX 3
#define _SC_OPEN_MAX 4
/* no _SC_STREAM_MAX */
#define _SC_JOB_CONTROL 5
#define _SC_SAVED_IDS 6
#define _SC_VERSION 7
#define _SC_PAGESIZE 8
#define _SC_AIO_LISTIO_MAX 9
#define _SC_AIO_MAX 10
#define _SC_AIO_PRIO_DELTA_MAX 11
#define _SC_DELAYTIMER_MAX 12
#define _SC_MQ_OPEN_MAX 13
#define _SC_MQ_PRIO_MAX 14
#define _SC_RTSIG_MAX 15
#define _SC_SEM_NSEMS_MAX 16
#define _SC_SEM_VALUE_MAX 17
#define _SC_SIGQUEUE_MAX 18
#define _SC_TIMER_MAX 19
#define _SC_TZNAME_MAX 20
#define _SC_ASYNCHRONOUS_IO 21
#define _SC_FSYNC 22
#define _SC_MAPPED_FILES 23
#define _SC_MEMLOCK 24
#define _SC_MEMLOCK_RANGE 25
#define _SC_MEMORY_PROTECTION 26
#define _SC_MESSAGE_PASSING 27
#define _SC_PRIORITIZED_IO 28
#define _SC_REALTIME_SIGNALS 29
#define _SC_SEMAPHORES 30
#define _SC_SHARED_MEMORY_OBJECTS 31
#define _SC_SYNCHRONIZED_IO 32
#define _SC_TIMERS 33
/*
* P1003.1c/D10, p. 52 adds the following.
*/
#define _SC_GETGR_R_SIZE_MAX 34
#define _SC_GETPW_R_SIZE_MAX 35
#define _SC_LOGIN_NAME_MAX 36
#define _SC_THREAD_DESTRUCTOR_ITERATIONS 37
#define _SC_THREAD_KEYS_MAX 38
#define _SC_THREAD_STACK_MIN 39
#define _SC_THREAD_THREADS_MAX 40
#define _SC_TTY_NAME_MAX 41
#define _SC_THREADS 42
#define _SC_THREAD_ATTR_STACKADDR 43
#define _SC_THREAD_ATTR_STACKSIZE 44
#define _SC_THREAD_PRIORITY_SCHEDULING 45
#define _SC_THREAD_PRIO_INHERIT 46
/* _SC_THREAD_PRIO_PROTECT was _SC_THREAD_PRIO_CEILING in early drafts */
#define _SC_THREAD_PRIO_PROTECT 47
#define _SC_THREAD_PRIO_PROTECT 48
#define _SC_THREAD_PROCESS_SHARED 49
#define _SC_THREAD_SAFE_FUNCTIONS 50
# define _PC_LINK_MAX 0
# define _PC_MAX_CANON 1
# define _PC_MAX_INPUT 2
# define _PC_NAME_MAX 3
# define _PC_PATH_MAX 4
# define _PC_PIPE_BUF 5
# define _PC_CHOWN_RESTRICTED 6
# define _PC_NO_TRUNC 7
# define _PC_VDISABLE 8
# define _PC_ASYNC_IO 9
# define _PC_PRIO_IO 10
# define _PC_SYNC_IO 11
# ifndef _POSIX_SOURCE
# define MAXNAMLEN 1024
# endif /* _POSIX_SOURCE */
/* FIXME: This is temporary until winsup gets sorted out. */
#ifdef __CYGWIN32__
#define MAXPATHLEN (260 - 1 /* NUL */)
#else
# define MAXPATHLEN 1024
#endif
#ifdef __cplusplus
}
#endif
#endif /* _SYS_UNISTD_H */