本文整理汇总了C++中read_msr函数的典型用法代码示例。如果您正苦于以下问题:C++ read_msr函数的具体用法?C++ read_msr怎么用?C++ read_msr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了read_msr函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: core_data_elapsed
// Extract each core RRPL Data elapsed data
int32_t core_data_elapsed ( int32_t core , struct CoreData * core_data ) {
long long result;
if ( core_data[core].core_id != core ) { exit ( 0 ); }
result=read_msr(core_data[core].msr_fd,MSR_PKG_ENERGY_STATUS);
core_data[core].package_after=(double)result*core_data[core].energy_units;
result=read_msr(core_data[core].msr_fd,MSR_PP0_ENERGY_STATUS);
core_data[core].pp0_after=(double)result*core_data[core].energy_units;
/* not available on SandyBridge-EP */
if ((cpu_model==CPU_SANDYBRIDGE) || (cpu_model==CPU_IVYBRIDGE) ||
(cpu_model==CPU_HASWELL) || (cpu_model==CPU_HASWELL_EP) ) {
result=read_msr(core_data[core].msr_fd,MSR_PP1_ENERGY_STATUS);
core_data[core].pp1_after=(double)result*core_data[core].energy_units;
}
if ((cpu_model==CPU_SANDYBRIDGE_EP) || (cpu_model==CPU_IVYBRIDGE_EP) ||
(cpu_model==CPU_HASWELL) || (cpu_model==CPU_HASWELL_EP) ) {
result=read_msr(core_data[core].msr_fd,MSR_DRAM_ENERGY_STATUS);
core_data[core].dram_after=(double)result*core_data[core].energy_units;
}
}
开发者ID:frankyn,项目名称:RAPLMeasurementTool,代码行数:26,代码来源:rapl_read_api.c
示例2: enable_prefetch_core2
/* Enable prefetch on core2 */
static int enable_prefetch_core2(int core) {
int fd;
uint64_t result;
int begin,end,c;
printf("Enable all prefetch\n");
if (core==-1) {
begin=0;
end=1024;
}
else {
begin=core;
end=core;
}
for(c=begin;c<=end;c++) {
fd=open_msr(c);
if (fd<0) break;
/* Read original results */
result=read_msr(fd,CORE2_PREFETCH_MSR);
printf("\tCore %d old : L2HW=%c L2ADJ=%c DCU=%c DCUIP=%c\n",
c,
result&(1ULL<<9)?'N':'Y',
result&(1ULL<<19)?'N':'Y',
result&(1ULL<<37)?'N':'Y',
result&(1ULL<<39)?'N':'Y'
);
/* Enable all */
result &= ~((1ULL<<9)|(1ULL<<19)|(1ULL<<37)|(1ULL<<39));
result=write_msr(fd,CORE2_PREFETCH_MSR,result);
/* Verify change */
result=read_msr(fd,CORE2_PREFETCH_MSR);
printf("\tCore %d new : L2HW=%c L2ADJ=%c DCU=%c DCUIP=%c\n",
c,
result&(1ULL<<9)?'N':'Y',
result&(1ULL<<19)?'N':'Y',
result&(1ULL<<37)?'N':'Y',
result&(1ULL<<39)?'N':'Y'
);
close(fd);
}
return 0;
}
开发者ID:deater,项目名称:uarch-configure,代码行数:55,代码来源:intel-prefetch-disable.c
示例3: enable_prefetch_nhm
/* Enable prefetch on nehalem and newer */
static int enable_prefetch_nhm(int core) {
int fd;
int result;
int begin,end,c;
printf("Enable all prefetch\n");
if (core==-1) {
begin=0;
end=1024;
}
else {
begin=core;
end=core;
}
for(c=begin;c<=end;c++) {
fd=open_msr(c);
if (fd<0) break;
/* Read original results */
result=read_msr(fd,NHM_PREFETCH_MSR);
printf("\tCore %d old : L2HW=%c L2ADJ=%c DCU=%c DCUIP=%c\n",
c,
result&0x1?'N':'Y',
result&0x2?'N':'Y',
result&0x4?'N':'Y',
result&0x8?'N':'Y'
);
/* Enable all */
result=write_msr(fd,NHM_PREFETCH_MSR,0x0);
/* Verify change */
result=read_msr(fd,NHM_PREFETCH_MSR);
printf("\tCore %d new : L2HW=%c L2ADJ=%c DCU=%c DCUIP=%c\n",
c,
result&0x1?'N':'Y',
result&0x2?'N':'Y',
result&0x4?'N':'Y',
result&0x8?'N':'Y'
);
close(fd);
}
return 0;
}
开发者ID:deater,项目名称:uarch-configure,代码行数:54,代码来源:intel-prefetch-disable.c
示例4: get_raw_power_info
void
get_raw_power_info( int package, int domain, uint64_t *pval ){
switch(domain){
case PKG_DOMAIN: read_msr( package, MSR_PKG_POWER_INFO, pval );
break;
#ifdef ARCH_062D
case DRAM_DOMAIN: read_msr( package, MSR_DRAM_POWER_INFO, pval );
break;
#endif
default: assert(0); // Not avail for PP0/PP1 domains.
break;
}
}
开发者ID:ngholka,项目名称:patki-power,代码行数:13,代码来源:msr_rapl.c
示例5: get_raw_policy
void
get_raw_policy( int package, int domain, uint64_t *ppolicy ){
switch( domain ){
case PP0_DOMAIN: read_msr( package, MSR_PP0_POLICY, ppolicy );
break;
#ifdef ARCH_062A
case PP1_DOMAIN: read_msr( package, MSR_PP1_POLICY, ppolicy );
break;
#endif
default: assert(0);
break;
}
}
开发者ID:ngholka,项目名称:patki-power,代码行数:13,代码来源:msr_rapl.c
示例6: rapl_init
void rapl_init(struct PowerState * pstate){
uint64_t result = read_msr(MSR_RAPL_POWER_UNIT, pstate->msr_fh);
pstate->power_units = pow(0.5,(double)(result&0xf));
pstate->energy_units = pow(0.5,(double)((result>>8)&0x1f));
pstate->time_units = pow(0.5,(double)((result>>16)&0xf));
pstate->pkg_pwr = 0;
pstate->pp0_pwr = 0;
uint64_t initial_value = read_msr(MSR_PKG_ENERGY_STATUS, pstate->msr_fh);
do {
pstate->pkg_reg_value = read_msr(MSR_PKG_ENERGY_STATUS, pstate->msr_fh);
pstate->pp0_reg_value = read_msr(MSR_PP0_ENERGY_STATUS, pstate->msr_fh);
} while (pstate->pkg_reg_value == initial_value); // ensure a fresh reading
}
开发者ID:csrhau,项目名称:Iconoclast,代码行数:13,代码来源:rapl_monitor.c
示例7: mperf_measure_stats
static int mperf_measure_stats(unsigned int cpu)
{
unsigned long long val;
int ret;
ret = read_msr(cpu, MSR_APERF, &val);
aperf_current_count[cpu] = val;
ret |= read_msr(cpu, MSR_MPERF, &val);
mperf_current_count[cpu] = val;
is_valid[cpu] = !ret;
return 0;
}
开发者ID:mjw56,项目名称:linux-2.6,代码行数:13,代码来源:mperf_monitor.c
示例8: mperf_init_stats
static int mperf_init_stats(unsigned int cpu)
{
unsigned long long val;
int ret;
ret = read_msr(cpu, MSR_APERF, &val);
aperf_previous_count[cpu] = val;
ret |= read_msr(cpu, MSR_MPERF, &val);
mperf_previous_count[cpu] = val;
is_valid[cpu] = !ret;
return 0;
}
开发者ID:mjw56,项目名称:linux-2.6,代码行数:13,代码来源:mperf_monitor.c
示例9: get_aperf_mperf
/*
* get_aperf_mperf()
*
* Returns the current aperf/mperf MSR values of cpu
*/
static int get_aperf_mperf(unsigned int cpu, uint64_t *aperf, uint64_t *mperf)
{
int retval;
retval = read_msr(cpu, MSR_IA32_APERF, (unsigned long long*)aperf);
if (retval < 0)
return retval;
retval = read_msr(cpu, MSR_IA32_MPERF, (unsigned long long*)mperf);
if (retval < 0)
return retval;
return 0;
}
开发者ID:shadyalaa,项目名称:GreenCM,代码行数:18,代码来源:aperf.c
示例10: rapl_finalize
void rapl_finalize(struct PowerState * pstate){
// TODO disable signal
uint64_t case_reads = 3;
uint64_t test_reads = 3;
const uint64_t pkg_init = pstate->pkg_reg_value;
const uint64_t pp0_init = pstate->pp0_reg_value;
const uint64_t pkg_pre = read_msr(MSR_PKG_ENERGY_STATUS, pstate->msr_fh);
const uint64_t pp0_pre = read_msr(MSR_PP0_ENERGY_STATUS, pstate->msr_fh);
while(read_msr(MSR_PKG_ENERGY_STATUS, pstate->msr_fh) == pkg_pre) {
++case_reads;
}
const uint64_t pkg_post = read_msr(MSR_PKG_ENERGY_STATUS, pstate->msr_fh);
const uint64_t pp0_post = read_msr(MSR_PP0_ENERGY_STATUS, pstate->msr_fh);
while(read_msr(MSR_PKG_ENERGY_STATUS, pstate->msr_fh) == pkg_post) {
++test_reads;
}
const uint64_t pkg_exit = read_msr(MSR_PKG_ENERGY_STATUS, pstate->msr_fh);
const uint64_t pp0_exit = read_msr(MSR_PP0_ENERGY_STATUS, pstate->msr_fh);
double ratio = ((double) case_reads) / ((double) test_reads);
// Should be max of what it is, post - (exit - post) * case_reads / test_reads)
pstate->pkg_reg_value = fmax(pkg_pre, (uint64_t) pkg_post - (pkg_exit - pkg_post)
* ratio);
pstate->pp0_reg_value = fmax(pp0_pre, (uint64_t) pp0_post - (pp0_exit - pp0_post)
* ratio);
pstate->pkg_pwr += (pstate->pkg_reg_value - pkg_init) * pstate->energy_units;
pstate->pp0_pwr += (pstate->pp0_reg_value - pp0_init) * pstate->energy_units;
}
开发者ID:csrhau,项目名称:Iconoclast,代码行数:30,代码来源:rapl_monitor.c
示例11: main
int main(void) {
int fd;
long long result;
double power_units,energy_units,time_units;
double package_before,package_after;
double pp0_before,pp0_after;
double pp1_before=0.0,pp1_after;
double dram_before=0.0,dram_after;
double thermal_spec_power,minimum_power,maximum_power,time_window;
int cpu_model;
double power_target = 500;
printf("Starting set each package power to %fW\n",power_target);
fd=open_msr(0);
/* Calculate the units used */
result=read_msr(fd,MSR_RAPL_POWER_UNIT);
power_units=pow(0.5,(double)(result&0xf));
// printf("Power units = %.3fW\n",power_units);
// printf("\n");
energy_units=pow(0.5,(double)((result>>8)&0x1f));
// printf("Energy units = %.8fJ\n",energy_units);
// printf("\n");
time_units=pow(0.5,(double)((result>>16)&0xf));
// printf("Time units = %.8fs, %.8fKs\n",time_units, time_units*1000.0);
// printf("\n");
set_power_limit(fd, power_target, power_units);
fd=open_msr(8);
/* Calculate the units used */
result=read_msr(fd,MSR_RAPL_POWER_UNIT);
power_units=pow(0.5,(double)(result&0xf));
energy_units=pow(0.5,(double)((result>>8)&0x1f));
time_units=pow(0.5,(double)((result>>16)&0xf));
set_power_limit(fd, power_target, power_units);
return 1;
}
开发者ID:hoangt,项目名称:PUPIL,代码行数:50,代码来源:RaplPowerLimitDisable.c
示例12: vmx_check_ept
/* This function reads the VMX-specific MSRs
* to determine whether EPT is supported.
* See section 24.6.2 and Appenix A.3.3 of the Intel manual.
*
* Hint: the TA solution uses the read_msr() helper function.
*
* Hint: As specified in the appendix, the values in the tables
* are actually offset by 32 bits.
*
* Hint: This needs to check two MSR bits---first verifying
* that secondary VMX controls are enabled, and then that
* EPT is available.
*/
static inline bool vmx_check_ept() {
uint64_t vmx_procbased_clts = read_msr(IA32_VMX_PROCBASED_CTLS);
if(BIT(vmx_procbased_clts>>32,31))
{
//cprintf("return true in vmx_check_ept");
uint64_t vmx_procbased_clts2 = read_msr(IA32_VMX_PROCBASED_CTLS2);
if(BIT(vmx_procbased_clts2>>32,1)){
return true;
}
else
{
return false;
}
}
开发者ID:sumanthkanuparthi,项目名称:Hypervisor,代码行数:28,代码来源:vmx.c
示例13: hsw_ext_get_count
static int hsw_ext_get_count(enum intel_hsw_ext_id id, unsigned long long *val,
unsigned int cpu)
{
int msr;
switch (id) {
case PC8:
msr = MSR_PKG_C8_RESIDENCY;
break;
case PC9:
msr = MSR_PKG_C9_RESIDENCY;
break;
case PC10:
msr = MSR_PKG_C10_RESIDENCY;
break;
case TSC:
msr = MSR_TSC;
break;
default:
return -1;
};
if (read_msr(cpu, msr, val))
return -1;
return 0;
}
开发者ID:020gzh,项目名称:linux,代码行数:25,代码来源:hsw_ext_idle.c
示例14: snb_get_count
static int snb_get_count(enum intel_snb_id id, unsigned long long *val,
unsigned int cpu)
{
int msr;
switch (id) {
case C7:
msr = MSR_CORE_C7_RESIDENCY;
break;
case PC2:
msr = MSR_PKG_C2_RESIDENCY;
break;
case PC7:
msr = MSR_PKG_C7_RESIDENCY;
break;
case TSC:
msr = MSR_TSC;
break;
default:
return -1;
};
if (read_msr(cpu, msr, val))
return -1;
return 0;
}
开发者ID:MiniBlu,项目名称:cm11_kernel_htc_msm8974a3ul,代码行数:25,代码来源:snb_idle.c
示例15: dump_p6_MSRs
void dump_p6_MSRs (struct cpudata *cpu)
{
unsigned long long val = 0;
if (!user_is_root)
return;
printf("P6 family MSRs:\n");
if (read_msr (cpu->number, 0x2a, &val) == 1) {
printf("Low power mode is ");
if ((val & (1<<26)) == 0)
printf("dis");
else
printf("en");
printf("abled\n");
}
/*
if (read_msr (cpu->number, 0x410, &val) == 1) {
}
*/
printf("\n");
}
开发者ID:jamesd,项目名称:x86info,代码行数:25,代码来源:MSR-P6.c
示例16: perfmon_do_cores_status
static void perfmon_do_cores_status(void *opaque)
{
struct perfmon_status_env *env = (struct perfmon_status_env *) opaque;
struct perfmon_cpu_context *cctx = PERCPU_VARPTR(counters_env);
int coreno = core_id();
counter_t ccno = env->pa->cores_counters[coreno];
spin_lock_irqsave(&cctx->lock);
if (perfmon_is_fixed_event(&env->pa->ev))
env->pef->cores_values[coreno] =
read_msr(MSR_CORE_PERF_FIXED_CTR0 + ccno);
else
env->pef->cores_values[coreno] =
read_msr(MSR_IA32_PERFCTR0 + ccno);
spin_unlock_irqsave(&cctx->lock);
}
开发者ID:dlibenzi,项目名称:akaros,代码行数:16,代码来源:perfmon.c
示例17: cpufreq_has_boost_support
int cpufreq_has_boost_support(unsigned int cpu, int *support, int *active,
int *states)
{
struct cpupower_cpu_info cpu_info;
int ret;
unsigned long long val;
*support = *active = *states = 0;
ret = get_cpu_info(&cpu_info);
if (ret)
return ret;
if (cpupower_cpu_info.caps & CPUPOWER_CAP_AMD_CBP) {
*support = 1;
/* AMD Family 0x17 does not utilize PCI D18F4 like prior
* families and has no fixed discrete boost states but
* has Hardware determined variable increments instead.
*/
if (cpu_info.family == 0x17 || cpu_info.family == 0x18) {
if (!read_msr(cpu, MSR_AMD_HWCR, &val)) {
if (!(val & CPUPOWER_AMD_CPBDIS))
*active = 1;
}
} else {
ret = amd_pci_get_num_boost_states(active, states);
if (ret)
return ret;
}
} else if (cpupower_cpu_info.caps & CPUPOWER_CAP_INTEL_IDA)
*support = *active = 1;
return 0;
}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:35,代码来源:misc.c
示例18: read_msr
int cthd_msr::set_clock_mod_duty_cycle_per_cpu(int cpu, int state) {
unsigned long long val;
int ret;
// First bit is reserved
state = state << 1;
ret = read_msr(cpu, MSR_IA32_THERM_CONTROL, &val);
if (ret < 0)
return THD_ERROR;
if (!state) {
val &= ~MSR_IA32_CLK_MOD_ENABLE;
} else {
val |= MSR_IA32_CLK_MOD_ENABLE;
}
val &= ~MSR_IA32_CLK_MOD_DUTY_CYCLE_MASK;
val |= (state & MSR_IA32_CLK_MOD_DUTY_CYCLE_MASK);
ret = write_msr(cpu, MSR_IA32_THERM_CONTROL, val);
if (ret < 0) {
thd_log_warn("set_clock_mod_duty_cycle current set failed to write\n");
return THD_ERROR;
}
return THD_SUCCESS;
}
开发者ID:Acidburn0zzz,项目名称:thermal_daemon,代码行数:27,代码来源:thd_msr.cpp
示例19: get_no_cpus
int cthd_msr::disable_turbo() {
int cpu_count = get_no_cpus();
unsigned long long val;
int ret;
for (int i = 0; i < cpu_count; ++i) {
/*
This method is recommended only for BIOS
ret = read_msr(i, MSR_IA32_MISC_ENABLE, &val);
if (ret < 0)
return THD_ERROR;
val |= MSR_IA32_MISC_ENABLE_TURBO_DISABLE;
ret = write_msr(i, MSR_IA32_MISC_ENABLE, val);
if (ret < 0)
return THD_ERROR;
*/
ret = read_msr(i, MSR_IA32_PERF_CTL, &val);
if (ret < 0)
return THD_ERROR;
val |= TURBO_DISENGAGE_BIT;
ret = write_msr(i, MSR_IA32_PERF_CTL, val);
if (ret < 0)
return THD_ERROR;
}
thd_log_info("Turbo disabled \n");
return THD_SUCCESS;
}
开发者ID:Acidburn0zzz,项目名称:thermal_daemon,代码行数:30,代码来源:thd_msr.cpp
示例20: apic
void apic(void)
{
unsigned long apic_base;
apic_base = read_msr(APIC_BASE_MSR);
print("APIC base: %lx\n", apic_base);
}
开发者ID:zid,项目名称:zidOS,代码行数:7,代码来源:apic.c
注:本文中的read_msr函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论