[RFA]: Adding sysconf values to libc/include/sys/unistd.h
Christopher Faylor
cgf@redhat.com
Wed Oct 25 16:41:00 GMT 2000
This is interesting but it is not a patch. Sending the output of
'diff -up old new' along with a corresponding ChangeLog entry (following
the conventions of the other newlib ChangeLog entries) would be the
fastest way to get your changes into newlib, assuming that Jeff accepts
them.
cgf
On Wed, Oct 25, 2000 at 04:30:33PM -0500, Joel Sherrill wrote:
>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 */
--
cgf@cygnus.com Red Hat, Inc.
http://sources.redhat.com/ http://www.redhat.com/
More information about the Newlib
mailing list