diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-06-30 12:09:42 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-06-30 12:09:42 +0000 |
commit | 4959e310bfbf3fa34b5a4b4ff688d8d564c8363c (patch) | |
tree | 65381cc0476c07dfb96c8dee790fda3630744a8f /linuxthreads/sysdeps/pthread/bits | |
parent | fdacb17d4819c7112a147195c5ce3c82147f4b46 (diff) | |
download | glibc-4959e310bfbf3fa34b5a4b4ff688d8d564c8363c.tar.gz |
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.h | 119 |
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 */ |