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