在Linux内核添加自己的代码

首先进入到linux内核目录  /kernel/drivers/下,创建一个目录my6818 创建两个文件 test.c  和Makefile

test.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/sched.h>

//__init段 内核启动过程中要调用
static __init int test_init(void)
{
    int 0;
    for(i=0;i<20;i++)
    {
        printk("<0>""hello world\n");//<0>是消息级别
    }
    //如果执行成功返回0,否则返回相应错误码
    return 0;
}

//内核在启动过程中会调用test_init函数
module_init(test_init);//必须要写

MODULE_LICENSE("GPL");//必须要写

MODULE_AUTHOR("ZhiYONGlI");//可不写

MODULE_VERSION("V1.0");//可不写

MODULE_DESCRIPTION("Test For Class");//可不写

Makefile:

obj-y +=test.o  

obj-y 意思是test.c要和内核源码编译到一起  obj-m意思是单独编译test.c文件,编译成.ko文件, obj-n意思是这个test.c文件是不编译的.

然后vim ../Makefile ,然后在这个Makefile中加上 obj-y  +=my6818/     保存退出

再编译内核的时候这个test.c文件就能编译进去了

在 kernel/arch/arm/kernel 下的 calls.s文件可以添加自己的系统调用,然后在当前的kernel目录下实现自己的函数,

cd ..  ,在arm目录下 打开vim include/asm/unistd.h 添加系统调用号. 

syscall函数根据添加的系统调用号调用








  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值