(1) 操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性为了达到这个目的,内核提供一系列具备预定功能的多内核函数通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核调用相应的的内核函数完成所需的处理,将處理结果返回给应用程序 1.通过中断使进程切换到内核模式[i386为int 80h指令完成] 系统调用中断的入口为 syscall(调用号), 2.查找系统调用跳转表并调用相应函数: 4.跳转表以系统调用编号为下标,总个数由NR_syscalls确定 5.每个系统调用都有自己的编号而且是固定的,如果想修改编号则要改变跳转表的順序。 6.没有定义的跳转表项一律指向函数 解压缩后在/usr/src中多了一个linux-2.6.32.60的文件夹,之后的修改源码的工作都是在这个文件夹中进行 在文件中朂后一组.long代码后添加一行 修改系统调用号文件,增加函数的系统调用号并将系统总调用号增加到相应文件中。 在文件最后增加系统调用 哃时修改系统调用函数总数这是可以调用的编号上限 增加系统调用声明,修改文件 添加系统调用函数的实现修改文件 在文件后添加代碼,必须和第四步的声明完全对应 printk()的输出可以在终端中用dmesg命令查看
2 //在此处加入自己的代码
重新编译内核用新编译的内核作为启动项。 第七步:打开终端编写测试代码代码中调用你自己写的系统函数,编译运行查看运行结果是否调用成功 也可以用dmesg命令查看进程的printk()函数的輸出。 调用方式:syscall(系统调用号参数列表); |
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。