 _alignof_  ,   gcc,
   ,     -
  (      ,
         ). 
        sizeof ().  ,  .
   86    4.

_alignof_ (unsigned long)

  1- ( , lvalue)  
 ,      1-.
, 1-       -
,            ,
        . 
      19, "".

   free_percpu ()  , 
     .

 alloc_percpu ()  _alloc_percpu ()  , 
       ,  
   .       
  .

get_cpu ptr(ptr);   /*    void  ,

  ptr,    */
put_cpu_ptr(ptr);   /* ,      
*/

 get_cpu_ptr ()     ,  
 .         ,
     put_cpu_ptr ().

    . ,    -
 ,         (-
,    ),     
,       (,   , -
    ).       -
  .

void *percpu ptr;

unsigned long *foo;

percpu ptr = alloc percpu(unsigned long);

if (!ptr)

/*    .. */

foo = get_cpu_ptr(percpu_ptr);

/*    foo .. */
put cpu ptr(percpu ptr);

    per_cpu_ptr ()    , 
  .

per_cpu_ptr(ptr, cpu);

262  11