[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