当前位置: 首页 > news >正文

潜江哪里做网站手机网站这么做链接

潜江哪里做网站,手机网站这么做链接,网站建设管理专业介绍,谷歌浏览器网页打不开是什么原因ARM 的时钟周期计数保存在PMCCNTR 寄存器#xff0c;不像x86用户态可以直接读取#xff0c;需内核态使能#xff0c;一种是在内核中使能#xff0c;比如init#xff0c;比较简单的是在模块中使能。 本来写了两个#xff0c;arm32一个#xff0c;arm64一个#xff0c;方…ARM 的时钟周期计数保存在PMCCNTR 寄存器不像x86用户态可以直接读取需内核态使能一种是在内核中使能比如init比较简单的是在模块中使能。 本来写了两个arm32一个arm64一个方便对比合在了一起。 只测试了32位cortex-a9双核, 还有 个64位a76 a55。 enpmu.c #include linux/module.h #include linux/kernel.h #include linux/smp.hMODULE_AUTHOR(cn); MODULE_LICENSE(GPL); MODULE_VERSION(0.0);#if !defined(__arm__) !defined(__aarch64__) #error module only support arm32 arm64. #endif#ifdef __aarch64__ typedef unsigned long ulint; //64 #elif defined __arm__ typedef unsigned int ulint; //32 #endifstatic void en_access(void*) {ulint i0,tmpvar0;#ifdef __aarch64__asm volatile(mrs %0, mpidr_el1 :r(i));i (i 8) 0xff; #elseasm volatile(mrc p15,0,%0,c0,c0,5 :r(i));i i 3; #endif asm volatile ( #ifdef __aarch64__mrs %0,pmuserenr_el0 \norr %0, %0,%1 \nmsr pmuserenr_el0,%0 #elsemrc p15, 0, %0, c9, c14, 0 \norr %0, %0,%1 \nmcr p15, 0, %0, c9, c14, 0 \n #endif:r(tmpvar):r(0xf));asm volatile( #ifdef __aarch64__mrs %0, pmcr_el0 \norr %0, %0, %1 \n //32 0x41bic %0, %0, %2 \nmsr pmcr_el0,%0 \n #elsemrc p15, 0, %0, c9, c12, 0 \norr %0, %0,%1 \nbic %0, %0, %2 \nmcr p15, 0, %0, c9, c12, 0 \n #endif:r(tmpvar):r(0x81),r(0x28));asm volatile( #ifdef __aarch64__msr pmcntenset_el0,%1 \nmrs %0, cntvct_el0 \n #elsemcr p15, 0, %1, c9, c12, 1 \nmrc p15, 0, %0, c9, c13, 0 \n #endif:r(tmpvar) :r(0xffffffff));printk(core %lu tsc %lx,(unsigned long)i, (unsigned long)tmpvar ); }static void restore_access(void*) {ulint i,tmpvar0; #ifdef __aarch64__asm volatile( mrs %0, mpidr_el1: r(i));i (i 8)0xff; #elseasm volatile(mrc p15,0,%0,c0,c0,5 \n : r(i));i i 3; #endifasm volatile ( #ifdef __aarch64__mrs %0,pmcr_el0 \nbic %0,%0, %2 \nmsr pmcr_el0,%0\nmsr pmuserenr_el0,%1\nmrs %0, cntvct_el0 \n #elsemrc p15, 0, %0, c9, c14, 0 \nbic %0,%0, %2 \nmcr p15, 0, %0, c9, c14, 0 \nmcr p15, 0, %1, c9, c12, 1 \nmrc p15, 0, %0, c9, c13, 0 \n #endif:r (tmpvar):r(0),r(1));printk(un core %lx tsc %lx,(unsigned long)i, (unsigned long)tmpvar );} static int __init start(void) { on_each_cpu(en_access, NULL, 1);printk(KERN_INFO pmu access enabled\n); return 0; } static void __exit stop(void) { on_each_cpu(restore_access, NULL, 1);printk(KERN_INFO pmu access disabled\n); } module_init(start); module_exit(stop); Makefile obj-m enpmu.o all:make -C /lib/modules/$(shell uname -r)/build/ M$(PWD) modules clean:make -C /lib/modules/$(shell uname -r)/build M$(PWD) clean直接 makeinsmod enpmu.ko rmmod enpmu然后就可以读取了 以下arm32 arm64 x86_64读取方法 test.c #include stdio.h #ifndef __arm__ typedef unsigned long ulint; #else typedef unsigned int ulint; #endif int main() {ulint ct 0; #ifdef __aarch64__asm volatile(mrs %0, cntvct_el0 :r(ct)); #elif defined __arm__asm volatile(mrc p15,0,%0, c9, c13, 0:r(ct)); #elif defined __x86_64__asm volatile(rdtsc ; shl $32, %%rdx ; or %%rdx, %0: a(ct)); #endifprintf(%lx\n,(unsigned long)ct); }gcc test.c ./a.out taskset -c 1 ./a.outtaskset -c 选择在哪个核上运行。 附录 CNTVCT_EL0pmcntenset_el0 Performance Monitors Count Enable Set registerpurpose Enables the Cycle Count Register· C [31]· 0x1 » PMCCNTR_EL0 enable· Pm» PMEVCNTRn_EL0 enable 0xFFFFFFFFpmuserenr_el0 Performance Monitors User Enable Register Enable or disables EL0 access to the performance Monitors; ER [3] » Event counters Read enable, » 1 en rw CR [2] » Cycle counter Read enable· » 32 MRC read PMCCNTR MRRC read PMCCNTR SW[1] software increment register Write enable » 1 En [0] Enable » Enables EL0 read/write access to PMU registers 0xFPMCR_EL0 bit[9] Freeze-on-overflow 0 LC [6] 1 aarch32 supported long cycle » 0x1 DP [5] Disable cycle counter when event counting is prohibited·0x0 not affectedD [3] clock divider··0 pmccntr_el0 counts every clock cycle E [0] enable1 Affected counters are enabled by pmcntenset_el0mrc/mcr Op1 CRm Op2 Name Type Reset Description 0 c12 0 PMCR RW 0x41093000 Performance Monitor Control Register1 PMCNTENSET RW 0x00000000 Count Enable Set Register2 PMCNTENCLR RW 0x00000000 Count Enable Clear Register3 PMOVSR RW - Overflow Flag Status Register4 PMSWINC WO - Software Increment Register5 PMSELR RW 0x00000000 Event Counter Selection Registerc13 0 PMCCNTR RW - Cycle Count Register1 PMXEVTYPER RW - Event Type Selection Register2 PMXEVCNTR RW - Event Count Registersc14 0 PMUSERENR RWa 0x00000000 User Enable Register1 PMINTENSET RW 0x00000000 Interrupt Enable Set Register2 PMINTENCLR RW 0x00000000 Interrupt Enable Clear Register
http://www.dnsts.com.cn/news/154552.html

