summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/include
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2007-02-07 17:22:40 +0000
committerCorinna Vinschen <corinna@vinschen.de>2007-02-07 17:22:40 +0000
commit59e3b6ca7dc10603d1e692928a236fe5a0523200 (patch)
tree17949dbe48d690e650c7b3cefa903f711e49477d /winsup/cygwin/include
parent0e37a2e6e5f9bd3922f050da2a09b0e9d1dc5afd (diff)
downloadcygnal-59e3b6ca7dc10603d1e692928a236fe5a0523200.tar.gz
cygnal-59e3b6ca7dc10603d1e692928a236fe5a0523200.tar.bz2
cygnal-59e3b6ca7dc10603d1e692928a236fe5a0523200.zip
* cygmalloc.h (MALLOC_FAILURE_ACTION): Define empty.
* cygwin.din (posix_madvise): Export. (posix_memalign): Export. * fhandler.cc (fhandler_base::fpathconf): Return useful values in _PC_VDISABLE, _PC_SYNC_IO and _PC_SYMLINK_MAX cases. * malloc_wrapper.cc (malloc): Set errno here since it's not set in dlmalloc.c anymore. (realloc): Ditto. (calloc): Ditto. (memalign): Ditto. (valloc): Ditto. (posix_memalign): New function. * mmap.cc (posix_madvise): New function. * sysconf.cc (get_open_max): New function. (get_page_size): Ditto. (get_nproc_values): Ditto. (get_avphys): Ditto. (sc_type): New type. (sca): New array to map _SC_xxx options to sysconf return values. (sysconf): Reimplement using sca array. * include/limits.h: Add all missing values as defined by SUSv3. * include/pthread.h (PTHREAD_DESTRUCTOR_ITERATIONS): Move definition to sys/limits.h. (PTHREAD_KEYS_MAX): Ditto. * include/semaphore.h (SEM_VALUE_MAX): Ditto. * include/cygwin/stdlib.h (posix_memalign): Declare. * include/cygwin/version.h: Bump API minor number. * include/sys/mman.h: Add posix_madvise flags. (posix_madvise): Declare. * include/sys/termios.h (_POSIX_VDISABLE): Move definition to sys/limits.h.
Diffstat (limited to 'winsup/cygwin/include')
-rw-r--r--winsup/cygwin/include/cygwin/stdlib.h3
-rw-r--r--winsup/cygwin/include/cygwin/version.h5
-rw-r--r--winsup/cygwin/include/limits.h250
-rw-r--r--winsup/cygwin/include/pthread.h8
-rw-r--r--winsup/cygwin/include/semaphore.h3
-rw-r--r--winsup/cygwin/include/sys/mman.h13
-rw-r--r--winsup/cygwin/include/sys/termios.h7
7 files changed, 233 insertions, 56 deletions
diff --git a/winsup/cygwin/include/cygwin/stdlib.h b/winsup/cygwin/include/cygwin/stdlib.h
index e034fe895..208a64e9e 100644
--- a/winsup/cygwin/include/cygwin/stdlib.h
+++ b/winsup/cygwin/include/cygwin/stdlib.h
@@ -1,6 +1,6 @@
/* stdlib.h
- Copyright 2005, 2006 Red Hat Inc.
+ Copyright 2005, 2006, 2007 Red Hat Inc.
This file is part of Cygwin.
@@ -32,6 +32,7 @@ int unlockpt (int);
#endif /*__STRICT_ANSI__*/
int posix_openpt (int);
+int posix_memalign (void **, size_t, size_t);
#ifdef _COMPILING_NEWLIB
#define unsetenv UNUSED_unsetenv
diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h
index 44c7229c3..d015fade0 100644
--- a/winsup/cygwin/include/cygwin/version.h
+++ b/winsup/cygwin/include/cygwin/version.h
@@ -1,7 +1,7 @@
/* version.h -- Cygwin version numbers and accompanying documentation.
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006 Red Hat, Inc.
+ 2005, 2006, 2007 Red Hat, Inc.
This file is part of Cygwin.
@@ -301,12 +301,13 @@ details. */
161: Export resolver functions.
162: New struct ifreq. Export if_nametoindex, if_indextoname,
if_nameindex, if_freenameindex.
+ 163: Export posix_madvise, posix_memalign.
*/
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
#define CYGWIN_VERSION_API_MAJOR 0
-#define CYGWIN_VERSION_API_MINOR 162
+#define CYGWIN_VERSION_API_MINOR 163
/* There is also a compatibity version number associated with the
shared memory regions. It is incremented when incompatible
diff --git a/winsup/cygwin/include/limits.h b/winsup/cygwin/include/limits.h
index 3c4ac2b4b..260e63a53 100644
--- a/winsup/cygwin/include/limits.h
+++ b/winsup/cygwin/include/limits.h
@@ -1,6 +1,6 @@
/* limits.h
- Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Red Hat, Inc.
+ Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Red Hat, Inc.
This file is part of Cygwin.
@@ -127,16 +127,46 @@ details. */
/* Runtime Invariant Values */
+/* Please note that symbolic names shall be ommited, on specific
+ implementations where the corresponding value is equal to or greater
+ than the stated minimum, but is unspecified. This indetermination
+ might depend on the amount of available memory space on a specific
+ instance of a specific implementation. The actual value supported by
+ a specific instance shall be provided by the sysconf() function. */
+
+/* Maximum number of I/O operations in a single list I/O call supported by
+ the implementation. Not yet implemented. */
+#undef AIO_LISTIO_MAX
+/* #define AIO_LISTIO_MAX >= _POSIX_AIO_LISTIO_MAX */
+
+/* Maximum number of outstanding asynchronous I/O operations supported by
+ the implementation. Not yet implemented. */
+#undef AIO_MAX
+/* #define AIO_MAX >= _POSIX_AIO_MAX */
+
+/* The maximum amount by which a process can decrease its asynchronous I/O
+ priority level from its own scheduling priority. */
+#undef AIO_PRIO_DELTA_MAX
+/* #define AIO_PRIO_DELTA_MAX >= 0 */
+
/* Maximum number of bytes in arguments and environment passed in an exec
call. 32000 is the safe value used for Windows processes when called
from Cygwin processes. */
#undef ARG_MAX
#define ARG_MAX 32000
+/* Maximum number of functions that may be registered with atexit(). */
+#undef ATEXIT_MAX
+#define ATEXIT_MAX 32
+
/* Maximum number of simultaneous processes per real user ID. */
#undef CHILD_MAX
#define CHILD_MAX 256
+/* Maximum number of timer expiration overruns. Not yet implemented. */
+#undef DELAYTIMER_MAX
+/* #define DELAYTIMER_MAX >= _POSIX_DELAYTIMER_MAX */
+
/* Maximum length of a host name. */
#undef HOST_NAME_MAX
#define HOST_NAME_MAX 255
@@ -149,6 +179,16 @@ details. */
#undef LOGIN_NAME_MAX
#define LOGIN_NAME_MAX 256 /* equal to UNLEN defined in w32api/lmcons.h */
+/* The maximum number of open message queue descriptors a process may hold.
+ Not yet implemented. */
+#undef MQ_OPEN_MAX
+/* #define MQ_OPEN_MAX >= _POSIX_MQ_OPEN_MAX */
+
+/* The maximum number of message priorities supported by the implementation.
+ Not yet implemented. */
+#undef MQ_PRIO_MAX
+/* #define MQ_PRIO_MAX >= _POSIX_MQ_PRIO_MAX */
+
/* # of open files per process. Actually it can be more since Cygwin
grows the dtable as necessary. We define a reasonable limit here
which is returned by getdtablesize(), sysconf(_SC_OPEN_MAX) and
@@ -162,11 +202,61 @@ details. */
#define PAGESIZE 65536
#define PAGE_SIZE PAGESIZE
+/* Maximum number of attempts made to destroy a thread's thread-specific
+ data values on thread exit. */
+/* FIXME: I really don't understand this value. Why should multiple
+ attempts be necessary to destroy thread-specific data?!? Anyway, the
+ current value here is 1, taken originally from our pthread.h file,
+ where it was mistakenly defined first. Unfortunately this value is
+ lower than the POSIX defined minimum value, which is 4. */
+#undef PTHREAD_DESTRUCTOR_ITERATIONS
+#define PTHREAD_DESTRUCTOR_ITERATIONS 1
+
+/* Maximum number of data keys that can be created by a process. */
+/* Tls has 64 items for pre win2000 - and we don't want to use them all :] */
+#undef PTHREAD_KEYS_MAX
+#define PTHREAD_KEYS_MAX 32
+
+/* Minimum size in bytes of thread stack storage. */
+/* Actually the minimum stack size is somewhat of a split personality.
+ The size parameter in a CreateThread call is the size of the initially
+ commited stack size, which can be specified as low as 4K. However, the
+ default *reserved* stack size is 1 Meg, unless the .def file specifies
+ another STACKSIZE value. And even if you specify a stack size below 64K,
+ the allocation granularity is in the way. You can never squeeze multiple
+ threads in the same allocation granularity slot. Oh well. */
+#undef PTHREAD_STACK_MIN
+#define PTHREAD_STACK_MIN 65536
+
+/* Maximum number of threads that can be created per process. */
+/* Windows allows any arbitrary number of threads per process. */
+#undef PTHREAD_THREADS_MAX
+/* #define PTHREAD_THREADS_MAX unspecified */
+
/* Maximum number of realtime signals reserved for application use. */
/* FIXME: We only support one realtime signal but _POSIX_RTSIG_MAX is 8. */
#undef RTSIG_MAX
#define RTSIG_MAX 1
+/* Maximum number of semaphores that a process may have. */
+/* Windows allows any arbitrary number of semaphores per process. */
+#undef SEM_NSEMS_MAX
+/* #define SEM_NSEMS_MAX unspecified */
+
+/* The maximum value a semaphore may have. */
+#undef SEM_VALUE_MAX
+#define SEM_VALUE_MAX 1147483648
+
+/* Maximum number of queued signals that a process may send and have pending
+ at the receiver(s) at any time. */
+#undef SIGQUEUE_MAX
+#define SIGQUEUE_MAX 32
+
+/* The maximum number of replenishment operations that may be simultaneously
+ pending for a particular sporadic server scheduler. Not implemented. */
+#undef SS_REPL_MAX
+/* #define SS_REPL_MAX >= _POSIX_SS_REPL_MAX */
+
/* Number of streams that one process can have open at one time. */
#undef STREAM_MAX
#define STREAM_MAX 20
@@ -179,10 +269,34 @@ details. */
#undef TIMER_MAX
#define TIMER_MAX 32
+/* Maximum length of the trace event name. Not implemented. */
+#undef TRACE_EVENT_NAME_MAX
+/* #define TRACE_EVENT_NAME_MAX >= _POSIX_TRACE_EVENT_NAME_MAX */
+
+/* Maximum length of the trace generation version string or of the trace
+ stream name. Not implemented. */
+#undef TRACE_NAME_MAX
+/* #define TRACE_NAME_MAX >= _POSIX_TRACE_NAME_MAX */
+
+/* Maximum number of trace streams that may simultaneously exist in the
+ system. Not implemented. */
+#undef TRACE_SYS_MAX
+/* #define TRACE_SYS_MAX >= _POSIX_TRACE_SYS_MAX */
+
+/* Maximum number of user trace event type identifiers that may simultaneously
+ exist in a traced process, including the predefined user trace event
+ POSIX_TRACE_UNNAMED_USER_EVENT. Not implemented. */
+#undef TRACE_USER_EVENT_MAX
+/* #define TRACE_USER_EVENT_MAX >= _POSIX_TRACE_USER_EVENT_MAX */
+
/* Maximum number of characters in a tty name. */
#undef TTY_NAME_MAX
#define TTY_NAME_MAX 12
+/* Maximum number of bytes supported for the name of a timezone (not of the TZ variable). Not implemented. */
+#undef TZNAME_MAX
+/* #define TZNAME_MAX >= _POSIX_TZNAME_MAX */
+
/* Pathname Variable Values */
@@ -215,6 +329,33 @@ details. */
#undef PIPE_BUF
#define PIPE_BUF 4096
+/* Minimum number of bytes of storage actually allocated for any portion
+ of a file. Not implemented. */
+#undef POSIX_ALLOC_SIZE_MIN
+/* #define POSIX_ALLOC_SIZE_MIN unspecifed */
+
+/* Recommended increment for file transfer sizes between the
+ {POSIX_REC_MIN_XFER_SIZE} and {POSIX_REC_MAX_XFER_SIZE} values.
+ Not implemented. */
+#undef POSIX_REC_INCR_XFER_SIZE
+/* #define POSIX_REC_INCR_XFER_SIZE unspecifed */
+
+/* Maximum recommended file transfer size. Not implemented. */
+#undef POSIX_REC_MAX_XFER_SIZE
+/* #define POSIX_REC_MAX_XFER_SIZE unspecifed */
+
+/* Minimum recommended file transfer size. Not implemented. */
+#undef POSIX_REC_MIN_XFER_SIZE
+/* #define POSIX_REC_MIN_XFER_SIZE unspecifed */
+
+/* Recommended file transfer buffer alignment. Not implemented. */
+#undef POSIX_REC_XFER_ALIGN
+/* #define POSIX_REC_XFER_ALIGN unspecifed */
+
+/* Maximum number of bytes in a symbolic link. */
+#undef SYMLINK_MAX
+#define SYMLINK_MAX PATH_MAX
+
/* Runtime Increasable Values */
@@ -234,16 +375,18 @@ details. */
#undef BC_STRING_MAX
#define BC_STRING_MAX 1000
+/* Maximum number of bytes in a character class name. Not implemented. */
+#undef CHARCLASS_NAME_MAX
+/* #define CHARCLASS_NAME_MAX >= _POSIX2_CHARCLASS_NAME_MAX */
+
/* Maximum number of weights that can be assigned to an entry of the
LC_COLLATE order keyword in the locale definition file. */
/* FIXME: We don't support this at all right now, so this value is
misleading at best. It's also lower than _POSIX2_COLL_WEIGHTS_MAX
which is not good. So, for now we deliberately not define it even
though it was defined in the former syslimits.h file. */
-#if 0
#undef COLL_WEIGHTS_MAX
-#define COLL_WEIGHTS_MAX 0
-#endif
+/* #define COLL_WEIGHTS_MAX >= _POSIX2_COLL_WEIGHTS_MAX */
/* Maximum number of expressions that can be nested within parentheses
by the expr utility. */
@@ -265,51 +408,80 @@ details. */
#define RE_DUP_MAX 255
-/* Minimum Values */
-
/* POSIX values */
/* These should never vary from one system type to another */
/* They represent the minimum values that POSIX systems must support.
POSIX-conforming apps must not require larger values. */
-#define _POSIX_ARG_MAX 4096
-#define _POSIX_CHILD_MAX 6
-#define _POSIX_HOST_NAME_MAX 255
-#define _POSIX_LINK_MAX 8
-#define _POSIX_LOGIN_NAME_MAX 9
-#define _POSIX_MAX_CANON 255
-#define _POSIX_MAX_INPUT 255
-#define _POSIX_NAME_MAX 14
-#define _POSIX_NGROUPS_MAX 0
-#define _POSIX_OPEN_MAX 16
-#define _POSIX_PATH_MAX 255
-#define _POSIX_PIPE_BUF 512
-#define _POSIX_RE_DUP_MAX 255
-#define _POSIX_RTSIG_MAX 8
-#define _POSIX_SSIZE_MAX 32767
-#define _POSIX_STREAM_MAX 8
-#define _POSIX_SYMLINK_MAX 255
-#define _POSIX_SYMLOOP_MAX 8
-#define _POSIX_TIMER_MAX 32
-#define _POSIX_TTY_NAME_MAX 9
-#define _POSIX_TZNAME_MAX 3
-
-#define _POSIX2_BC_BASE_MAX 99
-#define _POSIX2_BC_DIM_MAX 2048
-#define _POSIX2_BC_SCALE_MAX 99
-#define _POSIX2_BC_STRING_MAX 1000
-#if 0 /* See comment about COLL_WEIGHTS_MAX above. */
-#define _POSIX2_COLL_WEIGHTS_MAX 2
-#endif
-#define _POSIX2_EXPR_NEST_MAX 32
-#define _POSIX2_LINE_MAX 2048
-#define _POSIX2_RE_DUP_MAX 255
+/* Maximum Values */
+
+#define _POSIX_CLOCKRES_MIN 20000000
+
+/* Minimum Values */
+
+#define _POSIX_AIO_LISTIO_MAX 2
+#define _POSIX_AIO_MAX 1
+#define _POSIX_ARG_MAX 4096
+#define _POSIX_CHILD_MAX 25
+#define _POSIX_DELAYTIMER_MAX 32
+#define _POSIX_HOST_NAME_MAX 255
+#define _POSIX_LINK_MAX 8
+#define _POSIX_LOGIN_NAME_MAX 9
+#define _POSIX_MAX_CANON 255
+#define _POSIX_MAX_INPUT 255
+#define _POSIX_MQ_OPEN_MAX 8
+#define _POSIX_MQ_PRIO_MAX 32
+#define _POSIX_NAME_MAX 14
+#define _POSIX_NGROUPS_MAX 8
+#define _POSIX_OPEN_MAX 20
+#define _POSIX_PATH_MAX 256
+#define _POSIX_PIPE_BUF 512
+#define _POSIX_RE_DUP_MAX 255
+#define _POSIX_RTSIG_MAX 8
+#define _POSIX_SEM_NSEMS_MAX 256
+#define _POSIX_SEM_VALUE_MAX 32767
+#define _POSIX_SIGQUEUE_MAX 32
+#define _POSIX_SSIZE_MAX 32767
+#define _POSIX_STREAM_MAX 8
+#define _POSIX_SS_REPL_MAX 4
+#define _POSIX_SYMLINK_MAX 255
+#define _POSIX_SYMLOOP_MAX 8
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+#define _POSIX_THREAD_KEYS_MAX 128
+#define _POSIX_THREAD_THREADS_MAX 64
+#define _POSIX_TIMER_MAX 32
+#define _POSIX_TRACE_EVENT_NAME_MAX 30
+#define _POSIX_TRACE_NAME_MAX 8
+#define _POSIX_TRACE_SYS_MAX 8
+#define _POSIX_TRACE_USER_EVENT_MAX 32
+#define _POSIX_TTY_NAME_MAX 9
+#define _POSIX_TZNAME_MAX 6
+
+#define _POSIX2_BC_BASE_MAX 99
+#define _POSIX2_BC_DIM_MAX 2048
+#define _POSIX2_BC_SCALE_MAX 99
+#define _POSIX2_BC_STRING_MAX 1000
+#define _POSIX2_COLL_WEIGHTS_MAX 2
+#define _POSIX2_EXPR_NEST_MAX 32
+#define _POSIX2_LINE_MAX 2048
+#define _POSIX2_RE_DUP_MAX 255
+
+#define _XOPEN_IOV_MAX 16
+#define _XOPEN_NAME_MAX 255
+#define _XOPEN_PATH_MAX 1024
/* Other Invariant Values */
+#define NL_ARGMAX 9
+#define NL_LANGMAX 14
+#define NL_MSGMAX 32767
+#define NL_NMAX INT_MAX
+#define NL_SETMAX 255
+#define NL_TEXTMAX _POSIX2_LINE_MAX
+
/* Default process priority. */
#undef NZERO
-#define NZERO 20
+#define NZERO 20
#endif /* _MACH_MACHLIMITS_H_ */
#endif /* _LIMITS_H___ */
diff --git a/winsup/cygwin/include/pthread.h b/winsup/cygwin/include/pthread.h
index 8a475a60e..73759ddc0 100644
--- a/winsup/cygwin/include/pthread.h
+++ b/winsup/cygwin/include/pthread.h
@@ -1,6 +1,7 @@
/* pthread.h: POSIX pthread interface
- Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2006 Red Hat, Inc.
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2006,
+ 2007 Red Hat, Inc.
Written by Marco Fuykschot <marco@ddi.nl>
@@ -30,11 +31,6 @@ extern "C"
would normally be written to the passed parameter of pthread_cond_init(lvalue, NULL); */
/* #define PTHREAD_COND_INITIALIZER 0 */
-#define PTHREAD_DESTRUCTOR_ITERATIONS 1
-/* Tls has 64 items for pre win2000 - and we don't want to use them all :]
- * Before committing discuss this with the list
- */
-#define PTHREAD_KEYS_MAX 32
/* the default : joinable */
#define PTHREAD_CANCEL_ASYNCHRONOUS 1
diff --git a/winsup/cygwin/include/semaphore.h b/winsup/cygwin/include/semaphore.h
index 96f7c6f88..0f13c85e8 100644
--- a/winsup/cygwin/include/semaphore.h
+++ b/winsup/cygwin/include/semaphore.h
@@ -1,6 +1,6 @@
/* semaphore.h: POSIX semaphore interface
- Copyright 2001, 2003 Red Hat, Inc.
+ Copyright 2001, 2003, 2007 Red Hat, Inc.
Written by Robert Collins <rbtcollins@hotmail.com>
@@ -25,7 +25,6 @@ extern "C"
#endif
#define SEM_FAILED 0
-#define SEM_VALUE_MAX 1147483648
/* Semaphores */
int sem_init (sem_t * sem, int pshared, unsigned int value);
diff --git a/winsup/cygwin/include/sys/mman.h b/winsup/cygwin/include/sys/mman.h
index f501b7b75..a3c8077b0 100644
--- a/winsup/cygwin/include/sys/mman.h
+++ b/winsup/cygwin/include/sys/mman.h
@@ -1,6 +1,6 @@
/* sys/mman.h
- Copyright 1996, 1997, 1998, 2000, 2001 Red Hat, Inc.
+ Copyright 1996, 1997, 1998, 2000, 2001, 2003, 2005, 2007 Red Hat, Inc.
This file is part of Cygwin.
@@ -47,6 +47,15 @@ extern "C" {
#define MS_SYNC 2
#define MS_INVALIDATE 4
+/*
+ * Flags for posix_madvise.
+ */
+#define POSIX_MADV_NORMAL 0
+#define POSIX_MADV_SEQUENTIAL 1
+#define POSIX_MADV_RANDOM 2
+#define POSIX_MADV_WILLNEED 3
+#define POSIX_MADV_DONTNEED 4
+
#ifndef __INSIDE_CYGWIN__
extern void *mmap (void *__addr, size_t __len, int __prot, int __flags, int __fd, off_t __off);
#endif
@@ -56,6 +65,8 @@ extern int msync (void *__addr, size_t __len, int __flags);
extern int mlock (const void *__addr, size_t __len);
extern int munlock (const void *__addr, size_t __len);
+extern int posix_madvise (void *__addr, size_t __len, int __advice);
+
#ifdef __cplusplus
};
#endif /* __cplusplus */
diff --git a/winsup/cygwin/include/sys/termios.h b/winsup/cygwin/include/sys/termios.h
index e2fd1321a..057146966 100644
--- a/winsup/cygwin/include/sys/termios.h
+++ b/winsup/cygwin/include/sys/termios.h
@@ -1,6 +1,7 @@
/* sys/termios.h
- Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 Red Hat, Inc.
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006,
+ 2007 Red Hat, Inc.
This file is part of Cygwin.
@@ -233,10 +234,6 @@ POSIX commands */
#define NCCS 18
-/* `c_cc' member of 'struct termios' structure can be disabled by
- using the value _POSIX_VDISABLE. */
-#define _POSIX_VDISABLE '\0'
-
/* Compare a character C to a value VAL from the `c_cc' array in a
`struct termios'. If VAL is _POSIX_VDISABLE, no character can match it. */
#define CCEQ(val, c) ((c) == (val) && (val) != _POSIX_VDISABLE)