• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ read_msr函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ read_next_frame函数代码示例发布时间:2022-05-30
下一篇:
C++ read_mpidr函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap