[25406] 2016-08-23_Linux内核里的数据结构——位数组

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-19
2016-08-23_Linux内核里的数据结构——位数组 L i n u x     c p o s t u r e   L i n u x   2 0 1 6 - 0 8 - 2 3 L i n u x   [ 1 ] [ 2 ] L i n u x   [ 3 ] b i t m a p   A P I [ 4 ]   L i n u x   广 使 使   l i b / b i t m a p . c [ 5 ] i n c l u d e / l i n u x / b i t m a p . h [ 6 ]   x 8 6 _ 6 4 [ 7 ]   a r c h / x 8 6 / i n c l u d e / a s m / b i t o p s . h [ 8 ]   L i n u x   广 使 线 / 线 便 [ 9 ]   C P U   c p u m a s k s [ 1 0 ]     b i t   a r r a y   L i n u x   [ 1 1 ] b i t   a r r a y   L i n u x     A P I A P I
    L i n u x       使       i n c l u d e / l i n u x / t y p e s . h [ 1 2 ]       使   -   ;   -   ; 使                           A P I u n s i g n e d   l o n g 1 .   u n s i g n e d   l o n g   m y _ b i t m a p [ 8 ] D E C L A R E _ B I T M A P 1 .   # d e f i n e   D E C L A R E _ B I T M A P ( n a m e , b i t s )   2 .           u n s i g n e d   l o n g   n a m e [ B I T S _ T O _ L O N G S ( b i t s ) ] D E C L A R E _ B I T M A P n a m e b i t s B I T S _ T O _ L O N G S ( b i t s ) u n s i g n e d   l o n g B I T S _ T O _ L O N G S l o n g b i t s 8 1 .   # d e f i n e   B I T S _ P E R _ B Y T E                       8 2 .   # d e f i n e   D I V _ R O U N D _ U P ( n , d )   ( ( ( n )   +   ( d )   -   1 )   /   ( d ) ) 3 .   # d e f i n e   B I T S _ T O _ L O N G S ( n r )               D I V _ R O U N D _ U P ( n r ,   B I T S _ P E R _ B Y T E   *   s i z e o f ( l o n g ) )
  便 使   A P I [ 1 3 ] 广 使   A P I     a r c h / x 8 6 / i n c l u d e / a s m / b i t o p s . h [ 1 4 ] ; . a r c h / x 8 6 / i n c l u d e / a s m / b i t o p s . h [ 1 5 ]   [ 1 6 ] a t o m i c   x c h g [ 1 7 ] c m p x c h g [ 1 8 ]     l o c k [ 1 9 ]           n o n - a t o m i c         线   a r c h / x 8 6 / i n c l u d e / a s m / b i t o p s . h [ 2 0 ]     : D E C L A R E _ B I T M A P ( m y _ b i t m a p ,   6 4 ) 1 .   > > >   ( ( ( 6 4 )   +   ( 6 4 )   -   1 )   /   ( 6 4 ) ) 2 .   1 1 .   u n s i g n e d   l o n g   m y _ b i t m a p [ 1 ] ; s e t _ b i t c l e a r _ b i t x 8 6 s e t _ b i t c l e a r _ b i t s e t _ b i t c l e a r _ b i t _ _ s e t _ b i t
