CMGDK r49-rc2
|
00001 / * C o p y r i g h t ( C ) 2 0 0 8 M y S Q L A B , 2 0 0 8 - 2 0 0 9 S u n M i c r o s y s t e m s , I n c . 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 # i f n d e f _ w a i t i n g _ t h r e a d s _ h 00024 00025 # d e f i n e _ w a i t i n g _ t h r e a d s _ h 00026 00027 # i n c l u d e < m y _ g l o b a l . h > 00028 00029 # i n c l u d e < m y _ s y s . h > 00030 00031 # i n c l u d e < l f . h > 00032 00033 C _ M O D E _ S T A R T 00034 00035 t y p e d e f s t r u c t s t _ w t _ r e s o u r c e _ i d W T _ R E S O U R C E _ I D ; 00036 00037 t y p e d e f s t r u c t s t _ w t _ r e s o u r c e W T _ R E S O U R C E ; 00038 00039 t y p e d e f s t r u c t s t _ w t _ r e s o u r c e _ t y p e { 00040 00041 m y _ b o o l ( * c o m p a r e ) ( c o n s t v o i d * a , c o n s t v o i d * b ) ; 00042 00043 c o n s t v o i d * ( * m a k e _ k e y ) ( c o n s t W T _ R E S O U R C E _ I D * i d , u i n t * l e n ) ; / * n o t u s e d * / 00044 00045 } W T _ R E S O U R C E _ T Y P E ; 00046 00047 s t r u c t s t _ w t _ r e s o u r c e _ i d { 00048 00049 u l o n g l o n g v a l u e ; 00050 00051 c o n s t W T _ R E S O U R C E _ T Y P E * t y p e ; 00052 00053 } ; 00054 00055 / * t h e b e l o w d i f f e r s f r o m s i z e o f ( W T _ R E S O U R C E _ I D ) b y t h e a m o u n t o f p a d d i n g * / 00056 00057 # d e f i n e s i z e o f _ W T _ R E S O U R C E _ I D ( s i z e o f ( u l o n g l o n g ) + s i z e o f ( v o i d * ) ) 00058 00059 # d e f i n e W T _ W A I T _ S T A T S 2 4 00060 00061 # d e f i n e W T _ C Y C L E _ S T A T S 3 2 00062 00063 e x t e r n u l o n g l o n g w t _ w a i t _ t a b l e [ W T _ W A I T _ S T A T S ] ; 00064 00065 e x t e r n u i n t 3 2 w t _ w a i t _ s t a t s [ W T _ W A I T _ S T A T S + 1 ] ; 00066 00067 e x t e r n u i n t 3 2 w t _ c y c l e _ s t a t s [ 2 ] [ W T _ C Y C L E _ S T A T S + 1 ] ; 00068 00069 e x t e r n u i n t 3 2 w t _ s u c c e s s _ s t a t s ; 00070 00071 t y p e d e f s t r u c t s t _ w t _ t h d { 00072 00073 / * 00074 00075 X X X 00076 00077 t h e r e ' s n o p r o t e c t i o n ( m u t e x ) a g a i n s t c o n c u r r e n t a c c e s s o f t h e 00078 00079 d y n a r r a y b e l o w . i t i s a s s u m e d t h a t a c a l l e r w i l l h a v e i t a n y w a y 00080 00081 ( n o t t o p r o t e c t t h i s a r r a y b u t t o p r o t e c t i t s o w n - c a l l e r ' s - 00082 00083 d a t a s t r u c t u r e s ) , a n d w e ' l l g e t i t f o r f r e e . A c a l l e r n e e d s t o 00084 00085 e n s u r e t h a t a b l o c k e r w o n ' t r e l e a s e a r e s o u r c e b e f o r e a b l o c k e d 00086 00087 t h r e a d s t a r t s w a i t i n g , w h i c h i s u s u a l l y d o n e w i t h a m u t e x . 00088 00089 00090 00091 I f t h e a b o v e a s s u m p t i o n i s w r o n g , w e ' l l n e e d t o a d d a m u t e x h e r e . 00092 00093 * / 00094 00095 D Y N A M I C _ A R R A Y m y _ r e s o u r c e s ; 00096 00097 / * 00098 00099 ' w a i t i n g _ f o r ' i s m o d i f i e d u n d e r w a i t i n g _ f o r - > l o c k , a n d o n l y b y t h d i t s e l f 00100 00101 ' w a i t i n g _ f o r ' i s r e a d l o c k - f r e e ( u s i n g p i n n i n g p r o t o c o l ) , b u t a t h d o b j e c t 00102 00103 c a n r e a d i t s o w n ' w a i t i n g _ f o r ' w i t h o u t a n y l o c k s o r t r i c k s . 00104 00105 * / 00106 00107 W T _ R E S O U R C E * w a i t i n g _ f o r ; 00108 00109 L F _ P I N S * p i n s ; 00110 00111 / * p o i n t e r s t o v a l u e s * / 00112 00113 c o n s t u l o n g * t i m e o u t _ s h o r t ; 00114 00115 c o n s t u l o n g * d e a d l o c k _ s e a r c h _ d e p t h _ s h o r t ; 00116 00117 c o n s t u l o n g * t i m e o u t _ l o n g ; 00118 00119 c o n s t u l o n g * d e a d l o c k _ s e a r c h _ d e p t h _ l o n g ; 00120 00121 / * 00122 00123 w e i g h t r e l a t e s t o t h e d e s i r a b i l i t y o f a t r a n s a c t i o n b e i n g k i l l e d i f i t ' s 00124 00125 p a r t o f a d e a d l o c k . I n a d e a d l o c k s i t u a t i o n t r a n s a c t i o n s w i t h l o w e r w e i g h t s 00126 00127 a r e k i l l e d f i r s t . 00128 00129 E x a m p l e s o f u s i n g t h e w e i g h t t o i m p l e m e n t d i f f e r e n t s e l e c t i o n s t r a t e g i e s : 00130 00131 1 . L a t e s t 00132 00133 K e e p a l l w e i g h t s e q u a l . 00134 00135 2 . R a n d o m 00136 00137 A s s i g h t w e i g h t s a t r a n d o m . 00138 00139 ( v a r i a n t : m o d i f y a w e i g h t r a n d o m l y b e f o r e e v e r y l o c k r e q u e s t ) 00140 00141 3 . Y o u n g e s t 00142 00143 S e t w e i g h t t o - N O W ( ) 00144 00145 4 . M i n i m u m l o c k s 00146 00147 c o u n t l o c k s g r a n t e d i n y o u r l o c k m a n a g e r , s t o r e t h e v a l u e a s a w e i g h t 00148 00149 5 . M i n i m u m w o r k 00150 00151 d e p e n d s o n t h e d e f i n i t i o n o f " w o r k " . F o r e x a m p l e , s t o r e t h e n u m b e r 00152 00153 o f r o w s m o d i f i e s i n t h i s t r a n s a c t i o n ( o r a l e n g t h o f R E D O l o g f o r a 00154 00155 t r a n s a c t i o n ) a s a w e i g h t . 00156 00157 I t i s o n l y s t a t i s t i c a l l y r e l e v a n t a n d i s n o t p r o t e c t e d b y a n y l o c k s . 00158 00159 * / 00160 00161 u l o n g v o l a t i l e w e i g h t ; 00162 00163 / * 00164 00165 ' k i l l e d ' i s i n d i r e c t l y p r o t e c t e d b y w a i t i n g _ f o r - > l o c k b e c a u s e 00166 00167 a k i l l e d t h r e a d n e e d s t o c l e a r i t s ' w a i t i n g _ f o r ' a n d t h u s n e e d s a l o c k . 00168 00169 T h a t i s a t h r e a d n e e d s a n e x c l u s i v e l o c k t o r e a d ' k i l l e d ' r e l i a b l y . 00170 00171 B u t o t h e r t h r e a d s m a y c h a n g e ' k i l l e d ' f r o m 0 t o 1 , a s h a r e d 00172 00173 l o c k i s e n o u g h f o r t h a t . 00174 00175 * / 00176 00177 m y _ b o o l k i l l e d ; 00178 00179 # i f n d e f D B U G _ O F F 00180 00181 c o n s t c h a r * n a m e ; 00182 00183 # e n d i f 00184 00185 } W T _ T H D ; 00186 00187 # d e f i n e W T _ T I M E O U T E T I M E D O U T 00188 00189 # d e f i n e W T _ O K 0 00190 00191 # d e f i n e W T _ D E A D L O C K - 1 00192 00193 # d e f i n e W T _ D E P T H _ E X C E E D E D - 2 00194 00195 # d e f i n e W T _ F R E E _ T O _ G O - 3 00196 00197 v o i d w t _ i n i t ( v o i d ) ; 00198 00199 v o i d w t _ e n d ( v o i d ) ; 00200 00201 v o i d w t _ t h d _ l a z y _ i n i t ( W T _ T H D * , c o n s t u l o n g * , c o n s t u l o n g * , c o n s t u l o n g * , c o n s t u l o n g * ) ; 00202 00203 v o i d w t _ t h d _ d e s t r o y ( W T _ T H D * ) ; 00204 00205 i n t w t _ t h d _ w i l l _ w a i t _ f o r ( W T _ T H D * , W T _ T H D * , c o n s t W T _ R E S O U R C E _ I D * ) ; 00206 00207 i n t w t _ t h d _ c o n d _ t i m e d w a i t ( W T _ T H D * , p t h r e a d _ m u t e x _ t * ) ; 00208 00209 v o i d w t _ t h d _ r e l e a s e ( W T _ T H D * , c o n s t W T _ R E S O U R C E _ I D * ) ; 00210 00211 # d e f i n e w t _ t h d _ r e l e a s e _ a l l ( T H D ) w t _ t h d _ r e l e a s e ( ( T H D ) , 0 ) 00212 00213 m y _ b o o l w t _ r e s o u r c e _ i d _ m e m c m p ( c o n s t v o i d * , c o n s t v o i d * ) ; 00214 00215 C _ M O D E _ E N D 00216 00217 # e n d i f 00218 00219