@ -141,27 +141,32 @@ static SYSDEV_ATTR(crash_notes, 0400, show_crash_notes, NULL);
/*
* Print cpu online , possible , present , and system maps
*/
static ssize_t print_cpus_map ( char * buf , const struct cpumask * map )
struct cpu_attr {
struct sysdev_class_attribute attr ;
const struct cpumask * const * const map ;
} ;
static ssize_t show_cpus_attr ( struct sysdev_class * class ,
struct sysdev_class_attribute * attr ,
char * buf )
{
int n = cpulist_scnprintf ( buf , PAGE_SIZE - 2 , map ) ;
struct cpu_attr * ca = container_of ( attr , struct cpu_attr , attr ) ;
int n = cpulist_scnprintf ( buf , PAGE_SIZE - 2 , * ( ca - > map ) ) ;
buf [ n + + ] = ' \n ' ;
buf [ n ] = ' \0 ' ;
return n ;
}
# define print_cpus_func(type) \
static ssize_t print_cpus_ # # type ( struct sysdev_class * class , \
struct sysdev_class_attribute * attr , char * buf ) \
{ \
return print_cpus_map ( buf , cpu_ # # type # # _mask ) ; \
} \
static struct sysdev_class_attribute attr_ # # type # # _map = \
_SYSDEV_CLASS_ATTR ( type , 0444 , print_cpus_ # # type , NULL )
# define _CPU_ATTR(name, map) \
{ _SYSDEV_CLASS_ATTR ( name , 0444 , show_cpus_attr , NULL ) , map }
print_cpus_func ( online ) ;
print_cpus_func ( possible ) ;
print_cpus_func ( present ) ;
static struct cpu_attr cpu_attrs [ ] = {
_CPU_ATTR ( online , & cpu_online_mask ) ,
_CPU_ATTR ( possible , & cpu_possible_mask ) ,
_CPU_ATTR ( present , & cpu_present_mask ) ,
} ;
/*
* Print values for NR_CPUS and offlined cpus
@ -208,9 +213,9 @@ static ssize_t print_cpus_offline(struct sysdev_class *class,
static SYSDEV_CLASS_ATTR ( offline , 0444 , print_cpus_offline , NULL ) ;
static struct sysdev_class_attribute * cpu_state_attr [ ] = {
& attr_online_map ,
& attr_possible_map ,
& attr_present_map ,
& cpu_attrs [ 0 ] . attr ,
& cpu_attrs [ 1 ] . attr ,
& cpu_attrs [ 2 ] . attr ,
& attr_kernel_max ,
& attr_offline ,
} ;