gpt4 book ai didi

c - 在可加载的 linux 内核模块上设置 cpu 亲和性

转载 作者:太空狗 更新时间:2023-10-29 15:41:55 25 4
gpt4 key购买 nike

我需要创建一个内核模块,在计算机的每个内核上启用 ARM PMU 计数器。我在设置 cpu 亲和性时遇到问题。我试过 sched_get_affinity,但显然,它只适用于用户空间进程。我的代码如下。有什么想法吗?

 #define _GNU_SOURCE

#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */


int init_module(void){


unsigned reg;



/* enable user-mode access to the performance counters*/

asm volatile("MRC p15, 0, %0, C9, C14, 0\n\t" : "=r"(reg));

reg |= 1;

asm volatile("MCR p15, 0, %0, C9, C14, 0\n\t" :: "r"(reg));


printk(KERN_INFO "User mode Performance Counters are enabled.\n",reg);

return 0;
}

void cleanup_module(void){

unsigned reg;

/* disable user-mode access to the performance counters*/
asm volatile("MRC p15, 0, %0, C9, C14, 0\n\t" : "=r"(reg));

reg &= (~0 << 1);

asm volatile("MCR p15, 0, %0, C9, C14, 0\n\t" :: "r"(reg));


printk(KERN_INFO "User mode Performance Counters are disabled.\n");
}

最佳答案

cpu affinity 在内核模块方面毫无意义,据我所知你需要一个一个地遍历 cpus 来初始化 PM。

像这样:

for_each_cpu(cpu, mask) 
include/linux/cpumask.h +152

关于c - 在可加载的 linux 内核模块上设置 cpu 亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28347876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com