我有android-2.2.1驱动的双核Motorola Atrix,我想编写一个可加载的内核模块,为每个核心生成内核线程。要做到这一点,我必须设置核心亲和力。我认为kthread_bind可以用于此目的。我修改示例代码以添加核心关联。此代码适用于x86机器(thread_function()中的smp_processor_id()返回正确的cpu编号)。但是在android手机的情况下,它只为kthread_bind中的任何cpu号返回“0”值。我的问题是核心亲和力是否适用于Android?如果是,那我们怎样才能实现呢?
由于
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kthread.h>
#include <linux/sched.h>
struct task_struct *task;
int data;
int ret;
int thread_function(void *data)
{
int var,cpu;
var = 10;
printk(KERN_INFO"In thread function\n");
cpu = smp_processor_id();
printk(KERN_INFO"CPU_ID IS %d\n",cpu);
return var;
}
static int kernel_init(void)
{
int x;
data = 20;
printk(KERN_INFO"--------------------------------------------");
task = kthread_create(&thread_function,(void *)data,"pradeep");
kthread_bind(task,1);
task = kthread_run(&thread_function,(void *)data,"pradeep");
printk(KERN_INFO"Kernel Thread : %s\n",task->comm);
return 0;
}
static void kernel_exit(void)
{
printk(KERN_INFO"Goodby Kernel\n");
}
module_init(kernel_init);
module_exit(kernel_exit);