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

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

?? atomicbase.h

?? Amarok是一款在LINUX或其他類UNIX操作系統中運行的音頻播放器軟件。 經過兩年開發后
?? H
?? 第 1 頁 / 共 4 頁
字號:
#endif#define HXAtomicIncINT32(p)       _HXAtomicIncRetUINT32((UINT32*)(p))#define HXAtomicDecINT32(p)       _HXAtomicDecRetUINT32((UINT32*)(p))#define HXAtomicIncRetINT32(p)    _HXAtomicIncRetUINT32((UINT32*)(p))#define HXAtomicDecRetINT32(p)    _HXAtomicDecRetUINT32((UINT32*)(p))#define HXAtomicAddINT32(p,n)     _HXAtomicAddRetUINT32((UINT32*)(p),(INT32)(n))#define HXAtomicSubINT32(p,n)     _HXAtomicSubRetUINT32((UINT32*)(p),(INT32)(n))#define HXAtomicAddRetINT32(p,n)  _HXAtomicAddRetUINT32((UINT32*)(p),(INT32)(n))#define HXAtomicSubRetINT32(p,n)  _HXAtomicSubRetUINT32((UINT32*)(p),(INT32)(n))#define HXAtomicIncUINT32(p)      _HXAtomicIncRetUINT32((p))#define HXAtomicDecUINT32(p)      _HXAtomicDecRetUINT32((p))#define HXAtomicIncRetUINT32(p)   _HXAtomicIncRetUINT32((p))#define HXAtomicDecRetUINT32(p)   _HXAtomicDecRetUINT32((p))#define HXAtomicAddUINT32(p,n)    _HXAtomicAddRetUINT32((p),(n))#define HXAtomicSubUINT32(p,n)    _HXAtomicSubRetUINT32((p),(n))#define HXAtomicAddRetUINT32(p,n) _HXAtomicAddRetUINT32((p),(n))#define HXAtomicSubRetUINT32(p,n) _HXAtomicSubRetUINT32((p),(n))/*********************************************************************** * Tru64 (OSF1) / Alpha (Native compiler) * * Implementation Notes: * * The Alpha CPU provides instructions to load-lock a value, * modify it, and attempt to write it back.  If the value has * been modified by someone else since the load-lock occurred, * the write will fail and you can check the status code to * know whether you need to retry or not. * */#elif defined (__alpha)#include <c_asm.h>/* Increment by 1 and return new value */inline INT32HXAtomicIncRetINT32(INT32* pNum){    return asm (        "10:     ldl_l   %t0, (%a0);"       // Load-lock value into a register        "        addl    %t0, 1, %t0;"      // Increment value        "        or      %t0, %zero, %v0;"  // set new value for return.        "        stl_c   %t0, (%a0);"       // Save new value into *pNum        "        beq     %t0, 10b;"         // Retry if sequence failed        , pNum);}/* Decrement by 1 and return new value */inline INT32HXAtomicDecRetINT32(INT32* pNum){    return asm (        "10:     ldl_l   %t0, (%a0);"       // Load-lock value into a register        "        subl    %t0, 1, %t0;"      // Decrement value        "        or      %t0, %zero, %v0;"  // set new value for return.        "        stl_c   %t0, (%a0);"       // Save new value into *pNum        "        beq     %t0, 10b;"         // Retry if sequence failed        , pNum);}/* Add n and return new value */inline INT32HXAtomicAddRetINT32(INT32* pNum, INT32 n){    return asm (        "10:     ldl_l   %t0, (%a0);"       // Load-lock value into a register        "        addl    %t0, %a1, %t0;"    // Add n to value        "        or      %t0, %zero, %v0;"  // set new value for return.        "        stl_c   %t0, (%a0);"       // Save new value into *pNum        "        beq     %t0, 10b;"         // Retry if sequence failed        , pNum, n);}/* Subtract n and return new value */inline INT32HXAtomicSubRetINT32(INT32* pNum, INT32 n){    return asm (        "10:     ldl_l   %t0, (%a0);"       // Load-lock value into a register        "        subl    %t0, %a1, %t0;"    // Subtract n from value        "        or      %t0, %zero, %v0;"  // set new value for return.        "        stl_c   %t0, (%a0);"       // Save new value into *pNum        "        beq     %t0, 10b;"         // Retry if sequence failed        , pNum, n);}/* Increment by 1 and return new value */inline UINT32HXAtomicIncRetUINT32(UINT32* pNum){    return asm (        "10:     ldl_l   %t0, (%a0);"       // Load-lock value into a register        "        addl    %t0, 1, %t0;"      // Increment value        "        or      %t0, %zero, %v0;"  // set new value for return.        "        stl_c   %t0, (%a0);"       // Save new value into *pNum        "        beq     %t0, 10b;"         // Retry if sequence failed        , pNum);}/* Decrement by 1 and return new value */inline UINT32HXAtomicDecRetUINT32(UINT32* pNum){    return asm (        "10:     ldl_l   %t0, (%a0);"       // Load-lock value into a register        "        subl    %t0, 1, %t0;"      // Decrement value        "        or      %t0, %zero, %v0;"  // set new value for return.        "        stl_c   %t0, (%a0);"       // Save new value into *pNum        "        beq     %t0, 10b;"         // Retry if sequence failed        , pNum);}/* Add n and return new value */inline UINT32HXAtomicAddRetUINT32(UINT32* pNum, UINT32 n){    return asm (        "10:     ldl_l   %t0, (%a0);"       // Load-lock value into a register        "        addl    %t0, %a1, %t0;"    // Add n to value        "        or      %t0, %zero, %v0;"  // set new value for return.        "        stl_c   %t0, (%a0);"       // Save new value into *pNum        "        beq     %t0, 10b;"         // Retry if sequence failed        , pNum, n);}/* Subtract n and return new value */inline UINT32HXAtomicSubRetUINT32(UINT32* pNum, UINT32 n){    return asm (        "10:     ldl_l   %t0, (%a0);"       // Load-lock value into a register        "        subl    %t0, %a1, %t0;"    // Subtract n from value        "        or      %t0, %zero, %v0;"  // set new value for return.        "        stl_c   %t0, (%a0);"       // Save new value into *pNum        "        beq     %t0, 10b;"         // Retry if sequence failed        , pNum, n);}#define HXAtomicIncINT32(p)    HXAtomicIncRetINT32((p))#define HXAtomicDecINT32(p)    HXAtomicDecRetINT32((p))#define HXAtomicAddINT32(p,n)  HXAtomicAddRetINT32((p),(n))#define HXAtomicSubINT32(p,n)  HXAtomicSubRetINT32((p),(n))#define HXAtomicIncUINT32(p)   HXAtomicIncRetUINT32((p))#define HXAtomicDecUINT32(p)   HXAtomicDecRetUINT32((p))#define HXAtomicAddUINT32(p,n) HXAtomicAddRetUINT32((p),(n))#define HXAtomicSubUINT32(p,n) HXAtomicSubRetUINT32((p),(n))/*********************************************************************** * AIX / PowerPC (Native compiler) * * Implementation Notes: * * XXXDC: The xlc compiler is able to do inline asm for C but when I do * it for C++ it crashes, so for now I have resorted to putting * the asm in a separate assembler routine.  The way you inline with * xlc/xlC is difficult to use, requiring the use of "#pragma mc_func". */#elif defined (_AIX)//defined in common/util/platform/aix/atomicops.s#if defined(__cplusplus)extern "C" {#endif    INT32 _HXAtomicAddRetINT32   (INT32*  pNum, INT32  lNum);    INT32 _HXAtomicSubRetINT32   (INT32*  pNum, INT32  lNum);    UINT32 _HXAtomicAddRetUINT32 (UINT32* pNum, UINT32 ulNum);    UINT32 _HXAtomicSubRetUINT32 (UINT32* pNum, UINT32 ulNum);#if defined(__cplusplus)}#endif#define HXAtomicIncINT32(p)       _HXAtomicAddRetINT32((p),(INT32)1)#define HXAtomicDecINT32(p)       _HXAtomicSubRetINT32((p),(INT32)1)#define HXAtomicIncRetINT32(p)    _HXAtomicAddRetINT32((p),(INT32)1)#define HXAtomicDecRetINT32(p)    _HXAtomicSubRetINT32((p),(INT32)1)#define HXAtomicAddINT32(p,n)     _HXAtomicAddRetINT32((p),(n))#define HXAtomicSubINT32(p,n)     _HXAtomicSubRetINT32((p),(n))#define HXAtomicAddRetINT32(p,n)  _HXAtomicAddRetINT32((p),(n))#define HXAtomicSubRetINT32(p,n)  _HXAtomicSubRetINT32((p),(n))#define HXAtomicIncUINT32(p)      _HXAtomicAddRetUINT32((p),(UINT32)1)#define HXAtomicDecUINT32(p)      _HXAtomicSubRetUINT32((p),(UINT32)1)#define HXAtomicIncRetUINT32(p)   _HXAtomicAddRetUINT32((p),(UINT32)1)#define HXAtomicDecRetUINT32(p)   _HXAtomicSubRetUINT32((p),(UINT32)1)#define HXAtomicAddUINT32(p,n)    _HXAtomicAddRetUINT32((p),(n))#define HXAtomicSubUINT32(p,n)    _HXAtomicSubRetUINT32((p),(n))#define HXAtomicAddRetUINT32(p,n) _HXAtomicAddRetUINT32((p),(n))#define HXAtomicSubRetUINT32(p,n) _HXAtomicSubRetUINT32((p),(n))/*********************************************************************** * MAC / PowerPC (CW) * * Implementation Notes: * * This will need to be rewritten, probably, once we move away from CW to PB. * * Note: This is an imcompletely-defined platform, be aware that * not all standard HXAtomic operators are defined! * */#elif defined(_MACINTOSH) && defined(__MWERKS__)inline UINT32HXAtomicIncRetUINT32(register UINT32* pNum){    register UINT32 zeroOffset = 0;    register UINT32 temp;    asm    {	again:	    lwarx temp, zeroOffset, pNum	    addi temp, temp, 1	    stwcx. temp, zeroOffset, pNum	    bne- again    }    return temp;}inline UINT32HXAtomicDecRetUINT32(register UINT32* pNum){    register UINT32 zeroOffset = 0;    register UINT32 temp;    asm    {	again:	    lwarx temp, zeroOffset, pNum	    subi temp, temp, 1	    stwcx. temp, zeroOffset, pNum	    bne- again    }    return temp;}/*********************************************************************** * MAC - PowerPC (PB or XCode) / Linux - PowerPC * * Implementation Notes: * * Use PowerPC load exclusive and store exclusive instructions * */#elif defined(_MAC_UNIX) || (defined(_LINUX) && defined(__powerpc__))// could also probably be defined(__GNUC__) && defined(__powerpc)static inline UINT32HXAtomicIncRetUINT32(UINT32* pNum){    volatile UINT32 result;	__asm__ __volatile__ ("1:      lwarx  %0, %3, %2;\n""        addi   %0, %0, 1;\n""        stwcx. %0, %3, %2;\n""        bne- 1b;"         : "=b" (result)         : "0" (result), "b" (pNum), "b" (0x0)         : "cc", "memory"		 );		return result;}static inline UINT32HXAtomicDecRetUINT32(UINT32* pNum){    volatile UINT32 result;	__asm__ __volatile__ ("1:      lwarx  %0, %3, %2;\n""        subi   %0, %0, 1;\n""        stwcx. %0, %3, %2;\n""        bne- 1b;"         : "=b" (result)         : "0" (result), "b" (pNum), "b" (0x0)         : "cc", "memory"         );		return result;}static inline UINT32HXAtomicAddRetUINT32(UINT32* pNum, UINT32 ulNum){    volatile UINT32 result;	__asm__ __volatile__ ("1:      lwarx  %0, %3, %2;\n""        add    %0, %0, %4;\n""        stwcx. %0, %3, %2;\n""        bne- 1b;"         : "=b" (result)         : "0" (result), "b" (pNum), "b" (0x0), "b" (ulNum)         : "cc", "memory"		 );		return result;}static inline UINT32HXAtomicSubRetUINT32(UINT32* pNum, UINT32 ulNum){    volatile UINT32 result;	__asm__ __volatile__ ("1:      lwarx  %0, %3, %2;\n""        sub    %0, %0, %4;\n""        stwcx. %0, %3, %2;\n""        bne- 1b;"         : "=b" (result)         : "0" (result), "b" (pNum), "b" (0x0), "b" (ulNum)         : "cc", "memory"         );		return result;}// the rest of these atomic operations can be implemented in terms of the four above.static inline void HXAtomicIncINT32(INT32* p) { (void)HXAtomicIncRetUINT32((UINT32*)p); }static inline void HXAtomicDecINT32(INT32* p) { (void)HXAtomicDecRetUINT32((UINT32*)p); }static inline void HXAtomicAddINT32(INT32* p, INT32 n) { (void)HXAtomicAddRetUINT32((UINT32*)p, (UINT32)n); }static inline void HXAtomicSubINT32(INT32* p, INT32 n) { (void)HXAtomicSubRetUINT32((UINT32*)p, (UINT32)n); }static inline INT32 HXAtomicIncRetINT32(INT32* p) { return (INT32)HXAtomicIncRetUINT32((UINT32*)p); }static inline INT32 HXAtomicDecRetINT32(INT32* p) { return (INT32)HXAtomicDecRetUINT32((UINT32*)p); }static inline INT32 HXAtomicAddRetINT32(INT32* p, INT32 n) { return (INT32)HXAtomicAddRetUINT32((UINT32*)p, (UINT32)n); }static inline INT32 HXAtomicSubRetINT32(INT32* p, INT32 n) { return (INT32)HXAtomicSubRetUINT32((UINT32*)p, (UINT32)n); }static inline void HXAtomicIncUINT32(UINT32* p) { (void)HXAtomicIncRetUINT32(p); }static inline void HXAtomicDecUINT32(UINT32* p) { (void)HXAtomicDecRetUINT32(p); }static inline void HXAtomicAddUINT32(UINT32* p, UINT32 n) { (void)HXAtomicAddRetUINT32(p, n); }static inline void HXAtomicSubUINT32(UINT32* p, UINT32 n) { (void)HXAtomicSubRetUINT32(p, n); }/*********************************************************************** * Generic * * Implementation Notes: * * This should work on any platform with a HXMutex-style mutex. * It allocates a pool of mutexes and hashes the int pointers * to one of the mutexes.  Since the mutexes are held for * such a short time, only long enough to increment an int, * collisions should be extremely rare and this should work fine, * although it is probably less fast than the extra-high-performance * atomic operators provided above.  You need to link in atomic.cpp * to get HXAtomic::m_pLocks defined. * * Basic design of the mutex-based lock-pool implementation: *   At startup, allocate an array of N mutexes (where N is a power of 2). *   When a method is called, hash the int pointer to one of the locks. *   Lock this mutex. *   Modify the value. *   Unlock this mutex. * * * Platform-specific notes: *   Any platforms that use this should be documented here! *   Why are you using the generic operators for this platform? * * HP-UX / HP-PA: *   This is used on the HP-PA processor since it doesn't provide the *   necessary assembler operators to implement proper atomic updates *   of ints.  HP's mutex primitive seems pretty fast however, resulting *   in a workable solution. * * OpenBSD: *   The standard assembler on x86 can't handle the gcc/asm operators *   defined above, so we're using the lock-pool approach for now. *   This approach also makes it possible to support non-x86 OpenBSD *   builds more easily (someday). * */#elif defined(_HPUX) || defined(_OPENBSD)#if defined(__cplusplus)#include "microsleep.h"

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久国产字幕高潮| 亚洲成人在线网站| 亚洲午夜电影在线| 国产精品一区二区久久不卡| 欧美丝袜丝nylons| 国产精品高潮呻吟| 国产精品一级片在线观看| 欧美日韩视频第一区| 国产精品久久久久久亚洲毛片 | 国产精选一区二区三区| 欧美亚洲免费在线一区| 国产精品国产三级国产专播品爱网| 丝袜国产日韩另类美女| 色拍拍在线精品视频8848| 国产亚洲自拍一区| 久久er99热精品一区二区| 欧美日韩国产精品成人| 亚洲一区二区三区不卡国产欧美 | 国产精品色在线观看| 极品少妇xxxx精品少妇偷拍| 欧美日韩aaa| 亚洲高清久久久| 在线观看亚洲精品| 亚洲男同性视频| 波波电影院一区二区三区| 国产精品色眯眯| 国产成人精品影视| 国产欧美日本一区视频| 国产98色在线|日韩| 久久先锋影音av鲁色资源网| 极品瑜伽女神91| 精品国产成人在线影院| 国产一区二区三区在线观看免费视频 | 国产精品一区在线| 精品国产欧美一区二区| 国产一区福利在线| 久久久蜜臀国产一区二区| 国产成人精品午夜视频免费| 久久久精品日韩欧美| 成人一区二区在线观看| 日韩美女久久久| 91精彩视频在线观看| 亚洲一区二区美女| 日韩欧美国产综合一区 | 99国产精品久久久久久久久久久 | 精品少妇一区二区三区日产乱码| 亚洲h精品动漫在线观看| 欧美一区二区三区喷汁尤物| 奇米色一区二区| 久久久91精品国产一区二区三区| 国产精品99久久久久久宅男| 成人欧美一区二区三区白人| 在线亚洲一区观看| 久久99热国产| 中文无字幕一区二区三区| 99久久精品一区二区| 亚洲一区二区三区四区在线| 91精品国模一区二区三区| 国内精品视频一区二区三区八戒| 国产精品女同互慰在线看| 欧美做爰猛烈大尺度电影无法无天| 日韩精品一二三四| 国产欧美精品一区二区三区四区| 91小视频免费看| 日韩精品电影在线观看| 国产欧美日韩在线观看| 欧美亚洲愉拍一区二区| 国产一区二区三区不卡在线观看 | 日韩欧美在线不卡| 懂色av中文一区二区三区| 亚洲gay无套男同| 国产欧美日韩不卡免费| 91精品国产一区二区三区香蕉| 国产成人免费视频 | 亚洲精品国产无套在线观| 欧美一级二级在线观看| 91网上在线视频| 精品一区二区三区在线观看 | 亚洲国产高清在线观看视频| 欧美人与禽zozo性伦| 成人黄色网址在线观看| 麻豆成人91精品二区三区| 亚洲综合色噜噜狠狠| 国产嫩草影院久久久久| 91精品欧美久久久久久动漫| 91丝袜国产在线播放| 韩日av一区二区| 婷婷一区二区三区| 亚洲精品中文字幕在线观看| 久久久久国产精品麻豆| 日韩欧美色综合| 欧美午夜寂寞影院| 成熟亚洲日本毛茸茸凸凹| 久草热8精品视频在线观看| 五月天一区二区三区| 亚洲欧美一区二区三区国产精品 | 国产三级三级三级精品8ⅰ区| 欧美日韩一级二级| 91九色02白丝porn| av在线这里只有精品| 国产精品一区二区在线观看网站| 奇米精品一区二区三区在线观看一| 亚洲综合在线观看视频| 亚洲欧美国产毛片在线| 中文字幕中文字幕在线一区 | 久久综合丝袜日本网| 日韩三级在线观看| 欧美一区二区播放| 制服丝袜成人动漫| 欧美精品第一页| 制服丝袜一区二区三区| 欧美日韩久久一区二区| 欧美视频日韩视频在线观看| 在线观看日韩毛片| 欧洲精品一区二区三区在线观看| 91国模大尺度私拍在线视频| 91麻豆国产在线观看| 色香色香欲天天天影视综合网| www.av亚洲| 色狠狠av一区二区三区| 欧洲精品一区二区三区在线观看| 欧美色手机在线观看| 欧美日韩国产综合一区二区三区| 欧美在线小视频| 69久久夜色精品国产69蝌蚪网| 欧美一区二区视频在线观看2020 | 成人av在线影院| 91色.com| 欧洲一区二区av| 91麻豆精品国产91久久久久久久久| 6080日韩午夜伦伦午夜伦| 欧美成人三级电影在线| 国产亚洲精久久久久久| 中文字幕中文在线不卡住| 亚洲高清视频的网址| 另类小说图片综合网| 成人va在线观看| 欧美精品久久天天躁| 国产人成一区二区三区影院| 亚洲精品伦理在线| 麻豆精品在线看| 99综合电影在线视频| 在线成人免费观看| 久久精品欧美一区二区三区麻豆| 中文字幕综合网| 青青草国产精品97视觉盛宴| 国产suv精品一区二区6| 欧美三区在线观看| 2021中文字幕一区亚洲| 一区二区三区在线观看国产| 精品在线你懂的| 91麻豆123| 精品国产一区二区三区久久影院| 国产亚洲一区二区三区在线观看| 亚洲欧洲日韩女同| 另类成人小视频在线| 色狠狠色狠狠综合| 久久久精品免费观看| 午夜伦理一区二区| 成人app网站| 欧美刺激午夜性久久久久久久| 成人欧美一区二区三区黑人麻豆| 美女视频黄频大全不卡视频在线播放| 播五月开心婷婷综合| 欧美tk—视频vk| 亚洲成国产人片在线观看| 国产成人免费视频| 精品日本一线二线三线不卡| 一区二区三区精品久久久| 国产精品18久久久久久久网站| 91蜜桃免费观看视频| 久久在线观看免费| 美脚の诱脚舐め脚责91| 欧美网站一区二区| 亚洲欧美国产77777| www.欧美日韩国产在线| 久久精品亚洲国产奇米99| 全部av―极品视觉盛宴亚洲| 色乱码一区二区三区88| 国产精品久久久久久久久晋中| 精品亚洲成a人在线观看| 91精品国产乱码久久蜜臀| 亚洲国产精品一区二区久久恐怖片| 成人激情视频网站| 国产日韩欧美一区二区三区综合| 喷水一区二区三区| 欧美日韩极品在线观看一区| 一区二区三区在线视频观看| www.日韩av| 亚洲色图另类专区| 99久久精品免费| 国产精品久久久久久福利一牛影视 | 国产精品久久久久久福利一牛影视 | 五月天中文字幕一区二区| 91成人网在线| 午夜一区二区三区视频| 欧美三级日本三级少妇99| 亚洲成人1区2区| 欧美一三区三区四区免费在线看 | 香蕉影视欧美成人|