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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pthread.c

?? OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************** @(#) pthread.c,v openss7-0_9_2_E(0.9.2.2) 2006/10/13 00:09:13 ----------------------------------------------------------------------------- Copyright (c) 2001-2006  OpenSS7 Corporation <http://www.openss7.com/> Copyright (c) 1997-2000  Brian F. G. Bidulock <bidulock@openss7.org> All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ----------------------------------------------------------------------------- U.S. GOVERNMENT RESTRICTED RIGHTS.  If you are licensing this Software on behalf of the U.S. Government ("Government"), the following provisions apply to you.  If the Software is supplied by the Department of Defense ("DoD"), it is classified as "Commercial Computer Software" under paragraph 252.227-7014 of the DoD Supplement to the Federal Acquisition Regulations ("DFARS") (or any successor regulations) and the Government is acquiring only the license rights granted herein (the license rights customarily provided to non-Government users).  If the Software is supplied to any unit or agency of the Government other than DoD, it is classified as "Restricted Computer Software" and the Government's rights in the Software are defined in paragraph 52.227-19 of the Federal Acquisition Regulations ("FAR") (or any successor regulations) or, in the cases of NASA, in paragraph 18.52.227-86 of the NASA Supplement to the FAR (or any successor regulations). ----------------------------------------------------------------------------- Commercial licensing and support of this software is available from OpenSS7 Corporation at a fee.  See http://www.openss7.com/ ----------------------------------------------------------------------------- Last Modified 2006/10/13 00:09:13 by brian ----------------------------------------------------------------------------- pthread.c,v Revision 0.9.2.2  2006/10/13 00:09:13  brian - fixed segfault in pthread_setcanceltype Revision 0.9.2.1  2006/09/25 20:15:46  brian - rationalized to strinet and strxnet Revision 0.9.2.4  2006/09/24 21:57:23  brian - documentation and library updates Revision 0.9.2.3  2006/09/22 20:54:27  brian - tweaked source file for use with doxygen Revision 0.9.2.2  2006/09/18 13:52:56  brian - added doxygen markers to sources Revision 0.9.2.1  2006/09/18 00:03:15  brian - added libxnsl source files *****************************************************************************/#ident "@(#) pthread.c,v openss7-0_9_2_E(0.9.2.2) 2006/10/13 00:09:13"static char const ident[] =    "pthread.c,v openss7-0_9_2_E(0.9.2.2) 2006/10/13 00:09:13";/* This file can be processed with doxygen(1). *//** @weakgroup pthread OpenSS7 Library Thread Safety  * @{ *//** @file  * Thread-safety implementation file.  * This file provide implementation of functions used for thread-safety as  * well as for non-recursive versions of the library.  This file is shared by  * a number of libraries. *//** @page threadsafety Discussion on Thread-Safety  *  * This is a lightweight pthreads replacement for the non-recursive  * environment.  This module defines a number of POSIX thread functions that in  * the implementations of the second set.  are used by library code.  They are  * defined as weak aliases.  This file provides replacement dummy functions for  * POSIX thread functions to be used when there is no need for thread-safety.  * When the libpthread library is loaded against a library containing this  * package, the POSIX thread definitions from libpthread will be used instead.  * Both defined and undefined weak symbols are used so that it does not matter  * whether the libpthread library is loaded before or after the library  * containing this package.  *  * The magic of weak functions is a black art.  This one works currently, don't  * mess with it.  *  * When linked to this object, a library can pretty much use whatever  * cancellation mechanisms, read-write locks and thread specific data they like  * using the normal POSIX thread function calls as defined in in <pthread.h>  * and not worry about non-recursive versions.  *//** @todo What really needs to be done for these functions is to also set a  * pthread_atfork() routine to reinitialize all static areas used by the  * library when fork(2) is called. */#include <limits.h>#include <errno.h>#include <pthread.h>#ifdef DEBUG#include <unistd.h>#include <stdio.h>#include <string.h>#endif/** @name Asynchronous Thread Cancellation Functions  * @brief Functions for asynchronous thread cancellation.  *  * These functions are declared in <pthread.h>, but are also declared here as  * verification against the system headers.  These symbols are declared as weak  * undefined symbols in glibc and provide thread safety capabilities to glibc  * from an add-on pthread library.  They are used in the OpenSS7 libraries to  * detect whether a suitable pthread library is present (loaded).  *  * The first set of symbols: __pthread_cleanup_push(), __pthread_cleanup_pop(),  * __pthread_cleanup_push_defer(), __pthread_cleanup_pop_restore() and  * __pthread_testcancel(), are weak @e undefined symbols in the glibc library.  * These symbols are provided when libpthread loads before glibc.  *  * The second set of symbols: _pthread_cleanup_push(), _pthread_cleanup_pop(),  * _pthread_cleanup_push_defer(), _pthread_cleanup_pop_restore(),  * pthread_testcancel() and pthread_setcanceltype(), are weak @e defined  * symbols that are overriden when libpthread loads after glibc.  The first  * four of these are non-portable and that is why they begin with a single  * underscore.  *  * The proper approach in implementation is to implement the second set as weak  * @e defined symbols that override glibc's symbols and are still overridden by  * libpthread strong symbols, and to test the presence of the first set in the  * implementations of the second set.  *  * @{ */#pragma weak __pthread_cleanup_pushextern void __pthread_cleanup_push(struct _pthread_cleanup_buffer *buffer, void (*routine) (void *),				   void *arg);#pragma weak __pthread_cleanup_popextern void __pthread_cleanup_pop(struct _pthread_cleanup_buffer *buffer, int execute);#pragma weak __pthread_cleanup_push_deferextern void __pthread_cleanup_push_defer(struct _pthread_cleanup_buffer *buffer,					 void (*routine) (void *), void *arg);#pragma weak __pthread_cleanup_pop_restoreextern void __pthread_cleanup_pop_restore(struct _pthread_cleanup_buffer *buffer, int execute);#pragma weak __pthread_testcancelextern void __pthread_testcancel(void);#pragma weak __pthread_setcanceltypeextern int __pthread_setcanceltype(int type, int *oldtype);#pragma weak _pthread_cleanup_pushextern void _pthread_cleanup_push(struct _pthread_cleanup_buffer *buffer, void (*routine) (void *),				  void *arg);#pragma weak _pthread_cleanup_popextern void _pthread_cleanup_pop(struct _pthread_cleanup_buffer *buffer, int execute);#pragma weak _pthread_cleanup_push_deferextern void _pthread_cleanup_push_defer(struct _pthread_cleanup_buffer *buffer,					void (*routine) (void *), void *arg);#pragma weak _pthread_cleanup_pop_restoreextern void _pthread_cleanup_pop_restore(struct _pthread_cleanup_buffer *buffer, int execute);#pragma weak pthread_testcancelextern void pthread_testcancel(void);#pragma weak pthread_setcanceltypeextern int pthread_setcanceltype(int type, int *oldtype);/** @} *//** @name Read/Write Thread Locking Functions  * @brief Functions for reader/writer thread mutual exclusion.  *  * These functions are declared in <pthread.h>, but are also declared here as  * verification against the system headers.  These symbols are declared as weak  * undefined symbols in glibc and provide thread safety capabilities to glibc  * from an add-on pthread library.  They are used in the OpenSS7 libraries to  * detect whether a suitable pthread library is present (loaded).  *  * The first set of symbols: __pthread_rwlock_init(),  * __pthread_rwlock_rdlock(), __pthread_rwlock_wrlock(),  * __pthread_rwlock_unlock() and __pthread_rwlock_destroy(), are weak @e  * undefined symbols in the glibc library.  These symbols are provided when  * libpthread loads before glibc.  *  * The second set of symbols: pthread_rwlock_init(), pthread_rwlock_rdlock(),  * pthread_rwlock_wrlock(), pthread_rwlock_unlock() and  * pthread_rwlock_destroy(), are weak @e defined symbols that are overriden  * when libpthread loads after glibc.  The first four of these are non-portable  * and that is why they begin with a single underscore.  *  * The proper approach in implementation is to implement the second set as weak  * @e defined symbols that override glibc's symbols and are still overridden by  * libpthread strong symbols, and to test the presence of the first set in the  * implementations of the second set.  *  * @{ */#pragma weak __pthread_rwlock_initextern int __pthread_rwlock_init(pthread_rwlock_t * rwlock, const pthread_rwlockattr_t * attr);#pragma weak __pthread_rwlock_rdlockextern int __pthread_rwlock_rdlock(pthread_rwlock_t * rwlock);#pragma weak __pthread_rwlock_wrlockextern int __pthread_rwlock_wrlock(pthread_rwlock_t * rwlock);#pragma weak __pthread_rwlock_unlockextern int __pthread_rwlock_unlock(pthread_rwlock_t * rwlock);#pragma weak __pthread_rwlock_destroyextern int __pthread_rwlock_destroy(pthread_rwlock_t * rwlock);#pragma weak pthread_rwlock_initextern int pthread_rwlock_init(pthread_rwlock_t * rwlock, const pthread_rwlockattr_t * attr);#pragma weak pthread_rwlock_rdlockextern int pthread_rwlock_rdlock(pthread_rwlock_t * rwlock);#pragma weak pthread_rwlock_wrlockextern int pthread_rwlock_wrlock(pthread_rwlock_t * rwlock);#pragma weak pthread_rwlock_unlockextern int pthread_rwlock_unlock(pthread_rwlock_t * rwlock);#pragma weak pthread_rwlock_destroyextern int pthread_rwlock_destroy(pthread_rwlock_t * rwlock);/** @} *//** @name Thread Specific Data  * @brief Functions for thread specific data.  *  * These functions are declared in <pthread.h>, but are also declared here as  * verification against the system headers.  These symbols are declared as weak  * undefined symbols in glibc and provide thread safety capabilities to glibc  * from an add-on pthread library.  They are used in the OpenSS7 libraries to  * detect whether a suitable pthread library is present (loaded).  *  * The first set of symbols: __pthread_once(), __pthread_key_create(),  * __pthread_setspecific(), __pthread_getspecific() and __pthread_key_delete(),  * are weak @e undefined symbols in the glibc library.  These symbols are  * provided when libpthread loads before glibc.  *  * The second set of symbols: pthread_once(), pthread_key_create(),  * pthread_setspecific(), pthread_getspecific() and pthread_key_delete(), are  * weak @e defined symbols that are overriden when libpthread loads after  * glibc.  The first four of these are non-portable and that is why they begin  * with a single underscore.  *  * The proper approach in implementation is to implement the second set as weak  * @e defined symbols that override glibc's symbols and are still overridden by  * libpthread strong symbols, and to test the presence of the first set in the  * implementations of the second set.  *  * @{ */#pragma weak __pthread_onceextern int __pthread_once(pthread_once_t * once_control, void (*init_routine) (void));#pragma weak __pthread_key_createextern int __pthread_key_create(pthread_key_t * key, void (*destr_function) (void *));#pragma weak __pthread_setspecificextern int __pthread_setspecific(pthread_key_t key, const void *pointer);#pragma weak __pthread_getspecificextern void *__pthread_getspecific(pthread_key_t key);#pragma weak __pthread_key_deleteextern int __pthread_key_delete(pthread_key_t key);#pragma weak pthread_onceextern int pthread_once(pthread_once_t * once_control, void (*init_routine) (void));#pragma weak pthread_key_createextern int pthread_key_create(pthread_key_t * key, void (*destr_function) (void *));#pragma weak pthread_setspecificextern int pthread_setspecific(pthread_key_t key, const void *pointer);#pragma weak pthread_getspecificextern void *pthread_getspecific(pthread_key_t key);#pragma weak pthread_key_deleteextern int pthread_key_delete(pthread_key_t key);/** @} *//** Push a cleanup function.  * @param buffer a pointer to a stack allocated cleanup buffer.  * @param routine the cleanup routine.  * @param arg an argument for the cleanup routine.  *  * This is a replacement for the internal glibc function  * _pthread_cleanup_push().  The function is declared in <pthread.h> as a weak  * undefined symbol in glibc to allow the pthreads library to override the  * function.  The struct _pthread_cleanup_buffer structure is also declared in  * <pthread.h>.  */void_pthread_cleanup_push(struct _pthread_cleanup_buffer *buffer, void (*routine) (void *), void *arg){	/** If the weak undefined symbol, __pthread_cleanup_push() is loaded, a	  * suitable threads library exists, and the library symbol is called.	  */	if (__pthread_cleanup_push)		return __pthread_cleanup_push(buffer, routine, arg);	/** Otherwise, The function must initialize the cleanup buffer pointed	  * to by buffer that was pushed onto the stack by glibc.  */	buffer->__routine = routine;	buffer->__arg = arg;	buffer->__canceltype = 0;	buffer->__prev = NULL;}/** Pop, and possibly execute, a cleanup function.  * @param buffer a pointer to a stack allocated cleanup buffer.  * @param execute whether to execute the cleanup function.  *  * This is a replacement for the internal glibc function  * _pthread_cleanup_pop().  The function is declared in <pthread.h> as a weak  * undefined symbol in glibc to allow the pthreads library to override the  * function.  The struct _pthread_cleanup_buffer structure is also declared in  * <pthread.h>.  *  * The function must deinitialize the cleanup buffer pointerd to by buffer  * that will be popped from the stack by glibc.  */void_pthread_cleanup_pop(struct _pthread_cleanup_buffer *buffer, int execute){	if (__pthread_cleanup_pop)		return __pthread_cleanup_pop(buffer, execute);	if (execute)		(*buffer->__routine) (buffer->__arg);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女啊v在线免费观看| 亚洲综合一二区| 蜜芽一区二区三区| 欧美日韩一区小说| 国产黑丝在线一区二区三区| 欧美精品v国产精品v日韩精品| 夜夜亚洲天天久久| 欧美日韩精品电影| 日本网站在线观看一区二区三区| 欧美一区二区视频观看视频| 美女视频免费一区| 久久久国产一区二区三区四区小说| 国产精品自拍毛片| 国产精品成人免费精品自在线观看| 91丝袜美女网| 午夜精品视频一区| 久久女同互慰一区二区三区| 国产精品亚洲а∨天堂免在线| 中国av一区二区三区| 91行情网站电视在线观看高清版| 亚洲va欧美va天堂v国产综合| 日韩三级.com| 丁香网亚洲国际| 亚洲一二三四在线| 日韩美女一区二区三区四区| 成人午夜电影小说| 性做久久久久久| 国产亚洲精品精华液| 色偷偷久久一区二区三区| 首页综合国产亚洲丝袜| 国产丝袜在线精品| 精品视频在线视频| 国产精品亚洲午夜一区二区三区 | 国产清纯白嫩初高生在线观看91| www.亚洲激情.com| 波多野结衣在线aⅴ中文字幕不卡| 亚洲啪啪综合av一区二区三区| 91精品国产综合久久精品图片| 国产精品亚洲а∨天堂免在线| 亚洲综合男人的天堂| 久久一区二区视频| 欧美视频一区二区在线观看| 国产精品亚洲人在线观看| 亚洲午夜一区二区三区| 国产亚洲成年网址在线观看| 欧美视频中文一区二区三区在线观看 | 国产精品99久久久久久久vr | 丁香激情综合国产| 日本在线不卡视频一二三区| 国产精品电影一区二区| 亚洲精品一区二区三区在线观看| 日本久久精品电影| 成人国产精品视频| 九一九一国产精品| 亚洲va欧美va天堂v国产综合| 亚洲国产精品99久久久久久久久| 91麻豆精品国产自产在线观看一区 | 欧美日本视频在线| 欧洲一区二区av| 一区二区三区精品在线| 久久日韩精品一区二区五区| 欧美美女直播网站| 91在线码无精品| 成人一区二区三区视频在线观看| 日韩av成人高清| 亚洲成人免费观看| 亚洲三级电影全部在线观看高清| 午夜精品福利一区二区三区av | 国产精品12区| 久久成人免费电影| 婷婷中文字幕一区三区| 一区二区三区日本| 亚洲人成伊人成综合网小说| 国产精品你懂的在线| 国产午夜精品理论片a级大结局| 精品乱人伦小说| 日韩精品一区二区三区四区| 欧美一区二区三区免费在线看| 欧美日韩一区成人| 欧美日韩高清一区二区| 久久久久久久一区| 久久婷婷成人综合色| 欧美绝品在线观看成人午夜影视| 91福利在线导航| 色综合久久久久综合体桃花网| 成人免费视频播放| 波多野结衣在线一区| 国产suv精品一区二区6| 国产成人免费视频一区| 懂色av一区二区三区免费看| 丁香激情综合五月| 99久久免费国产| 色哟哟国产精品免费观看| 欧美综合视频在线观看| 欧美日韩精品免费| 日韩一区二区视频在线观看| 精品国产免费一区二区三区四区 | 一区二区三区在线视频观看| 韩国v欧美v亚洲v日本v| 久久成人免费电影| 国产一区二区三区| 成人免费三级在线| 色哟哟欧美精品| 日本成人在线网站| 一区二区高清视频在线观看| 一区二区三区欧美在线观看| 亚洲第一主播视频| 久久99精品国产91久久来源| 国产剧情一区二区| av午夜一区麻豆| 欧美日韩国产综合一区二区| 日韩视频一区在线观看| 欧美国产97人人爽人人喊| 亚洲人吸女人奶水| 美女免费视频一区| 成人动漫av在线| 欧美视频自拍偷拍| 国产亚洲综合色| 亚洲成av人影院| 国产精品亚洲午夜一区二区三区 | 91丨九色丨黑人外教| 色狠狠一区二区| 欧美一卡二卡三卡| 国产精品天美传媒沈樵| 亚洲网友自拍偷拍| 国产精品一区二区三区四区| 在线一区二区观看| 精品成人在线观看| 亚洲黄色在线视频| 国产一区二区三区四区五区入口| 91视频精品在这里| 2019国产精品| 亚洲制服欧美中文字幕中文字幕| 国产在线播放一区| 欧美日韩另类国产亚洲欧美一级| 久久久www免费人成精品| 亚洲国产日韩a在线播放| 国产91精品免费| 91精品国产全国免费观看| 一区二区三区精品视频| 欧美性生交片4| 国产亚洲一区字幕| 美日韩一区二区三区| 色婷婷久久久亚洲一区二区三区| 久久综合久久综合亚洲| 色久优优欧美色久优优| 7777精品伊人久久久大香线蕉的 | 国产成人亚洲综合色影视 | 在线精品视频免费播放| 国产色爱av资源综合区| 日本不卡视频在线| 欧美在线观看视频在线| 亚洲欧美综合另类在线卡通| 韩国成人精品a∨在线观看| 欧美狂野另类xxxxoooo| 亚洲美女精品一区| 不卡电影一区二区三区| 久久精品水蜜桃av综合天堂| 蜜桃视频一区二区三区在线观看| 欧美日韩久久久久久| 一区二区三区欧美久久| 成a人片国产精品| 国产亚洲精品7777| 国产一区二区三区最好精华液| 欧美精品在欧美一区二区少妇| 一区二区高清免费观看影视大全| 91在线视频播放地址| 国产精品欧美一级免费| 高清视频一区二区| 日本一区二区三区视频视频| 国模无码大尺度一区二区三区| 日韩午夜av电影| 美腿丝袜在线亚洲一区| 日韩精品专区在线影院重磅| 日本在线不卡视频| 日韩限制级电影在线观看| 美女诱惑一区二区| 日韩欧美一二三四区| 另类专区欧美蜜桃臀第一页| 日韩欧美一卡二卡| 久久电影网站中文字幕| 欧美xxxx老人做受| 国产中文字幕精品| 国产日韩av一区二区| 风间由美一区二区av101| 国产精品情趣视频| 91网站在线播放| 洋洋av久久久久久久一区| 欧美日韩国产123区| 男人的天堂久久精品| 久久综合av免费| 国产不卡视频在线播放| 国产精品国产三级国产有无不卡| 99精品视频在线播放观看| 亚洲一区二区三区四区不卡| 91精品欧美一区二区三区综合在| 久久 天天综合| 中文无字幕一区二区三区| 91亚洲永久精品| 日日夜夜一区二区|