/* * Read in the new attribute value. */ static ssize_t msm_pm_mode_attr_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) { int ret = -EINVAL; int i; KDEBUG_FUNC(); for (i = 0; i < MSM_PM_SLEEP_MODE_NR; i++) { struct kernel_param kp; if (strcmp(kobj->name, msm_pm_sleep_mode_labels[i])) continue; if (!strcmp(attr->attr.name, MSM_PM_MODE_ATTR_SUSPEND_ENABLED)) { kp.arg = &msm_pm_modes[i].suspend_enabled; ret = param_set_byte(buf, &kp); } else if (!strcmp(attr->attr.name, MSM_PM_MODE_ATTR_IDLE_ENABLED)) { kp.arg = &msm_pm_modes[i].idle_enabled; ret = param_set_byte(buf, &kp); } else if (!strcmp(attr->attr.name, MSM_PM_MODE_ATTR_LATENCY)) { kp.arg = &msm_pm_modes[i].latency; ret = param_set_ulong(buf, &kp); } else if (!strcmp(attr->attr.name, MSM_PM_MODE_ATTR_RESIDENCY)) { kp.arg = &msm_pm_modes[i].residency; ret = param_set_ulong(buf, &kp); } break; } return ret ? ret : count; }
static int cpuboost_time_set(const char *val, struct kernel_param *kp) { int ret = param_set_ulong(val, kp); mutex_lock(&lock); cpuboost_time = (cpuboost_time > OMAP_CPUBOOST_TIME_MAX) ? OMAP_CPUBOOST_TIME_MAX : cpuboost_time; cancel_delayed_work(&(cbs->work->work)); printk(KERN_INFO "cpuboost_time_set = %ld\n", cpuboost_time); if (cpuboost_time > 0) { omap_cpufreq_scale(device, OMAP_CPUBOOST_FREQ_MAX); schedule_delayed_work(&(cbs->work->work), msecs_to_jiffies(cpuboost_time)); } if ((ret) || (cpuboost_time == 0)) { omap_cpufreq_scale(device, OMAP_CPUBOOST_FREQ_MIN); printk(KERN_INFO "cpuboost_time cleared\n"); } mutex_unlock(&lock); return ret; }
/* * Read in the new attribute value. */ static ssize_t msm_pm_mode_attr_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) { int ret = -EINVAL; int i; for (i = 0; i < MSM_PM_SLEEP_MODE_NR; i++) { struct kernel_param kp; unsigned int cpu; struct msm_pm_platform_data *mode; if (msm_pm_sleep_mode_labels[i] == NULL) continue; if (strcmp(kobj->name, msm_pm_sleep_mode_labels[i])) continue; cpu = GET_CPU_OF_ATTR(attr); mode = &msm_pm_modes[MSM_PM_MODE(cpu, i)]; if (!strcmp(attr->attr.name, msm_pm_mode_attr_labels[MSM_PM_MODE_ATTR_SUSPEND])) { kp.arg = &mode->suspend_enabled; ret = param_set_byte(buf, &kp); } else if (!strcmp(attr->attr.name, msm_pm_mode_attr_labels[MSM_PM_MODE_ATTR_IDLE])) { kp.arg = &mode->idle_enabled; ret = param_set_byte(buf, &kp); } else if (!strcmp(attr->attr.name, msm_pm_mode_attr_labels[MSM_PM_MODE_ATTR_LATENCY])) { kp.arg = &mode->latency; ret = param_set_ulong(buf, &kp); } else if (!strcmp(attr->attr.name, msm_pm_mode_attr_labels[MSM_PM_MODE_ATTR_RESIDENCY])) { kp.arg = &mode->residency; ret = param_set_ulong(buf, &kp); } break; } return ret ? ret : count; }
static int param_set_multihost_interval(const char *val, zfs_kernel_param_t *kp) { int ret; ret = param_set_ulong(val, kp); if (ret < 0) return (ret); mmp_signal_all_threads(); return (ret); }
static int set_paths_per_dest(const char *val, struct kernel_param *kp) { int ret; mutex_lock(&lock); ret = param_set_ulong(val, kp); if (ret) goto out; if (paths_per_dest > SA_DB_MAX_PATHS_PER_DEST) paths_per_dest = SA_DB_MAX_PATHS_PER_DEST; refresh_db(); out: mutex_unlock(&lock); return ret; }