int acpi_processor_register_performance(struct acpi_processor_performance *performance, unsigned int cpu) { struct acpi_processor *pr; ACPI_FUNCTION_TRACE("acpi_processor_register_performance"); if (!(acpi_processor_ppc_status & PPC_REGISTERED)) return_VALUE(-EINVAL); down(&performance_sem); pr = processors[cpu]; if (!pr) { up(&performance_sem); return_VALUE(-ENODEV); } if (pr->performance) { up(&performance_sem); return_VALUE(-EBUSY); } WARN_ON(!performance); pr->performance = performance; if (acpi_processor_get_performance_info(pr)) { pr->performance = NULL; up(&performance_sem); return_VALUE(-EIO); } acpi_cpufreq_add_file(pr); up(&performance_sem); return_VALUE(0); }
int acpi_processor_register_performance(struct acpi_processor_performance *performance, unsigned int cpu) { struct acpi_processor *pr; if (!(acpi_processor_ppc_status & PPC_REGISTERED)) return -EINVAL; mutex_lock(&performance_mutex); pr = processors[cpu]; if (!pr) { mutex_unlock(&performance_mutex); return -ENODEV; } if (pr->performance) { mutex_unlock(&performance_mutex); return -EBUSY; } WARN_ON(!performance); pr->performance = performance; if (acpi_processor_get_performance_info(pr)) { pr->performance = NULL; mutex_unlock(&performance_mutex); return -EIO; } acpi_cpufreq_add_file(pr); mutex_unlock(&performance_mutex); return 0; }
/**ltl * 功能: 对cpu的P-state初始化 * 参数: performane ->cpu性能对象 * cpu ->cpu id * 返回值: * 说明: 1.读取_PCT和_PSS两个对象信息 * 2.创建文件/proc/acpi/processor/CPU1/proformance */ int acpi_processor_register_performance(struct acpi_processor_performance *performance, unsigned int cpu) { struct acpi_processor *pr; if (!(acpi_processor_ppc_status & PPC_REGISTERED)) return -EINVAL; mutex_lock(&performance_mutex); /* acpi_process对象 */ pr = processors[cpu]; if (!pr) { mutex_unlock(&performance_mutex); return -ENODEV; } if (pr->performance) { mutex_unlock(&performance_mutex); return -EBUSY; } WARN_ON(!performance); pr->performance = performance; /* 设置cpu性能 */ /* 读取_PCT、_PSS两个对象信息 */ if (acpi_processor_get_performance_info(pr)) { pr->performance = NULL; mutex_unlock(&performance_mutex); return -EIO; } /* 创建文件/proc/acpi/processor/CPU1/proformance */ acpi_cpufreq_add_file(pr); mutex_unlock(&performance_mutex); return 0; }