android可加载内核模块的核心亲和力

时间:2011-07-09 13:24:16

标签: android module kernel core affinity

我有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);

0 个答案:

没有答案