相关文章:

  • 做网站图片多少钱网站服务器速度对seo有什么影响?
  • 网站建设-上寻模板公司部门解散
  • 昌图门户网站微信小程序开发需要什么技能
  • 安溪建设局网站为我们搭建了这么好的平台
  • 淄博企业网站建设都兰县建设局交通局网站
  • 妇科医院手机网站源码企业网站名是什么意思
  • 建设部网站危险性较大兼职做一篇微信的网站
  • 白沟网站开发百度登录
  • 徐汇网站推广WordPress清除ID沉余
  • 山东济南建网站公司济源市城乡建设局网站
  • 点了网站域名会跳转上海商用厨房设计
  • 快手里做网站荣耀封面的视频网页版微信登不上去怎么回事
  • 网站兼容9深圳外贸建站
  • 上海中小企业网站友链申请
  • 怎么做公司免费网站网站建立项目步骤
  • 网站刚做怎么做seo优化在线模板制作
  • 应持续抓好二级网站的建设工作太湖县网站建设公司
  • 棋牌网站怎么做优化蓝屏的钙 WordPress
  • 商业网站建设费用服务器租用免费试用
  • 做付费软件网站花式表白网址
  • 中国国际贸易单一窗口网站众筹网站建设方案
  • ps切片以后 怎么做网站微信开发工具文档
  • 网站备案号显示红色如果网站没有做icp备案吗
  • 城乡厅建设部网站首页数据分析网站html模板下载
  • 湛江网站建设外包找网站建设公司哪家最好
  • 网站建设广告平台推广网络建设公司前景
  • 网站建设思维导图模版电商哪个平台好做
  • 平板做网站服务器谁能给做网站
  • 做网站用什么技术好低价网站建设费用预算
  • 个人博客网站源码外贸网站建设公司如何