CMGDK r49-rc2
|
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 t y p e d e f s t r u c t { p t h r e a d _ m u t e x _ t r w ; } m y _ a t o m i c _ r w l o c k _ t ; 00024 00025 # d e f i n e M Y _ A T O M I C _ M O D E _ R W L O C K S 1 00026 00027 # i f d e f M Y _ A T O M I C _ M O D E _ D U M M Y 00028 00029 / * 00030 00031 t h e f o l l o w i n g c a n n e v e r b e e n a b l e d b y . / c o n f i g u r e , o n e n e e d t o p u t # d e f i n e i n 00032 00033 a s o u r c e t o t r i g g e r t h e f o l l o w i n g w a r n i n g . T h e r e s u l t i n g c o d e w i l l b e b r o k e n , 00034 00035 i t o n l y m a k e s s e n s e t o d o i t t o s e e n o w t e s t _ a t o m i c d e t e c t s b r o k e n 00036 00037 i m p l e m e n t a t i o n s ( a n o t h e r w a y i s t o r u n a U P b u i l d o n a n S M P b o x ) . 00038 00039 * / 00040 00041 # w a r n i n g M Y _ A T O M I C _ M O D E _ D U M M Y a n d M Y _ A T O M I C _ M O D E _ R W L O C K S a r e i n c o m p a t i b l e 00042 00043 # d e f i n e m y _ a t o m i c _ r w l o c k _ d e s t r o y ( n a m e ) 00044 00045 # d e f i n e m y _ a t o m i c _ r w l o c k _ i n i t ( n a m e ) 00046 00047 # d e f i n e m y _ a t o m i c _ r w l o c k _ r d l o c k ( n a m e ) 00048 00049 # d e f i n e m y _ a t o m i c _ r w l o c k _ w r l o c k ( n a m e ) 00050 00051 # d e f i n e m y _ a t o m i c _ r w l o c k _ r d u n l o c k ( n a m e ) 00052 00053 # d e f i n e m y _ a t o m i c _ r w l o c k _ w r u n l o c k ( n a m e ) 00054 00055 # d e f i n e M Y _ A T O M I C _ M O D E " d u m m y ( n o n - a t o m i c ) " 00056 00057 # e l s e 00058 00059 / * 00060 00061 w e ' r e u s i n g r e a d - w r i t e l o c k m a c r o s b u t m a p t h e m t o m u t e x l o c k s , a n d t h e y ' r e 00062 00063 f a s t e r . S t i l l , h a v i n g s e m a n t i c a l l y r i c h A P I w e c a n c h a n g e t h e 00064 00065 u n d e r l y i n g i m p l e m e n t a t i o n , i f n e c e s s a r y . 00066 00067 * / 00068 00069 # d e f i n e m y _ a t o m i c _ r w l o c k _ d e s t r o y ( n a m e ) p t h r e a d _ m u t e x _ d e s t r o y ( & ( n a m e ) - > r w ) 00070 00071 # d e f i n e m y _ a t o m i c _ r w l o c k _ i n i t ( n a m e ) p t h r e a d _ m u t e x _ i n i t ( & ( n a m e ) - > r w , 0 ) 00072 00073 # d e f i n e m y _ a t o m i c _ r w l o c k _ r d l o c k ( n a m e ) p t h r e a d _ m u t e x _ l o c k ( & ( n a m e ) - > r w ) 00074 00075 # d e f i n e m y _ a t o m i c _ r w l o c k _ w r l o c k ( n a m e ) p t h r e a d _ m u t e x _ l o c k ( & ( n a m e ) - > r w ) 00076 00077 # d e f i n e m y _ a t o m i c _ r w l o c k _ r d u n l o c k ( n a m e ) p t h r e a d _ m u t e x _ u n l o c k ( & ( n a m e ) - > r w ) 00078 00079 # d e f i n e m y _ a t o m i c _ r w l o c k _ w r u n l o c k ( n a m e ) p t h r e a d _ m u t e x _ u n l o c k ( & ( n a m e ) - > r w ) 00080 00081 # d e f i n e M Y _ A T O M I C _ M O D E " m u t e x " 00082 00083 # i f n d e f M Y _ A T O M I C _ M O D E _ R W L O C K S 00084 00085 # d e f i n e M Y _ A T O M I C _ M O D E _ R W L O C K S 1 00086 00087 # e n d i f 00088 00089 # e n d i f 00090 00091 # d e f i n e m a k e _ a t o m i c _ a d d _ b o d y ( S ) i n t # # S s a v ; s a v = * a ; * a + = v ; v = s a v ; 00092 00093 # d e f i n e m a k e _ a t o m i c _ f a s _ b o d y ( S ) i n t # # S s a v ; s a v = * a ; * a = v ; v = s a v ; 00094 00095 # d e f i n e m a k e _ a t o m i c _ c a s _ b o d y ( S ) i f ( ( r e t = ( * a = = * c m p ) ) ) * a = s e t ; e l s e * c m p = * a ; 00096 00097 # 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 ; 00098 00099 # 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 ; 00100 00101