使   -   L C T T     0     -     使         [ 2 1 ] 使   b t s [ 2 2 ]       C F [ 2 3 ]   L C T T         1                     1 .   s t a t i c   i n l i n e   v o i d   _ _ s e t _ b i t ( l o n g   n r ,   v o l a t i l e   u n s i g n e d   l o n g   * a d d r ) 2 .   { 3 .           a s m   v o l a t i l e ( " b t s   % 1 , % 0 "   :   A D D R   :   " I r "   ( n r )   :   " m e m o r y " ) ; 4 .   } n r a d d r a d d r v o l a t i l e _ _ s e t _ b i t n r n r n r a d d r A D D R A D D R + m 1 .   # d e f i n e   A D D R                                 B I T O P _ A D D R ( a d d r ) 2 .   # d e f i n e   B I T O P _ A D D R ( x )   " + m "   ( * ( v o l a t i l e   l o n g   * )   ( x ) ) + m
        -         -     -       a t o m i c n o n - a t o m i c L C T T   B I T O P _ A D D R   O R B   使     使   _ _ s e t _ b i t + m + I r m e m o r y 1 .   s t a t i c   _ _ a l w a y s _ i n l i n e   v o i d 2 .   s e t _ b i t ( l o n g   n r ,   v o l a t i l e   u n s i g n e d   l o n g   * a d d r ) 3 .   { 4 .           i f   ( I S _ I M M E D I A T E ( n r ) )   { 5 .                   a s m   v o l a t i l e ( L O C K _ P R E F I X   " o r b   % 1 , % 0 " 6 .                           :   C O N S T _ M A S K _ A D D R ( n r ,   a d d r ) 7 .                           :   " i q "   ( ( u 8 ) C O N S T _ M A S K ( n r ) ) 8 .                           :   " m e m o r y " ) ; 9 .           }   e l s e   { 1 0 .                   a s m   v o l a t i l e ( L O C K _ P R E F I X   " b t s   % 1 , % 0 " 1 1 .                           :   B I T O P _ A D D R ( a d d r )   :   " I r "   ( n r )   :   " m e m o r y " ) ; 1 2 .           } 1 3 .   } # d e f i n e   B I T O P _ A D D R ( x )   " = m "   ( * ( v o l a t i l e   l o n g   * )   ( x ) ) _ _ s e t _ b i t _ _ a l w a y s _ i n l i n e
      i n c l u d e / l i n u x / c o m p i l e r - g c c . h [ 2 4 ]         L i n u x             [ 2 5 ]   g c c [ 2 6 ]         便 使       [ 2 7 ]       0   便               _ _ a l w a y s _ i n l i n e a l w a y s _ i n l i n e 1 .   # d e f i n e   _ _ a l w a y s _ i n l i n e   i n l i n e   _ _ a t t r i b u t e _ _ ( ( a l w a y s _ i n l i n e ) ) s e t _ b i t s e t _ b i t I S _ I M M E D I A T E 1 .   # d e f i n e   I S _ I M M E D I A T E ( n r )                 ( _ _ b u i l t i n _ c o n s t a n t _ p ( n r ) ) _ _ b u i l t i n _ c o n s t a n t _ p 1 0 b t s 1 _ _ s e t _ b i t C O N S T _ M A S K _ A D D R 1 .   # d e f i n e   C O N S T _ M A S K _ A D D R ( n r ,   a d d r )       B I T O P _ A D D R ( ( v o i d   * ) ( a d d r )   +   ( ( n r ) > > 3 ) ) 0 x 1 0 0 0 0 x 9 0 x 9
      :                     1   L C T T     9     0   0 0 1 0   1     1   使     +   a d d r   +   1 1 .   > > >   h e x ( 0 x 1 0 0 0   +   ( 0 x 9   > >   3 ) ) 2 .   ' 0 x 1 0 0 1 ' C O N S T _ M A S K 1 0 1 .   # d e f i n e   C O N S T _ M A S K ( n r )                     ( 1   < <   ( ( n r )   &   7 ) ) 1 .   > > >   b i n ( 1   < <   ( 0 x 9   &   7 ) ) 2 .   ' 0 b 1 0 ' 0 x 4 0 9 7 9 1 .   > > >   b i n ( 0 x 4 0 9 7 ) 2 .   ' 0 b 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 ' 3 .   > > >   b i n ( ( 0 x 4 0 9 7   > >   0 x 9 )   |   ( 1   < <   ( 0 x 9   &   7 ) ) ) 4 .   ' 0 b 1 0 0 0 1 0 '   9  
    l o c k [ 2 8 ]           L i n u x         [ 2 9 ]   使             使 使   b t r [ 3 0 ]       L C T T     b t r   b t s       L O C K _ P R E F I X s e t _ b i t _ _ s e t _ b i t c l e a r _ b i t _ _ c l e a r _ b i t s e t _ b i t _ _ s e t _ b i t _ _ c l e a r _ b i t 1 .   s t a t i c   i n l i n e   v o i d   _ _ c l e a r _ b i t ( l o n g   n r ,   v o l a t i l e   u n s i g n e d   l o n g   * a d d r ) 2 .   { 3 .           a s m   v o l a t i l e ( " b t r   % 1 , % 0 "   :   A D D R   :   " I r "   ( n r ) ) ; 4 .   } _ _ c l e a r _ b i t b t s b t r b t s C F _ _ c l e a r _ b i t c l e a r _ b i t 1 .   s t a t i c   _ _ a l w a y s _ i n l i n e   v o i d 2 .   c l e a r _ b i t ( l o n g   n r ,   v o l a t i l e   u n s i g n e d   l o n g   * a d d r ) 3 .   {
        使         使         使         使       L i n u x   广 使 L i n u x   广 使       a r c h / x 8 6 / i n c l u d e / a s m / b i t o p s . h [ 3 1 ]         3 .   { 4 .           i f   ( I S _ I M M E D I A T E ( n r ) )   { 5 .                   a s m   v o l a t i l e ( L O C K _ P R E F I X   " a n d b   % 1 , % 0 " 6 .                           :   C O N S T _ M A S K _ A D D R ( n r ,   a d d r ) 7 .                           :   " i q "   ( ( u 8 ) ~ C O N S T _ M A S K ( n r ) ) ) ; 8 .           }   e l s e   { 9 .                   a s m   v o l a t i l e ( L O C K _ P R E F I X   " b t r   % 1 , % 0 " 1 0 .                           :   B I T O P _ A D D R ( a d d r ) 1 1 .                           :   " I r "   ( n r ) ) ; 1 2 .           } 1 3 .   } s e t _ b i t c l e a r _ b i t b t r s e t _ b i t b t s c l e a r _ b i t s e t _ b i t t e s t _ b i t c o n s t a n t _ t e s t _ b i t v a r i a b l e _ t e s t _ b i t
              4 .   9 .     使     使   b t [ 3 2 ]   s b b [ 3 3 ]       1 .   # d e f i n e   t e s t _ b i t ( n r ,   a d d r )                     2 .           ( _ _ b u i l t i n _ c o n s t a n t _ p ( ( n r ) )                                   3 .             ?   c o n s t a n t _ t e s t _ b i t ( ( n r ) ,   ( a d d r ) )                     4 .             :   v a r i a b l e _ t e s t _ b i t ( ( n r ) ,   ( a d d r ) ) ) n r t e s t _ b i t c o n s t a n t _ t e s t _ b i t v a r i a b l e _ t e s t _ b i t v a r i a b l e _ t e s t _ b i t 1 .   s t a t i c   i n l i n e   i n t   v a r i a b l e _ t e s t _ b i t ( l o n g   n r ,   v o l a t i l e   c o n s t   u n s i g n e d   l o n g   * a d d r ) 2 .   { 3 .           i n t   o l d b i t ; 5 .           a s m   v o l a t i l e ( " b t   % 2 , % 1 n t " 6 .                             " s b b   % 0 , % 0 " 7 .                             :   " = r "   ( o l d b i t ) 8 .                             :   " m "   ( * ( u n s i g n e d   l o n g   * ) a d d r ) ,   " I r "   ( n r ) ) ; 1 0 .           r e t u r n   o l d b i t ; 1 1 .   } v a r i a b l e _ t e s t _ b i t s e t _ b i t b t b i t   t e s t
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则