tools/power/x86/intel-speed-select/isst-core.c
Source file repositories/reference/linux-study-clean/tools/power/x86/intel-speed-select/isst-core.c
File Facts
- System
- Linux kernel
- Corpus path
tools/power/x86/intel-speed-select/isst-core.c- Extension
.c- Size
- 11836 bytes
- Lines
- 506
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: implementation source
- Status
- source implementation candidate
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
isst.h
Detected Declarations
function isst_set_platform_opsfunction isst_update_platform_paramfunction isst_get_disp_freq_multiplierfunction isst_get_trl_max_levelsfunction isst_is_punit_validfunction isst_send_msr_commandfunction isst_read_pm_configfunction isst_get_ctdp_levelsfunction isst_get_ctdp_controlfunction isst_get_tdp_infofunction isst_get_pwr_infofunction isst_get_coremask_infofunction isst_get_get_trl_from_msrfunction isst_get_get_trlfunction isst_get_get_trlsfunction isst_get_trl_bucket_infofunction isst_set_tdp_levelfunction isst_get_pbf_infofunction isst_set_pbf_fact_statusfunction isst_get_fact_infofunction isst_get_trlfunction isst_set_trlfunction isst_set_trl_from_current_tdpfunction isst_get_config_tdp_lock_statusfunction isst_get_process_ctdp_completefunction isst_adjust_uncore_freqfunction isst_get_process_ctdpfunction isst_clos_get_clos_informationfunction isst_pm_qos_configfunction isst_pm_get_closfunction isst_set_closfunction isst_clos_get_assoc_statusfunction isst_clos_associate
Annotated Snippet
if (!isst_ops || !isst_ops->_name) { \
fprintf(stderr, "Invalid ops\n"); \
exit(0); \
} \
} while (0)
int isst_set_platform_ops(int api_version)
{
switch (api_version) {
case 1:
isst_ops = mbox_get_platform_ops();
break;
case 2:
case 3:
isst_ops = tpmi_get_platform_ops();
break;
default:
isst_ops = NULL;
break;
}
if (!isst_ops)
return -1;
return 0;
}
void isst_update_platform_param(enum isst_platform_param param, int value)
{
CHECK_CB(update_platform_param);
isst_ops->update_platform_param(param, value);
}
int isst_get_disp_freq_multiplier(void)
{
CHECK_CB(get_disp_freq_multiplier);
return isst_ops->get_disp_freq_multiplier();
}
int isst_get_trl_max_levels(void)
{
CHECK_CB(get_trl_max_levels);
return isst_ops->get_trl_max_levels();
}
char *isst_get_trl_level_name(int level)
{
CHECK_CB(get_trl_level_name);
return isst_ops->get_trl_level_name(level);
}
int isst_is_punit_valid(struct isst_id *id)
{
CHECK_CB(is_punit_valid);
return isst_ops->is_punit_valid(id);
}
int isst_send_msr_command(unsigned int cpu, unsigned int msr, int write,
unsigned long long *req_resp)
{
struct isst_if_msr_cmds msr_cmds;
const char *pathname = "/dev/isst_interface";
FILE *outf = get_output_file();
int fd;
fd = open(pathname, O_RDWR);
if (fd < 0)
err(-1, "%s open failed", pathname);
msr_cmds.cmd_count = 1;
msr_cmds.msr_cmd[0].logical_cpu = cpu;
msr_cmds.msr_cmd[0].msr = msr;
msr_cmds.msr_cmd[0].read_write = write;
if (write)
msr_cmds.msr_cmd[0].data = *req_resp;
if (ioctl(fd, ISST_IF_MSR_COMMAND, &msr_cmds) == -1) {
perror("ISST_IF_MSR_COMMAND");
fprintf(outf, "Error: msr_cmd cpu:%d msr:%x read_write:%d\n",
cpu, msr, write);
} else {
if (!write)
*req_resp = msr_cmds.msr_cmd[0].data;
debug_printf(
"msr_cmd response: cpu:%d msr:%x rd_write:%x resp:%llx %llx\n",
cpu, msr, write, *req_resp, msr_cmds.msr_cmd[0].data);
}
close(fd);
Annotation
- Immediate include surface: `isst.h`.
- Detected declarations: `function isst_set_platform_ops`, `function isst_update_platform_param`, `function isst_get_disp_freq_multiplier`, `function isst_get_trl_max_levels`, `function isst_is_punit_valid`, `function isst_send_msr_command`, `function isst_read_pm_config`, `function isst_get_ctdp_levels`, `function isst_get_ctdp_control`, `function isst_get_tdp_info`.
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.