CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/keycache.h
浏览该文件的文档。
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  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义