/usr/include/i386-linux-gnu/bits/pthreadtypes.h

来源:互联网 发布:java框架批量添加数据 编辑:程序博客网 时间:2024/05/17 23:07
/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.   This file is part of the GNU C Library.   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 _BITS_PTHREADTYPES_H#define _BITS_PTHREADTYPES_H1#define __SIZEOF_PTHREAD_ATTR_T 36#define __SIZEOF_PTHREAD_MUTEX_T 24#define __SIZEOF_PTHREAD_MUTEXATTR_T 4#define __SIZEOF_PTHREAD_COND_T 48#define __SIZEOF_PTHREAD_COND_COMPAT_T 12#define __SIZEOF_PTHREAD_CONDATTR_T 4#define __SIZEOF_PTHREAD_RWLOCK_T 32#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8#define __SIZEOF_PTHREAD_BARRIER_T 20#define __SIZEOF_PTHREAD_BARRIERATTR_T 4/* Thread identifiers.  The structure of the attribute type is not   exposed on purpose.  */typedef unsigned long int pthread_t;typedef union{  char __size[__SIZEOF_PTHREAD_ATTR_T];  long int __align;} pthread_attr_t;typedef struct __pthread_internal_slist{  struct __pthread_internal_slist *__next;} __pthread_slist_t;/* Data structures for mutex handling.  The structure of the attribute   type is not exposed on purpose.  */typedef union{  struct __pthread_mutex_s  {    int __lock;    unsigned int __count;    int __owner;    /* KIND must stay at this position in the structure to maintain       binary compatibility.  */    int __kind;    unsigned int __nusers;    __extension__ union    {      int __spins;      __pthread_slist_t __list;    };  } __data;  char __size[__SIZEOF_PTHREAD_MUTEX_T];  long int __align;} pthread_mutex_t;typedef union{  char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];  long int __align;} pthread_mutexattr_t;/* Data structure for conditional variable handling.  The structure of   the attribute type is not exposed on purpose.  */typedef union{  struct  {    int __lock;    unsigned int __futex;    __extension__ unsigned long long int __total_seq;    __extension__ unsigned long long int __wakeup_seq;    __extension__ unsigned long long int __woken_seq;    void *__mutex;    unsigned int __nwaiters;    unsigned int __broadcast_seq;  } __data;  char __size[__SIZEOF_PTHREAD_COND_T];  __extension__ long long int __align;} pthread_cond_t;typedef union{  char __size[__SIZEOF_PTHREAD_CONDATTR_T];  long int __align;} pthread_condattr_t;/* Keys for thread-specific data */typedef unsigned int pthread_key_t;/* Once-only execution */typedef int pthread_once_t;#if defined __USE_UNIX98 || defined __USE_XOPEN2K/* Data structure for read-write lock variable handling.  The   structure of the attribute type is not exposed on purpose.  */typedef union{  struct  {    int __lock;    unsigned int __nr_readers;    unsigned int __readers_wakeup;    unsigned int __writer_wakeup;    unsigned int __nr_readers_queued;    unsigned int __nr_writers_queued;    /* FLAGS must stay at this position in the structure to maintain       binary compatibility.  */    unsigned char __flags;    unsigned char __shared;    unsigned char __pad1;    unsigned char __pad2;    int __writer;  } __data;  char __size[__SIZEOF_PTHREAD_RWLOCK_T];  long int __align;} pthread_rwlock_t;typedef union{  char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];  long int __align;} pthread_rwlockattr_t;#endif#ifdef __USE_XOPEN2K/* POSIX spinlock data type.  */typedef volatile int pthread_spinlock_t;/* POSIX barriers data type.  The structure of the type is   deliberately not exposed.  */typedef union{  char __size[__SIZEOF_PTHREAD_BARRIER_T];  long int __align;} pthread_barrier_t;typedef union{  char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];  int __align;} pthread_barrierattr_t;#endif/* Extra attributes for the cleanup functions.  */#define __cleanup_fct_attribute __attribute__ ((__regparm__ (1)))#endif/* bits/pthreadtypes.h */

原创粉丝点击