亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libc-lock.h

?? ucLinux is a very good embeded sytem. Most of company use this as their development OS.
?? H
字號:
/* libc-internal interface for mutex locks.  LinuxThreads version.   Copyright (C) 1996,1997,1998,1999,2000,2001 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; see the file COPYING.LIB.  If not,   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,   Boston, MA 02111-1307, USA.  */#ifndef _BITS_LIBC_LOCK_H#define _BITS_LIBC_LOCK_H 1#include <pthread.h>/* Mutex type.  */#if defined(_LIBC) || defined(_IO_MTSAFE_IO)typedef pthread_mutex_t __libc_lock_t;typedef struct { pthread_mutex_t mutex; } __libc_lock_recursive_t;# ifdef __USE_UNIX98typedef pthread_rwlock_t __libc_rwlock_t;# elsetypedef struct __libc_rwlock_opaque__ __libc_rwlock_t;# endif#elsetypedef struct __libc_lock_opaque__ __libc_lock_t;typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t;typedef struct __libc_rwlock_opaque__ __libc_rwlock_t;#endif/* Type for key to thread-specific data.  */typedef pthread_key_t __libc_key_t;/* Define a lock variable NAME with storage class CLASS.  The lock must be   initialized with __libc_lock_init before it can be used (or define it   with __libc_lock_define_initialized, below).  Use `extern' for CLASS to   declare a lock defined in another module.  In public structure   definitions you must use a pointer to the lock structure (i.e., NAME   begins with a `*'), because its storage size will not be known outside   of libc.  */#define __libc_lock_define(CLASS,NAME) \  CLASS __libc_lock_t NAME;#define __libc_rwlock_define(CLASS,NAME) \  CLASS __libc_rwlock_t NAME;#define __libc_lock_define_recursive(CLASS,NAME) \  CLASS __libc_lock_recursive_t NAME;/* Define an initialized lock variable NAME with storage class CLASS.   For the C library we take a deeper look at the initializer.  For   this implementation all fields are initialized to zero.  Therefore   we don't initialize the variable which allows putting it into the   BSS section.  (Except on PA-RISC and other odd architectures, where   initialized locks must be set to one due to the lack of normal   atomic operations.) */#if __LT_SPINLOCK_INIT == 0#  define __libc_lock_define_initialized(CLASS,NAME) \  CLASS __libc_lock_t NAME;#else#  define __libc_lock_define_initialized(CLASS,NAME) \  CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER;#endif#define __libc_rwlock_define_initialized(CLASS,NAME) \  CLASS __libc_rwlock_t NAME = PTHREAD_RWLOCK_INITIALIZER;/* Define an initialized recursive lock variable NAME with storage   class CLASS.  */#define __libc_lock_define_initialized_recursive(CLASS,NAME) \  CLASS __libc_lock_recursive_t NAME = _LIBC_LOCK_RECURSIVE_INITIALIZER;#define _LIBC_LOCK_RECURSIVE_INITIALIZER \  {PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP}/* Initialize the named lock variable, leaving it in a consistent, unlocked   state.  */#define __libc_lock_init(NAME) \  (__pthread_mutex_init != NULL ? __pthread_mutex_init (&(NAME), NULL) : 0);#define __libc_rwlock_init(NAME) \  (__pthread_rwlock_init != NULL ? __pthread_rwlock_init (&(NAME), NULL) : 0);/* Same as last but this time we initialize a recursive mutex.  */#define __libc_lock_init_recursive(NAME) \  do {									      \    if (__pthread_mutex_init != NULL)					      \      {									      \	pthread_mutexattr_t __attr;					      \	__pthread_mutexattr_init (&__attr);				      \	__pthread_mutexattr_settype (&__attr, PTHREAD_MUTEX_RECURSIVE_NP); \	__pthread_mutex_init (&(NAME).mutex, &__attr);			      \	__pthread_mutexattr_destroy (&__attr);				      \      }									      \  } while (0);/* Finalize the named lock variable, which must be locked.  It cannot be   used again until __libc_lock_init is called again on it.  This must be   called on a lock variable before the containing storage is reused.  */#define __libc_lock_fini(NAME) \  (__pthread_mutex_destroy != NULL ? __pthread_mutex_destroy (&(NAME)) : 0);#define __libc_rwlock_fini(NAME) \  (__pthread_rwlock_destroy != NULL ? __pthread_rwlock_destroy (&(NAME)) : 0);/* Finalize recursive named lock.  */#define __libc_lock_fini_recursive(NAME) __libc_lock_fini ((NAME).mutex)/* Lock the named lock variable.  */#define __libc_lock_lock(NAME) \  (__pthread_mutex_lock != NULL ? __pthread_mutex_lock (&(NAME)) : 0);#define __libc_rwlock_rdlock(NAME) \  (__pthread_rwlock_rdlock != NULL ? __pthread_rwlock_rdlock (&(NAME)) : 0);#define __libc_rwlock_wrlock(NAME) \  (__pthread_rwlock_wrlock != NULL ? __pthread_rwlock_wrlock (&(NAME)) : 0);/* Lock the recursive named lock variable.  */#define __libc_lock_lock_recursive(NAME) __libc_lock_lock ((NAME).mutex)/* Try to lock the named lock variable.  */#define __libc_lock_trylock(NAME) \  (__pthread_mutex_trylock != NULL ? __pthread_mutex_trylock (&(NAME)) : 0)#define __libc_rwlock_tryrdlock(NAME) \  (__pthread_rwlock_tryrdlock != NULL \   ? __pthread_rwlock_tryrdlock (&(NAME)) : 0)#define __libc_rwlock_trywrlock(NAME) \  (__pthread_rwlock_trywrlock != NULL \   ? __pthread_rwlock_trywrlock (&(NAME)) : 0)/* Try to lock the recursive named lock variable.  */#define __libc_lock_trylock_recursive(NAME) __libc_lock_trylock ((NAME).mutex)/* Unlock the named lock variable.  */#define __libc_lock_unlock(NAME) \  (__pthread_mutex_unlock != NULL ? __pthread_mutex_unlock (&(NAME)) : 0);#define __libc_rwlock_unlock(NAME) \  (__pthread_rwlock_unlock != NULL ? __pthread_rwlock_unlock (&(NAME)) : 0);/* Unlock the recursive named lock variable.  */#define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock ((NAME).mutex)/* Define once control variable.  */#if PTHREAD_ONCE_INIT == 0/* Special case for static variables where we can avoid the initialization   if it is zero.  */# define __libc_once_define(CLASS, NAME) \  CLASS pthread_once_t NAME#else# define __libc_once_define(CLASS, NAME) \  CLASS pthread_once_t NAME = PTHREAD_ONCE_INIT#endif/* Call handler iff the first call.  */#define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \  do {									      \    if (__pthread_once != NULL)						      \      __pthread_once (&(ONCE_CONTROL), (INIT_FUNCTION));		      \    else if ((ONCE_CONTROL) == PTHREAD_ONCE_INIT) {			      \      INIT_FUNCTION ();							      \      (ONCE_CONTROL) = !PTHREAD_ONCE_INIT;				      \    }									      \  } while (0)/* Start critical region with cleanup.  */#define __libc_cleanup_region_start(DOIT, FCT, ARG) \  { struct _pthread_cleanup_buffer _buffer;				      \    int _avail = (DOIT) && _pthread_cleanup_push_defer != NULL;		      \    if (_avail) {							      \      _pthread_cleanup_push_defer (&_buffer, (FCT), (ARG));		      \    }/* End critical region with cleanup.  */#define __libc_cleanup_region_end(DOIT) \    if (_avail) {							      \      _pthread_cleanup_pop_restore (&_buffer, (DOIT));			      \    }									      \  }/* Sometimes we have to exit the block in the middle.  */#define __libc_cleanup_end(DOIT) \    if (_avail) {							      \      _pthread_cleanup_pop_restore (&_buffer, (DOIT));			      \    }/* Create thread-specific key.  */#define __libc_key_create(KEY, DESTRUCTOR) \  (__pthread_key_create != NULL ? __pthread_key_create (KEY, DESTRUCTOR) : 1)/* Get thread-specific data.  */#define __libc_getspecific(KEY) \  (__pthread_getspecific != NULL ? __pthread_getspecific (KEY) : NULL)/* Set thread-specific data.  */#define __libc_setspecific(KEY, VALUE) \  (__pthread_setspecific != NULL ? __pthread_setspecific (KEY, VALUE) : 0)/* Register handlers to execute before and after `fork'.  */#define __libc_atfork(PREPARE, PARENT, CHILD) \  (__pthread_atfork != NULL ? __pthread_atfork (PREPARE, PARENT, CHILD) : 0)/* Functions that are used by this file and are internal to the GNU C   library.  */extern int __pthread_mutex_init (pthread_mutex_t *__mutex,				 __const pthread_mutexattr_t *__mutex_attr);extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex);extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr);extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr);extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr,					int __kind);#ifdef __USE_UNIX98extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,				  __const pthread_rwlockattr_t *__attr);extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock);extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock);extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);#endifextern int __pthread_key_create (pthread_key_t *__key,				 void (*__destr_function) (void *));extern int __pthread_setspecific (pthread_key_t __key,				  __const void *__pointer);extern void *__pthread_getspecific (pthread_key_t __key);extern int __pthread_once (pthread_once_t *__once_control,			   void (*__init_routine) (void));extern int __pthread_atfork (void (*__prepare) (void),			     void (*__parent) (void),			     void (*__child) (void));/* Make the pthread functions weak so that we can elide them from   single-threaded processes.  */#ifndef __NO_WEAK_PTHREAD_ALIASES# ifdef weak_extern#  if _LIBC#   include <bp-sym.h>#  else#   define BP_SYM (sym) sym#  endifweak_extern (BP_SYM (__pthread_mutex_init))weak_extern (BP_SYM (__pthread_mutex_destroy))weak_extern (BP_SYM (__pthread_mutex_lock))weak_extern (BP_SYM (__pthread_mutex_trylock))weak_extern (BP_SYM (__pthread_mutex_unlock))weak_extern (BP_SYM (__pthread_mutexattr_init))weak_extern (BP_SYM (__pthread_mutexattr_destroy))weak_extern (BP_SYM (__pthread_mutexattr_settype))weak_extern (BP_SYM (__pthread_rwlock_init))weak_extern (BP_SYM (__pthread_rwlock_destroy))weak_extern (BP_SYM (__pthread_rwlock_rdlock))weak_extern (BP_SYM (__pthread_rwlock_tryrdlock))weak_extern (BP_SYM (__pthread_rwlock_wrlock))weak_extern (BP_SYM (__pthread_rwlock_trywrlock))weak_extern (BP_SYM (__pthread_rwlock_unlock))weak_extern (BP_SYM (__pthread_key_create))weak_extern (BP_SYM (__pthread_setspecific))weak_extern (BP_SYM (__pthread_getspecific))weak_extern (BP_SYM (__pthread_once))weak_extern (__pthread_initialize)weak_extern (__pthread_atfork)weak_extern (BP_SYM (_pthread_cleanup_push_defer))weak_extern (BP_SYM (_pthread_cleanup_pop_restore))# else#  pragma weak __pthread_mutex_init#  pragma weak __pthread_mutex_destroy#  pragma weak __pthread_mutex_lock#  pragma weak __pthread_mutex_trylock#  pragma weak __pthread_mutex_unlock#  pragma weak __pthread_mutexattr_init#  pragma weak __pthread_mutexattr_destroy#  pragma weak __pthread_mutexattr_settype#  pragma weak __pthread_rwlock_destroy#  pragma weak __pthread_rwlock_rdlock#  pragma weak __pthread_rwlock_tryrdlock#  pragma weak __pthread_rwlock_wrlock#  pragma weak __pthread_rwlock_trywrlock#  pragma weak __pthread_rwlock_unlock#  pragma weak __pthread_key_create#  pragma weak __pthread_setspecific#  pragma weak __pthread_getspecific#  pragma weak __pthread_once#  pragma weak __pthread_initialize#  pragma weak __pthread_atfork#  pragma weak _pthread_cleanup_push_defer#  pragma weak _pthread_cleanup_pop_restore# endif#endif/* We need portable names for some functions.  E.g., when they are   used as argument to __libc_cleanup_region_start.  */#define __libc_mutex_unlock __pthread_mutex_unlock#endif	/* bits/libc-lock.h */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人性网站| 日本一区二区三级电影在线观看| 精品无人码麻豆乱码1区2区| 欧美日韩电影在线| 日韩av不卡在线观看| 欧美成人精品福利| 丁香五精品蜜臀久久久久99网站 | 国产在线不卡一卡二卡三卡四卡| 国产综合久久久久久鬼色 | 久久女同精品一区二区| 韩国在线一区二区| 国产精品久久三区| 欧美色图天堂网| 青青青伊人色综合久久| 精品国产a毛片| 97精品久久久午夜一区二区三区| 欧美一级二级三级乱码| 国产酒店精品激情| 亚洲欧洲精品成人久久奇米网| 国内精品第一页| 17c精品麻豆一区二区免费| 欧美在线|欧美| 久久66热偷产精品| 亚洲少妇30p| 91精品国产91热久久久做人人| 一区二区三区免费看视频| 在线视频欧美精品| 精品午夜一区二区三区在线观看| 这里只有精品免费| 成人av在线观| 蜜桃精品在线观看| 亚洲精品综合在线| 26uuu亚洲综合色| 欧美亚洲尤物久久| 国产福利一区在线| 午夜精品久久久久久| 国产精品无圣光一区二区| 欧美久久婷婷综合色| 国产91丝袜在线观看| 亚洲mv在线观看| 中文字幕一区在线| 久久你懂得1024| 欧美精品一二三| aaa亚洲精品一二三区| 日本不卡视频在线观看| 亚洲色欲色欲www| 国产亚洲美州欧州综合国 | 国产精品一区二区三区网站| 亚洲乱码中文字幕| 2021中文字幕一区亚洲| 欧美色综合久久| 91蝌蚪porny| 国产盗摄一区二区| 日韩精品成人一区二区三区| 亚洲乱码国产乱码精品精98午夜| 欧美性猛交一区二区三区精品| 亚洲人成网站精品片在线观看| 成人福利视频网站| 精品亚洲免费视频| 三级欧美在线一区| 亚洲国产中文字幕在线视频综合| 欧美日韩免费观看一区二区三区| 香港成人在线视频| 亚洲欧美色图小说| 中文字幕一区二区三区蜜月| 精品欧美一区二区久久| 91精品国产高清一区二区三区 | 亚洲少妇中出一区| 欧美国产成人在线| 亚洲国产高清在线| 精品国产一区二区三区久久影院| 高清国产午夜精品久久久久久| 亚洲视频免费在线| 亚洲欧洲日产国产综合网| 日本一区二区成人| 26uuu国产电影一区二区| 欧美videos大乳护士334| 日韩免费福利电影在线观看| 日韩一区二区精品在线观看| 日韩一区二区三区精品视频| 在线不卡a资源高清| 欧美日本一道本在线视频| 欧美午夜在线一二页| 欧美日韩一级大片网址| 欧美日韩一区二区三区四区五区| 国产麻豆精品95视频| 国产成人鲁色资源国产91色综 | 91网站黄www| 色婷婷香蕉在线一区二区| 色乱码一区二区三区88| 欧美午夜片在线观看| 制服丝袜亚洲播放| 精品少妇一区二区三区日产乱码| 99re8在线精品视频免费播放| 日韩高清一区二区| 麻豆精品国产传媒mv男同| 蜜臀av在线播放一区二区三区| √…a在线天堂一区| 亚洲精品欧美在线| 久久国产精品99精品国产| 麻豆成人av在线| 国产成人免费视频一区| 一本色道久久综合狠狠躁的推荐| 久久av老司机精品网站导航| 精品一区二区三区视频在线观看| 亚洲精品第一国产综合野| 性感美女极品91精品| 久久精品国产精品亚洲红杏| 国产伦精品一区二区三区免费 | 精品一区中文字幕| 成人一区二区视频| 91首页免费视频| 欧美日韩视频在线观看一区二区三区 | 欧美三级资源在线| 日韩一区国产二区欧美三区| 国产三级三级三级精品8ⅰ区| 欧美精品aⅴ在线视频| 精品国产区一区| 中文字幕佐山爱一区二区免费| 国产午夜精品久久| 亚洲综合久久久久| 国产麻豆视频精品| 欧美日韩日日摸| 国产偷国产偷亚洲高清人白洁| 欧美一二区视频| 综合久久给合久久狠狠狠97色| 国产视频一区二区在线| 亚洲一区二区三区视频在线| 国产精品一级片| 欧美日韩国产小视频在线观看| 久久精品国产免费| 在线观看网站黄不卡| 精品999在线播放| 午夜视频久久久久久| 波多野结衣在线一区| 欧美一区日韩一区| 国产精品高清亚洲| 国产一区二区久久| 91精品国产美女浴室洗澡无遮挡| 91精品国产麻豆国产自产在线| 欧美久久婷婷综合色| 国产精品三级av| 免费在线观看一区| 欧美丝袜丝nylons| 中文字幕在线不卡视频| 国产一区二区主播在线| 91精品在线一区二区| 亚洲人成人一区二区在线观看| 亚洲综合视频在线观看| 成人av免费在线| 久久久综合激的五月天| 蜜乳av一区二区三区| 欧美日韩国产综合一区二区三区 | 国产99久久久久久免费看农村| 国产乱理伦片在线观看夜一区| 国产成人av一区| 日韩一区二区三区免费看| 日本一区中文字幕| 欧美人动与zoxxxx乱| 亚洲午夜在线视频| 欧美色综合天天久久综合精品| 在线不卡免费av| 日日摸夜夜添夜夜添国产精品| 精品亚洲porn| 精品国产免费视频| 麻豆91小视频| 欧美一区二区三区免费大片 | 日韩视频一区二区三区在线播放| 久久尤物电影视频在线观看| 美女网站色91| 在线播放欧美女士性生活| 午夜精品福利一区二区三区av | 麻豆精品一区二区av白丝在线| 国产精品1区2区| 国产欧美一区二区在线观看| 国产福利一区二区三区视频在线 | 欧美在线免费播放| 亚洲第一成人在线| 欧美一区午夜精品| 美女脱光内衣内裤视频久久网站| 97久久人人超碰| 亚洲在线一区二区三区| 欧美日韩国产电影| 美女高潮久久久| 久久久久久久久一| av中文字幕不卡| 亚洲国产精品一区二区久久恐怖片| 精品无人码麻豆乱码1区2区| 久久久久久久一区| eeuss鲁一区二区三区| 综合久久综合久久| 欧美日本高清视频在线观看| 免费观看日韩电影| 国产精品情趣视频| 欧美性色aⅴ视频一区日韩精品| 国产蜜臀97一区二区三区| 91欧美激情一区二区三区成人| 国产精品成人免费在线| 色婷婷av一区二区三区gif| 亚洲在线视频一区|