CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/atomic/x86-gcc.h
浏览该文件的文档。
00001 / *   C o p y r i g h t   ( C )   2 0 0 6   M y S Q L   A B 
00002  
00003        T h i s   p r o g r a m   i s   f r e e   s o f t w a r e ;   y o u   c a n   r e d i s t r i b u t e   i t   a n d / o r   m o d i f y 
00004  
00005        i t   u n d e r   t h e   t e r m s   o f   t h e   G N U   G e n e r a l   P u b l i c   L i c e n s e   a s   p u b l i s h e d   b y 
00006  
00007        t h e   F r e e   S o f t w a r e   F o u n d a t i o n ;   v e r s i o n   2   o f   t h e   L i c e n s e . 
00008  
00009        T h i s   p r o g r a m   i s   d i s t r i b u t e d   i n   t h e   h o p e   t h a t   i t   w i l l   b e   u s e f u l , 
00010  
00011        b u t   W I T H O U T   A N Y   W A R R A N T Y ;   w i t h o u t   e v e n   t h e   i m p l i e d   w a r r a n t y   o f 
00012  
00013        M E R C H A N T A B I L I T Y   o r   F I T N E S S   F O R   A   P A R T I C U L A R   P U R P O S E .     S e e   t h e 
00014  
00015        G N U   G e n e r a l   P u b l i c   L i c e n s e   f o r   m o r e   d e t a i l s . 
00016  
00017        Y o u   s h o u l d   h a v e   r e c e i v e d   a   c o p y   o f   t h e   G N U   G e n e r a l   P u b l i c   L i c e n s e 
00018  
00019        a l o n g   w i t h   t h i s   p r o g r a m ;   i f   n o t ,   w r i t e   t o   t h e   F r e e   S o f t w a r e 
00020  
00021        F o u n d a t i o n ,   I n c . ,   5 9   T e m p l e   P l a c e ,   S u i t e   3 3 0 ,   B o s t o n ,   M A     0 2 1 1 1 - 1 3 0 7     U S A   * / 
00022  
00023  / * 
00024  
00025      X X X   6 4 - b i t   a t o m i c   o p e r a t i o n s   c a n   b e   i m p l e m e n t e d   u s i n g 
00026  
00027      c m p x c h g 8 b ,   i f   n e c e s s a r y .   T h o u g h   I ' v e   h e a r d   t h a t   n o t   a l l   6 4 - b i t 
00028  
00029      a r c h i t e c t u r e s   s u p p o r t   d o u b l e - w o r d   ( 1 2 8 - b i t )   c a s . 
00030  
00031  * / 
00032  
00033  # i f d e f   _ _ x 8 6 _ 6 4 _ _ 
00034  
00035  #     i f d e f   M Y _ A T O M I C _ N O _ X A D D 
00036  
00037  #         d e f i n e   M Y _ A T O M I C _ M O D E   " g c c - a m d 6 4 "   L O C K _ p r e f i x   " - n o - x a d d " 
00038  
00039  #     e l s e 
00040  
00041  #         d e f i n e   M Y _ A T O M I C _ M O D E   " g c c - a m d 6 4 "   L O C K _ p r e f i x 
00042  
00043  #     e n d i f 
00044  
00045  # e l s e 
00046  
00047  #     i f d e f   M Y _ A T O M I C _ N O _ X A D D 
00048  
00049  #         d e f i n e   M Y _ A T O M I C _ M O D E   " g c c - x 8 6 "   L O C K _ p r e f i x   " - n o - x a d d " 
00050  
00051  #     e l s e 
00052  
00053  #         d e f i n e   M Y _ A T O M I C _ M O D E   " g c c - x 8 6 "   L O C K _ p r e f i x 
00054  
00055  #     e n d i f 
00056  
00057  # e n d i f 
00058  
00059  / *   f i x   - a n s i   e r r o r s   w h i l e   m a i n t a i n i n g   r e a d a b i l i t y   * / 
00060  
00061  # i f n d e f   a s m 
00062  
00063  # d e f i n e   a s m   _ _ a s m _ _ 
00064  
00065  # e n d i f 
00066  
00067  # i f n d e f   M Y _ A T O M I C _ N O _ X A D D 
00068  
00069  # d e f i n e   m a k e _ a t o m i c _ a d d _ b o d y ( S )                   \ 
00070  
00071      a s m   v o l a t i l e   ( L O C K _ p r e f i x   " ;   x a d d   % 0 ,   % 1 ; "   :   " + r "   ( v )   ,   " + m "   ( * a ) ) 
00072  
00073  # e n d i f 
00074  
00075  # d e f i n e   m a k e _ a t o m i c _ f a s _ b o d y ( S )               \ 
00076  
00077      a s m   v o l a t i l e   ( " x c h g   % 0 ,   % 1 ; "   :   " + r "   ( v )   ,   " + m "   ( * a ) ) 
00078  
00079  # d e f i n e   m a k e _ a t o m i c _ c a s _ b o d y ( S )                   \ 
00080  
00081      a s m   v o l a t i l e   ( L O C K _ p r e f i x   " ;   c m p x c h g   % 3 ,   % 0 ;   s e t z   % 2 ; "     \ 
00082  
00083                                :   " + m "   ( * a ) ,   " + a "   ( * c m p ) ,   " = q "   ( r e t ) :   " r "   ( s e t ) ) 
00084  
00085  # i f d e f   M Y _ A T O M I C _ M O D E _ D U M M Y 
00086  
00087  # d e f i n e   m a k e _ a t o m i c _ l o a d _ b o d y ( S )       r e t = * a 
00088  
00089  # d e f i n e   m a k e _ a t o m i c _ s t o r e _ b o d y ( S )     * a = v 
00090  
00091  # e l s e 
00092  
00093  / * 
00094  
00095      A c t u a l l y   3 2 - b i t   r e a d s / w r i t e s   a r e   a l w a y s   a t o m i c   o n   x 8 6 
00096  
00097      B u t   w e   a d d   L O C K _ p r e f i x   h e r e   a n y w a y   t o   f o r c e   m e m o r y   b a r r i e r s 
00098  
00099  * / 
00100  
00101  # d e f i n e   m a k e _ a t o m i c _ l o a d _ b o d y ( S )                 \ 
00102  
00103      r e t = 0 ;                             \ 
00104  
00105      a s m   v o l a t i l e   ( L O C K _ p r e f i x   " ;   c m p x c h g   % 2 ,   % 0 "             \ 
00106  
00107                                :   " + m "   ( * a ) ,   " + a "   ( r e t ) :   " r "   ( r e t ) ) 
00108  
00109  # d e f i n e   m a k e _ a t o m i c _ s t o r e _ b o d y ( S )               \ 
00110  
00111      a s m   v o l a t i l e   ( " ;   x c h g   % 0 ,   % 1 ; "   :   " + m "   ( * a ) ,   " + r "   ( v ) ) 
00112  
00113  # e n d i f 
00114  
00115  / *   T O D O   t e s t   o n   i n t e l   w h e t h e r   t h e   b e l o w   h e l p s .   o n   A M D   i t   m a k e s   n o   d i f f e r e n c e   * / 
00116  
00117  / / # d e f i n e   L F _ B A C K O F F   ( { a s m   v o l a t i l e   ( " r e p ;   n o p " ) ;   1 ;   } ) 
00118  
00119  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义