register_cpu_notifier(&cpufreq_cpu_notifier); 
int cpufreq_register_driver(struct cpufreq_driver *driver_data){	unsigned long flags;	int ret;	if (!driver_data || !driver_data->verify || !driver_data->init ||	    ((!driver_data->setpolicy) && (!driver_data->target)))		return -EINVAL;	dprintk("trying to register driver %s\n", driver_data->name);	if (driver_data->setpolicy)		driver_data->flags |= CPUFREQ_CONST_LOOPS;	spin_lock_irqsave(&cpufreq_driver_lock, flags);	if (cpufreq_driver) {		spin_unlock_irqrestore(&cpufreq_driver_lock, flags);		return -EBUSY;	}	cpufreq_driver = driver_data;	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);	ret = sysdev_driver_register(&cpu_sysdev_class,&cpufreq_sysdev_driver);	if ((!ret) && !(cpufreq_driver->flags & CPUFREQ_STICKY)) {		int i;		ret = -ENODEV;		/* check for at least one working CPU */		for (i=0; i<NR_CPUS; i++)			if (cpufreq_cpu_data[i])				ret = 0;		/* if all ->init() calls failed, unregister */		if (ret) {			dprintk("no CPU initialized for driver %s\n", driver_data->name);			sysdev_driver_unregister(&cpu_sysdev_class, &cpufreq_sysdev_driver);			spin_lock_irqsave(&cpufreq_driver_lock, flags);			cpufreq_driver = NULL;			spin_unlock_irqrestore(&cpufreq_driver_lock, flags);		}	}	if (!ret) {		dprintk("driver %s up and running\n", driver_data->name);		cpufreq_debug_enable_ratelimit();	}	return (ret);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c32b6b8e524d2c337767d312814484d9289550cf/cpufreq.c/clean/drivers/cpufreq/cpufreq.c