about summary refs log tree commit diff
path: root/linuxthreads/sysdeps/pthread/bits
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-06-30 12:09:42 +0000
committerUlrich Drepper <drepper@redhat.com>1998-06-30 12:09:42 +0000
commit4959e310bfbf3fa34b5a4b4ff688d8d564c8363c (patch)
tree65381cc0476c07dfb96c8dee790fda3630744a8f /linuxthreads/sysdeps/pthread/bits
parentfdacb17d4819c7112a147195c5ce3c82147f4b46 (diff)
downloadglibc-4959e310bfbf3fa34b5a4b4ff688d8d564c8363c.tar.gz
glibc-4959e310bfbf3fa34b5a4b4ff688d8d564c8363c.tar.xz
glibc-4959e310bfbf3fa34b5a4b4ff688d8d564c8363c.zip
Update.
1998-06-30 11:47  Ulrich Drepper  <drepper@cygnus.com>

	* include/aio.h: New file.
	* posix/Makefile (distribute): Add bits/pthreadtypes.h.
	(tests): Build and run annexc program.
	* posix/annexc.c: New file.
	* posix/bits/posix1_lim.h: Add several more _POSIX_* limits.
	* rt/aio.h: Remove __need_timespec_t.  We can include the whole time.h.
	* rt/aio_misc.c: Include limits.h.
	* rt/aio_notify.c: Include errno.h.
	* sysdeps/unix/sysv/linux/alpha/bits/types.h: Include pthreadtypes.h.
	Define size_t.
	* sysdeps/unix/sysv/linux/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/errno.h: Define ENOTSUP though the
	kernel doesn't do this.
	* sysdeps/unix/sysv/linux/bits/fcntl.h: Define O_LARGEFILE only if
	__USE_LARGEFILE64 is defined.
	* sysdeps/unix/sysv/linux/bits/pthreadtypes.h: New file.  Empty.
	* sysdeps/unix/sysv/linux/bits/sched.h: Define __sched_param struct
	if requested.
	* sysdeps/unix/sysv/linux/bits/siginifo.h: Protect non-standard names.

	* stdlib/isomac.c: Avoid include_next warning.
Diffstat (limited to 'linuxthreads/sysdeps/pthread/bits')
-rw-r--r--linuxthreads/sysdeps/pthread/bits/pthreadtypes.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h b/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h
new file mode 100644
index 0000000000..20b0bed311
--- /dev/null
+++ b/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h
@@ -0,0 +1,119 @@
+/* Linuxthreads - a simple clone()-based implementation of Posix        */
+/* threads for Linux.                                                   */
+/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr)              */
+/*                                                                      */
+/* This program is free software; you can redistribute it and/or        */
+/* modify it under the terms of the GNU Library General Public License  */
+/* as published by the Free Software Foundation; either version 2       */
+/* of the License, or (at your option) any later version.               */
+/*                                                                      */
+/* This program is distributed in the hope that it will be useful,      */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of       */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        */
+/* GNU Library General Public License for more details.                 */
+
+#if !defined _BITS_TYPES_H && !defined _PTHREAD_H
+# error "Never include <bits/pthreadtypes.h> directly; use <sys/types.h> instead."
+#endif
+
+#ifndef _BITS_PTHREADTYPES_H
+#define _BITS_PTHREADTYPES_H	1
+
+#define __need_schedparam
+#include <bits/sched.h>
+
+/* Fast locks (not abstract because mutexes and conditions aren't abstract). */
+struct _pthread_fastlock
+{
+  long int status;              /* "Free" or "taken" or head of waiting list */
+  int spinlock;                 /* For compare-and-swap emulation */
+};
+
+/* Thread descriptors */
+typedef struct _pthread_descr_struct *_pthread_descr;
+
+
+/* Attributes for threads.  */
+typedef struct
+{
+  int detachstate;
+  int schedpolicy;
+  struct __sched_param schedparam;
+  int inheritsched;
+  int scope;
+  size_t guardsize;
+  int stackaddr_set;
+  void *stackaddr;
+  size_t stacksize;
+} pthread_attr_t;
+
+
+/* Conditions (not abstract because of PTHREAD_COND_INITIALIZER */
+typedef struct
+{
+  struct _pthread_fastlock c_lock; /* Protect against concurrent access */
+  _pthread_descr c_waiting;        /* Threads waiting on this condition */
+} pthread_cond_t;
+
+
+/* Attribute for conditionally variables.  */
+typedef struct
+{
+  int dummy;
+} pthread_condattr_t;
+
+/* Keys for thread-specific data */
+typedef unsigned int pthread_key_t;
+
+
+/* Mutexes (not abstract because of PTHREAD_MUTEX_INITIALIZER).  */
+/* (The layout is unnatural to maintain binary compatibility
+    with earlier releases of LinuxThreads.) */
+typedef struct
+{
+  int m_reserved;               /* Reserved for future use */
+  int m_count;                  /* Depth of recursive locking */
+  _pthread_descr m_owner;       /* Owner thread (if recursive or errcheck) */
+  int m_kind;                   /* Mutex kind: fast, recursive or errcheck */
+  struct _pthread_fastlock m_lock; /* Underlying fast lock */
+} pthread_mutex_t;
+
+
+/* Attribute for mutex.  */
+typedef struct
+{
+  int mutexkind;
+} pthread_mutexattr_t;
+
+
+/* Once-only execution */
+typedef int pthread_once_t;
+
+
+#ifdef __USE_UNIX98
+/* Read-write locks.  */
+typedef struct
+{
+  struct _pthread_fastlock rw_lock; /* Lock to guarantee mutual exclusion */
+  int rw_readers;               /* Number of readers */
+  _pthread_descr rw_writer;     /* Identity of writer, or NULL if none */
+  _pthread_descr rw_read_waiting; /* Threads waiting for reading */
+  _pthread_descr rw_write_waiting; /* Threads waiting for writing */
+  int rw_kind;                  /* Reader/Writer preference selection */
+  int rw_pshared;               /* Shared between processes or not */
+} pthread_rwlock_t;
+
+
+/* Attribute for read-write locks.  */
+typedef struct
+{
+  int lockkind;
+  int pshared;
+} pthread_rwlockattr_t;
+#endif
+
+
+/* Thread identifiers */
+typedef unsigned long int pthread_t;
+
+#endif	/* bits/pthreadtypes.h */