diff options
| author | Takashi Iwai <tiwai@suse.de> | 2009-12-15 04:29:06 -0500 | 
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2009-12-15 04:29:06 -0500 | 
| commit | 709334c87dbdb44150ce436b3d13c814db0dcae9 (patch) | |
| tree | 5861a45f70c1f283720337abd864498f5afb3dbe /kernel/pm_qos_params.c | |
| parent | 0d64b568fcd48b133721c1d322e7c51d85eb12df (diff) | |
| parent | f74890277a196949e4004fe2955e1d4fb3930f98 (diff) | |
Merge branch 'fixes' of git://git.alsa-project.org/alsa-kernel into for-linus
Diffstat (limited to 'kernel/pm_qos_params.c')
| -rw-r--r-- | kernel/pm_qos_params.c | 20 | 
1 files changed, 8 insertions, 12 deletions
| diff --git a/kernel/pm_qos_params.c b/kernel/pm_qos_params.c index dfdec524d1b7..3db49b9ca374 100644 --- a/kernel/pm_qos_params.c +++ b/kernel/pm_qos_params.c | |||
| @@ -29,7 +29,6 @@ | |||
| 29 | 29 | ||
| 30 | #include <linux/pm_qos_params.h> | 30 | #include <linux/pm_qos_params.h> | 
| 31 | #include <linux/sched.h> | 31 | #include <linux/sched.h> | 
| 32 | #include <linux/smp_lock.h> | ||
| 33 | #include <linux/spinlock.h> | 32 | #include <linux/spinlock.h> | 
| 34 | #include <linux/slab.h> | 33 | #include <linux/slab.h> | 
| 35 | #include <linux/time.h> | 34 | #include <linux/time.h> | 
| @@ -344,37 +343,33 @@ int pm_qos_remove_notifier(int pm_qos_class, struct notifier_block *notifier) | |||
| 344 | } | 343 | } | 
| 345 | EXPORT_SYMBOL_GPL(pm_qos_remove_notifier); | 344 | EXPORT_SYMBOL_GPL(pm_qos_remove_notifier); | 
| 346 | 345 | ||
| 347 | #define PID_NAME_LEN sizeof("process_1234567890") | 346 | #define PID_NAME_LEN 32 | 
| 348 | static char name[PID_NAME_LEN]; | ||
| 349 | 347 | ||
| 350 | static int pm_qos_power_open(struct inode *inode, struct file *filp) | 348 | static int pm_qos_power_open(struct inode *inode, struct file *filp) | 
| 351 | { | 349 | { | 
| 352 | int ret; | 350 | int ret; | 
| 353 | long pm_qos_class; | 351 | long pm_qos_class; | 
| 352 | char name[PID_NAME_LEN]; | ||
| 354 | 353 | ||
| 355 | lock_kernel(); | ||
| 356 | pm_qos_class = find_pm_qos_object_by_minor(iminor(inode)); | 354 | pm_qos_class = find_pm_qos_object_by_minor(iminor(inode)); | 
| 357 | if (pm_qos_class >= 0) { | 355 | if (pm_qos_class >= 0) { | 
| 358 | filp->private_data = (void *)pm_qos_class; | 356 | filp->private_data = (void *)pm_qos_class; | 
| 359 | sprintf(name, "process_%d", current->pid); | 357 | snprintf(name, PID_NAME_LEN, "process_%d", current->pid); | 
| 360 | ret = pm_qos_add_requirement(pm_qos_class, name, | 358 | ret = pm_qos_add_requirement(pm_qos_class, name, | 
| 361 | PM_QOS_DEFAULT_VALUE); | 359 | PM_QOS_DEFAULT_VALUE); | 
| 362 | if (ret >= 0) { | 360 | if (ret >= 0) | 
| 363 | unlock_kernel(); | ||
| 364 | return 0; | 361 | return 0; | 
| 365 | } | ||
| 366 | } | 362 | } | 
| 367 | unlock_kernel(); | ||
| 368 | |||
| 369 | return -EPERM; | 363 | return -EPERM; | 
| 370 | } | 364 | } | 
| 371 | 365 | ||
| 372 | static int pm_qos_power_release(struct inode *inode, struct file *filp) | 366 | static int pm_qos_power_release(struct inode *inode, struct file *filp) | 
| 373 | { | 367 | { | 
| 374 | int pm_qos_class; | 368 | int pm_qos_class; | 
| 369 | char name[PID_NAME_LEN]; | ||
| 375 | 370 | ||
| 376 | pm_qos_class = (long)filp->private_data; | 371 | pm_qos_class = (long)filp->private_data; | 
| 377 | sprintf(name, "process_%d", current->pid); | 372 | snprintf(name, PID_NAME_LEN, "process_%d", current->pid); | 
| 378 | pm_qos_remove_requirement(pm_qos_class, name); | 373 | pm_qos_remove_requirement(pm_qos_class, name); | 
| 379 | 374 | ||
| 380 | return 0; | 375 | return 0; | 
| @@ -385,13 +380,14 @@ static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf, | |||
| 385 | { | 380 | { | 
| 386 | s32 value; | 381 | s32 value; | 
| 387 | int pm_qos_class; | 382 | int pm_qos_class; | 
| 383 | char name[PID_NAME_LEN]; | ||
| 388 | 384 | ||
| 389 | pm_qos_class = (long)filp->private_data; | 385 | pm_qos_class = (long)filp->private_data; | 
| 390 | if (count != sizeof(s32)) | 386 | if (count != sizeof(s32)) | 
| 391 | return -EINVAL; | 387 | return -EINVAL; | 
| 392 | if (copy_from_user(&value, buf, sizeof(s32))) | 388 | if (copy_from_user(&value, buf, sizeof(s32))) | 
| 393 | return -EFAULT; | 389 | return -EFAULT; | 
| 394 | sprintf(name, "process_%d", current->pid); | 390 | snprintf(name, PID_NAME_LEN, "process_%d", current->pid); | 
| 395 | pm_qos_update_requirement(pm_qos_class, name, value); | 391 | pm_qos_update_requirement(pm_qos_class, name, value); | 
| 396 | 392 | ||
| 397 | return sizeof(s32); | 393 | return sizeof(s32); | 
