Linux kernel 如何包含linux内核头文件

Linux kernel 如何包含linux内核头文件,linux-kernel,Linux Kernel,我正在尝试一些Linux内核开发 我在包含头文件sched.h时遇到了一个问题,它存在于路径/usr/src/linux-3.12.26/kernel/sched中,而不是/usr/src/linux-3.12.26/include/linux中 但是当我sudo make-C/usr/src/linux-3.12.26/M=$pwd modules时,我得到了一个错误致命错误:kernel/sched/sched.h:不存在 这是我的密码: #include <linux/init.h&

我正在尝试一些Linux内核开发

我在包含头文件sched.h时遇到了一个问题,它存在于路径/usr/src/linux-3.12.26/kernel/sched中,而不是/usr/src/linux-3.12.26/include/linux中

但是当我sudo make-C/usr/src/linux-3.12.26/M=$pwd modules时,我得到了一个错误致命错误:kernel/sched/sched.h:不存在

这是我的密码:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/percpu.h>
#include </usr/src/linux-3.12.26/kernel/sched/sched.h>

int __init init_current(void){
    int cpu_num=0;
    struct task_struct *p;
    for(cpu_num=0;cpu_num<8;cpu_num++)
    {
     p=curr_task(cpu_num);
     printk(KERN_ALERT "current task on cpu %d is %d\n", cpu_num, p->pid);
    }
    return 0;
}

void __exit exit_current(void)
{
   printk(KERN_ALERT "FINISHED!\n");
}

MODULE_LICENSE("GPL");
module_init(init_current);
module_exit(exit_current);
#include <linux/init.h>
#include <linux/module.h>
//#include <linux/sched.h>
#include <linux/percpu.h>
#include <sched/sched.h>
static int __init init_current(void){
int cpu_num=0;
extern struct task_struct *p;
struct rq *q;
extern struct rq * cpu_rq(int);
for(cpu_num=0;cpu_num<8;cpu_num++)
{
 q=cpu_rq(cpu_num);
 p=q->curr;
 printk(KERN_ALERT "current task on cpu %d is %d\n", cpu_num, p->pid);
}
return 0;
}

static void __exit exit_current(void)
{
 printk(KERN_ALERT "FINISHED!\n");
}

MODULE_LICENSE("GPL");
module_init(init_current);
module_exit(exit_current);

我怀疑sched.h只用于包含在密切相关的目录中的代码,所以它不是include路径的一部分。出于更根本的原因,您尝试执行的操作可能不可行,但您可以通过简单地说include(包括),甚至不可移植地说include(包括),让它查找文件,但只是为了查看您将遇到的其他问题,用引号而不是尖括号指定文件的完整绝对路径。
/home/wison/code/current/current.c: In function ‘init_current’:
kernel/sched/sched.h:539:23: error: expected identifier or ‘(’ before ‘&’ token
 #define cpu_rq(cpu)  (&per_cpu(runqueues, (cpu)))
               ^
/home/wison/code/current/current.c:11:28: note: in expansion of macro ‘cpu_rq’
 extern struct rq * cpu_rq(int);