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

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

?? lowlevellock.h

?? glibc 庫, 不僅可以學習使用庫函數,還可以學習函數的具體實現,是提高功力的好資料
?? H
字號:
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.   This file is part of the GNU C Library.   Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.   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 _LOWLEVELLOCK_H#define _LOWLEVELLOCK_H	1#include <time.h>#include <sys/param.h>#include <bits/pthreadtypes.h>#include <atomic.h>#define SYS_futex		238#define FUTEX_WAIT		0#define FUTEX_WAKE		1#define FUTEX_REQUEUE		3#define FUTEX_CMP_REQUEUE	4#define FUTEX_WAKE_OP		5#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE	((4 << 24) | 1)#define FUTEX_LOCK_PI		6#define FUTEX_UNLOCK_PI		7#define FUTEX_TRYLOCK_PI	8/* Initializer for compatibility lock.	*/#define LLL_MUTEX_LOCK_INITIALIZER (0)#define lll_futex_wait(futex, val) \  ({									      \     register unsigned long int __r2 asm ("2") = (unsigned long int) (futex); \     register unsigned long int __r3 asm ("3") = FUTEX_WAIT;		      \     register unsigned long int __r4 asm ("4") = (unsigned long int) (val);   \     register unsigned long int __r5 asm ("5") = 0ul;			      \     register unsigned long __result asm ("2");				      \									      \    __asm __volatile ("svc %b1"						      \		      : "=d" (__result)					      \		      : "i" (SYS_futex), "0" (__r2), "d" (__r3),	      \			"d" (__r4), "d" (__r5)				      \		      : "cc", "memory" );				      \    __result;								      \  })#define lll_futex_timed_wait(futex, val, timespec) \  ({									      \    register unsigned long int __r2 asm ("2") = (unsigned long int) (futex);  \    register unsigned long int __r3 asm ("3") = FUTEX_WAIT;		      \    register unsigned long int __r4 asm ("4") = (unsigned long int) (val);    \    register unsigned long int __r5 asm ("5") = (unsigned long int)(timespec);\    register unsigned long int __result asm ("2");			      \									      \    __asm __volatile ("svc %b1"						      \		      : "=d" (__result)					      \		      : "i" (SYS_futex), "0" (__r2), "d" (__r3),	      \			"d" (__r4), "d" (__r5)				      \		      : "cc", "memory" );				      \    __result;								      \  })#define lll_futex_wake(futex, nr) \  ({									      \    register unsigned long int __r2 asm ("2") = (unsigned long int) (futex);  \    register unsigned long int __r3 asm ("3") = FUTEX_WAKE;		      \    register unsigned long int __r4 asm ("4") = (unsigned long int) (nr);     \    register unsigned long int __result asm ("2");			      \									      \    __asm __volatile ("svc %b1"						      \		      : "=d" (__result)					      \		      : "i" (SYS_futex), "0" (__r2), "d" (__r3), "d" (__r4)   \		      : "cc", "memory" );				      \    __result;								      \  })#define lll_robust_mutex_dead(futexv) \  do									      \    {									      \      int *__futexp = &(futexv);					      \									      \      atomic_or (__futexp, FUTEX_OWNER_DIED);				      \      lll_futex_wake (__futexp, 1);					      \    }									      \  while (0)/* Returns non-zero if error happened, zero if success.  */#define lll_futex_requeue(futex, nr_wake, nr_move, mutex, val) \  ({									      \    register unsigned long int __r2 asm ("2") = (unsigned long int) (futex);  \    register unsigned long int __r3 asm ("3") = FUTEX_CMP_REQUEUE;	      \    register unsigned long int __r4 asm ("4") = (long int) (nr_wake);	      \    register unsigned long int __r5 asm ("5") = (long int) (nr_move);	      \    register unsigned long int __r6 asm ("6") = (unsigned long int) (mutex);  \    register unsigned long int __r7 asm ("7") = (int) (val);		      \    register unsigned long __result asm ("2");				      \									      \    __asm __volatile ("svc %b1"						      \		      : "=d" (__result)					      \		      : "i" (SYS_futex), "0" (__r2), "d" (__r3),	      \			"d" (__r4), "d" (__r5), "d" (__r6), "d" (__r7)	      \		      : "cc", "memory" );				      \    __result > -4096UL;							      \  })/* Returns non-zero if error happened, zero if success.  */#define lll_futex_wake_unlock(futex, nr_wake, nr_wake2, futex2) \  ({									      \    register unsigned long int __r2 asm ("2") = (unsigned long int) (futex);  \    register unsigned long int __r3 asm ("3") = FUTEX_WAKE_OP;	      \    register unsigned long int __r4 asm ("4") = (long int) (nr_wake);	      \    register unsigned long int __r5 asm ("5") = (long int) (nr_wake2);	      \    register unsigned long int __r6 asm ("6") = (unsigned long int) (futex2); \    register unsigned long int __r7 asm ("7")				      \      = (int) FUTEX_OP_CLEAR_WAKE_IF_GT_ONE;				      \    register unsigned long __result asm ("2");				      \									      \    __asm __volatile ("svc %b1"						      \		      : "=d" (__result)					      \		      : "i" (SYS_futex), "0" (__r2), "d" (__r3),	      \			"d" (__r4), "d" (__r5), "d" (__r6), "d" (__r7)	      \		      : "cc", "memory" );				      \    __result > -4096UL;							      \  })#define lll_compare_and_swap(futex, oldval, newval, operation) \  do {									      \    __typeof (futex) __futex = (futex);					      \    __asm __volatile ("	  l   %1,%0\n"					      \		      "0: " operation "\n"				      \		      "	  cs  %1,%2,%0\n"				      \		      "	  jl  0b\n"					      \		      "1:"						      \		      : "=Q" (*__futex), "=&d" (oldval), "=&d" (newval)	      \		      : "m" (*__futex) : "cc", "memory" );		      \  } while (0)static inline int__attribute__ ((always_inline))__lll_mutex_trylock (int *futex){    unsigned int old;    __asm __volatile ("cs %0,%3,%1"		       : "=d" (old), "=Q" (*futex)		       : "0" (0), "d" (1), "m" (*futex) : "cc", "memory" );    return old != 0;}#define lll_mutex_trylock(futex) __lll_mutex_trylock (&(futex))static inline int__attribute__ ((always_inline))__lll_mutex_cond_trylock (int *futex){    unsigned int old;    __asm __volatile ("cs %0,%3,%1"		       : "=d" (old), "=Q" (*futex)		       : "0" (0), "d" (2), "m" (*futex) : "cc", "memory" );    return old != 0;}#define lll_mutex_cond_trylock(futex) __lll_mutex_cond_trylock (&(futex))static inline int__attribute__ ((always_inline))__lll_robust_mutex_trylock (int *futex, int id){    unsigned int old;    __asm __volatile ("cs %0,%3,%1"		       : "=d" (old), "=Q" (*futex)		       : "0" (0), "d" (id), "m" (*futex) : "cc", "memory" );    return old != 0;}#define lll_robust_mutex_trylock(futex, id) \  __lll_robust_mutex_trylock (&(futex), id)extern void __lll_lock_wait (int *futex) attribute_hidden;extern int __lll_robust_lock_wait (int *futex) attribute_hidden;static inline void__attribute__ ((always_inline))__lll_mutex_lock (int *futex){  if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0)    __lll_lock_wait (futex);}#define lll_mutex_lock(futex) __lll_mutex_lock (&(futex))static inline int__attribute__ ((always_inline))__lll_robust_mutex_lock (int *futex, int id){  int result = 0;  if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0)    result = __lll_robust_lock_wait (futex);  return result;}#define lll_robust_mutex_lock(futex, id) __lll_robust_mutex_lock (&(futex), id)static inline void__attribute__ ((always_inline))__lll_mutex_cond_lock (int *futex){  if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0)    __lll_lock_wait (futex);}#define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex))#define lll_robust_mutex_cond_lock(futex, id) \  __lll_robust_mutex_lock (&(futex), (id) | FUTEX_WAITERS)extern int __lll_timedlock_wait  (int *futex, const struct timespec *) attribute_hidden;extern int __lll_robust_timedlock_wait  (int *futex, const struct timespec *) attribute_hidden;static inline int__attribute__ ((always_inline))__lll_mutex_timedlock (int *futex, const struct timespec *abstime){  int result = 0;  if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0)    result = __lll_timedlock_wait (futex, abstime);  return result;}#define lll_mutex_timedlock(futex, abstime) \  __lll_mutex_timedlock (&(futex), abstime)static inline int__attribute__ ((always_inline))__lll_robust_mutex_timedlock (int *futex, const struct timespec *abstime,			      int id){  int result = 0;  if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0)    result = __lll_robust_timedlock_wait (futex, abstime);  return result;}#define lll_robust_mutex_timedlock(futex, abstime, id) \  __lll_robust_mutex_timedlock (&(futex), abstime, id)static inline void__attribute__ ((always_inline))__lll_mutex_unlock (int *futex){  int oldval;  int newval = 0;  lll_compare_and_swap (futex, oldval, newval, "slr %2,%2");  if (oldval > 1)    lll_futex_wake (futex, 1);}#define lll_mutex_unlock(futex) \  __lll_mutex_unlock(&(futex))static inline void__attribute__ ((always_inline))__lll_robust_mutex_unlock (int *futex, int mask){  int oldval;  int newval = 0;  lll_compare_and_swap (futex, oldval, newval, "slr %2,%2");  if (oldval & mask)    lll_futex_wake (futex, 1);}#define lll_robust_mutex_unlock(futex) \  __lll_robust_mutex_unlock(&(futex), FUTEX_WAITERS)static inline void__attribute__ ((always_inline))__lll_mutex_unlock_force (int *futex){  *futex = 0;  lll_futex_wake (futex, 1);}#define lll_mutex_unlock_force(futex) \  __lll_mutex_unlock_force(&(futex))#define lll_mutex_islocked(futex) \  (futex != 0)/* We have a separate internal lock implementation which is not tied   to binary compatibility.  We can use the lll_mutex_*.  *//* Type for lock object.  */typedef int lll_lock_t;/* Initializers for lock.  */#define LLL_LOCK_INITIALIZER		(0)#define LLL_LOCK_INITIALIZER_LOCKED	(1)#define lll_trylock(futex)      lll_mutex_trylock (futex)#define lll_lock(futex)         lll_mutex_lock (futex)#define lll_unlock(futex)       lll_mutex_unlock (futex)#define lll_islocked(futex)     lll_mutex_islocked (futex)extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;/* The states of a lock are:    1  -  untaken    0  -  taken by one user   <0  -  taken by more users *//* The kernel notifies a process with uses CLONE_CLEARTID via futex   wakeup when the clone terminates.  The memory location contains the   thread ID while the clone is running and is reset to zero   afterwards.	*/static inline void__attribute__ ((always_inline))__lll_wait_tid (int *ptid){  int tid;  while ((tid = *ptid) != 0)    lll_futex_wait (ptid, tid);}#define lll_wait_tid(tid) __lll_wait_tid(&(tid))extern int __lll_timedwait_tid (int *, const struct timespec *)     attribute_hidden;#define lll_timedwait_tid(tid, abstime) \  ({									      \    int __res = 0;							      \    if ((tid) != 0)							      \      __res = __lll_timedwait_tid (&(tid), (abstime));			      \    __res;								      \  })/* Conditional variable handling.  */extern void __lll_cond_wait (pthread_cond_t *cond)     attribute_hidden;extern int __lll_cond_timedwait (pthread_cond_t *cond,				 const struct timespec *abstime)     attribute_hidden;extern void __lll_cond_wake (pthread_cond_t *cond)     attribute_hidden;extern void __lll_cond_broadcast (pthread_cond_t *cond)     attribute_hidden;#define lll_cond_wait(cond) \  __lll_cond_wait (cond)#define lll_cond_timedwait(cond, abstime) \  __lll_cond_timedwait (cond, abstime)#define lll_cond_wake(cond) \  __lll_cond_wake (cond)#define lll_cond_broadcast(cond) \  __lll_cond_broadcast (cond)#endif	/* lowlevellock.h */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩激情av在线| 久久超碰97人人做人人爱| 亚洲国产电影在线观看| 精品蜜桃在线看| 久久精品亚洲一区二区三区浴池| 精品国产一区二区三区久久影院| 精品久久久久久久久久久院品网 | 色欧美88888久久久久久影院| 成人国产一区二区三区精品| 成人免费黄色大片| 91精品1区2区| 3atv一区二区三区| 久久久久久久久一| 亚洲色图制服诱惑| 亚洲超碰精品一区二区| 蜜臀av一级做a爰片久久| 狠狠色综合日日| 97精品久久久午夜一区二区三区| 日本高清不卡视频| 欧美一区二区不卡视频| 国产欧美日韩另类一区| 伊人色综合久久天天人手人婷| 一区二区三区91| 激情国产一区二区| 99精品桃花视频在线观看| 欧美亚洲综合网| 精品乱人伦小说| 樱花影视一区二区| 国产伦精品一区二区三区免费| 成人avav影音| 欧美高清视频在线高清观看mv色露露十八| 精品人在线二区三区| 一区二区三区资源| 国产一区在线观看麻豆| 色哟哟精品一区| 久久久久久影视| 五月婷婷久久丁香| 成人性色生活片免费看爆迷你毛片| 欧美午夜一区二区| 中文字幕免费观看一区| 日本成人在线网站| 色一情一伦一子一伦一区| 精品国产91乱码一区二区三区| 亚洲日本在线看| 国产成人免费网站| 欧美一级二级三级蜜桃| 亚洲欧美成人一区二区三区| 国产精品一区二区在线播放 | 99久久国产免费看| 日韩免费观看2025年上映的电影| 亚洲欧美激情插| 国产91富婆露脸刺激对白| 日韩精品一区二区三区在线播放| 亚洲国产三级在线| av午夜一区麻豆| 国产婷婷色一区二区三区四区 | 色综合久久久久久久久久久| 久久久亚洲国产美女国产盗摄| 日韩在线播放一区二区| 在线观看av一区| 一区二区三区中文字幕精品精品| 国产成人在线视频播放| 久久婷婷久久一区二区三区| 免费在线观看日韩欧美| 欧美精选午夜久久久乱码6080| 亚洲激情校园春色| 91啪亚洲精品| 亚洲日韩欧美一区二区在线| 91同城在线观看| 中文字幕一区二区三区不卡| 99久久国产免费看| 亚洲欧美综合色| 99久久精品免费看| 亚洲免费在线观看| 在线亚洲欧美专区二区| 一区二区三区欧美在线观看| 欧美综合一区二区| 亚洲国产人成综合网站| 欧美日韩一区二区三区四区| 亚洲sss视频在线视频| 欧美巨大另类极品videosbest| 亚洲成av人片一区二区| 欧美一区二区三区视频在线| 精品一区二区免费| 久久婷婷一区二区三区| 不卡影院免费观看| 亚洲精品中文在线影院| 欧美日韩极品在线观看一区| 轻轻草成人在线| 26uuu欧美| 91亚洲精华国产精华精华液| 亚洲综合免费观看高清在线观看| 制服丝袜日韩国产| 国产成人高清在线| 亚洲美女在线国产| 欧美高清视频在线高清观看mv色露露十八| 麻豆免费精品视频| 日本一区二区三区免费乱视频| 91农村精品一区二区在线| 亚洲成人av免费| 久久久精品免费免费| 在线国产亚洲欧美| 精品无人区卡一卡二卡三乱码免费卡| 国产校园另类小说区| 欧美在线免费观看亚洲| 美女视频黄久久| 国产精品动漫网站| 91精品欧美综合在线观看最新| 国产成人精品影院| 亚洲成国产人片在线观看| 国产亚洲成年网址在线观看| 欧美精品一卡两卡| 不卡av电影在线播放| 欧美bbbbb| 亚洲精品五月天| 久久综合久久鬼色中文字| av一区二区久久| 黑人巨大精品欧美黑白配亚洲| 亚洲欧美国产高清| 欧美极品另类videosde| 3d动漫精品啪啪一区二区竹菊 | 亚洲精品在线三区| 欧美性xxxxx极品少妇| 成人美女在线观看| 国产一区二区三区| 午夜精品视频一区| 亚洲欧美一区二区三区极速播放 | 依依成人综合视频| 国产欧美日韩久久| 久久综合一区二区| 欧美一级黄色大片| 欧美美女一区二区三区| 91在线观看高清| 成人黄色国产精品网站大全在线免费观看 | 成人免费视频一区二区| 日本美女一区二区三区视频| 一区二区三区美女| 综合激情成人伊人| 亚洲国产高清aⅴ视频| 精品国产成人在线影院| 日韩欧美综合在线| 69av一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 91麻豆免费观看| caoporn国产一区二区| 国产福利精品导航| 国产麻豆精品在线观看| 精品一区二区三区免费观看| 水蜜桃久久夜色精品一区的特点 | 久久国产日韩欧美精品| 日欧美一区二区| 亚洲成人免费在线观看| 亚洲午夜激情网页| 亚洲成在人线在线播放| 午夜精品一区二区三区电影天堂| 亚洲国产精品久久人人爱 | 国产亚洲欧洲997久久综合 | 免费高清在线视频一区·| 午夜av区久久| 免费在线观看不卡| 久久99这里只有精品| 国精产品一区一区三区mba桃花 | 国产一区二区主播在线| 国产传媒久久文化传媒| 成人免费视频app| 日本韩国视频一区二区| 欧美福利视频导航| 欧美刺激午夜性久久久久久久| 精品88久久久久88久久久| 国产欧美日韩一区二区三区在线观看| 国产精品久久久久久久久免费相片| 国产精品免费网站在线观看| 亚洲综合成人在线视频| 久久国产精品一区二区| 处破女av一区二区| 欧美日韩国产综合一区二区| 日韩美女天天操| 亚洲欧洲精品一区二区三区| 亚洲大片精品永久免费| 国产精品综合二区| 色又黄又爽网站www久久| 日韩三级在线免费观看| 国产精品久久久久婷婷| 亚洲第一福利一区| 国产精品18久久久久久久久久久久| 不卡av在线免费观看| 欧美一区二区三区喷汁尤物| 国产人成一区二区三区影院| 夜夜嗨av一区二区三区网页| 九一九一国产精品| 日本精品一区二区三区四区的功能| 51精品秘密在线观看| 中文字幕日本不卡| 老司机免费视频一区二区三区| 国产精品一二三区在线| 91精品国产色综合久久久蜜香臀| 国产欧美久久久精品影院| 日韩福利电影在线观看| 99久久久久久| 久久久久久久久久久久电影 |