📄 internaltypes.h
字号:
/* Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */#ifndef _INTERNALTYPES_H#define _INTERNALTYPES_H 1#include <stdint.h>struct pthread_attr{ /* Scheduler parameters and priority. */ struct sched_param schedparam; int schedpolicy; /* Various flags like detachstate, scope, etc. */ int flags; /* Size of guard area. */ size_t guardsize; /* Stack handling. */ void *stackaddr; size_t stacksize; /* Affinity map. */ cpu_set_t *cpuset; size_t cpusetsize;};#define ATTR_FLAG_DETACHSTATE 0x0001#define ATTR_FLAG_NOTINHERITSCHED 0x0002#define ATTR_FLAG_SCOPEPROCESS 0x0004#define ATTR_FLAG_STACKADDR 0x0008#define ATTR_FLAG_OLDATTR 0x0010#define ATTR_FLAG_SCHED_SET 0x0020#define ATTR_FLAG_POLICY_SET 0x0040/* Mutex attribute data structure. */struct pthread_mutexattr{ /* Identifier for the kind of mutex. Bit 31 is set if the mutex is to be shared between processes. Bit 0 to 30 contain one of the PTHREAD_MUTEX_ values to identify the type of the mutex. */ int mutexkind;};/* Conditional variable attribute data structure. */struct pthread_condattr{ /* Combination of values: Bit 0 : flag whether coditional variable will be shareable between processes. Bit 1-7: clock ID. */ int value;};/* The __NWAITERS field is used as a counter and to house the number of bits for other purposes. COND_CLOCK_BITS is the number of bits needed to represent the ID of the clock. COND_NWAITERS_SHIFT is the number of bits reserved for other purposes like the clock. */#define COND_CLOCK_BITS 1#define COND_NWAITERS_SHIFT 1/* Read-write lock variable attribute data structure. */struct pthread_rwlockattr{ int lockkind; int pshared;};/* Barrier data structure. */struct pthread_barrier{ unsigned int curr_event; int lock; unsigned int left; unsigned int init_count; int private;};/* Barrier variable attribute data structure. */struct pthread_barrierattr{ int pshared;};/* Thread-local data handling. */struct pthread_key_struct{ /* Sequence numbers. Even numbers indicated vacant entries. Note that zero is even. We use uintptr_t to not require padding on 32- and 64-bit machines. On 64-bit machines it helps to avoid wrapping, too. */ uintptr_t seq; /* Destructor for the data. */ void (*destr) (void *);};/* Check whether an entry is unused. */#define KEY_UNUSED(p) (((p) & 1) == 0)/* Check whether a key is usable. We cannot reuse an allocated key if the sequence counter would overflow after the next destroy call. This would mean that we potentially free memory for a key with the same sequence. This is *very* unlikely to happen, A program would have to create and destroy a key 2^31 times (on 32-bit platforms, on 64-bit platforms that would be 2^63). If it should happen we simply don't use this specific key anymore. */#define KEY_USABLE(p) (((uintptr_t) (p)) < ((uintptr_t) ((p) + 2)))/* Handling of read-write lock data. */// XXX For now there is only one flag. Maybe more in future.#define RWLOCK_RECURSIVE(rwlock) ((rwlock)->__data.__flags != 0)/* Semaphore variable structure. */struct new_sem{ unsigned int value; int private; unsigned long int nwaiters;};struct old_sem{ unsigned int value;};/* Compatibility type for old conditional variable interfaces. */typedef struct{ pthread_cond_t *cond;} pthread_cond_2_0_t;#endif /* internaltypes.h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -