Linux内核驱动学习(七)----系统调用揭秘
来源:互联网 发布:prisma 离线 知乎 编辑:程序博客网 时间:2024/04/30 07:57
Linux内核驱动学习(七)----系统调用揭秘
http://blog.csdn.net/u011467781/article/details/44106429?ref=myread
一、作用分析:
系统调用的定义:所有的操作系统都提供多种服务的入口点,程序由此向内核请求服务。这些定义明确、数量有限、可直接进入内核的入口点被称为系统调用。
二、系统调用的实现:
2.1使用软中断SWI指令实现用户空间到内核空间的切换。swi异常中断机制实现了在用户模式下对特权模式(SVC)下程序的调用。
注:Linux内核运行在SVC模式下,即保护操作系统模式下
2.2通过不同的系统调用标号实现不同的系统调用;(使用通用寄存器R7传递)
我们先对系统调用涉及文件的介绍:
2.2.1:首先调用系统调用的列表在文件calls.S 中(linux-ok6410\arch\arm\kernel)
文件内容部分截图:
2.2.2:系统调用的标号在文件Unistd.h中 (linux-ok6410\arch\arm\include\asm)
文件内容部分截图:
三、自己动手添加并实现系统调用
1、实现一个具有打印功能的系统调用:实现位置在kernel/printk.c文件中
、
2、在调用系统调用的列表中添加写好的系统调用:文件-->linux-ok6410\arch\arm\kernel\call.S
3、添加系统调用标号;文件--->linux-ok6410\arch\arm\include\asm\Unistd.h
注:均顺序添加到最后一行。
4、之后make clean;然后编译内核:make uImage ARCH=arm CROSS_COMPILE=arm-linux-
5、编写C文件syscall实现系统调用。
6、成功调用,并打印出信息
注:注意使用静态编译的方式编译syscall.c文件:
0 0
- Linux内核驱动学习(七)----系统调用揭秘
- Linux内核学习笔记之中断与系统调用(七)
- Linux内核设计基础(七)之系统调用
- Linux内核|实验七 系统调用实验
- linux内核学习----系统调用
- Linux内核分析(六)----字符设备控制方法实现|揭秘系统调用本质
- Linux内核与驱动开发学习总结:内核访问外设IO.map_desc和ioremap(七)
- linux内核驱动学习(七)----驱动分类 | 学习方法 | 硬件访问
- Linux 内核学习——系统调用(fork)
- Linux内核学习之系统调用
- linux 内核学习之系统调用
- Linux内核学习之系统调用
- Linux内核学习-系统调用
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- 内核驱动开发第五天linux系统调用
- linux设备驱动归纳总结(七):2.内核定时器
- linux设备驱动归纳总结(七):2.内核定时器
- 类的内部数据类型成员指针以及operator->*
- 在CSDN博客的第一篇
- 代理模式与策略模式
- 自动化测试框架思路
- Infiniband驱动安装-RHEL5.8
- Linux内核驱动学习(七)----系统调用揭秘
- linux内核分析----计算机工作
- 基于HALCON的模板匹配方法总结
- 在Mac进行Java开发的环境准备
- PHP 正则(2)
- 解决 Linux 安装 Mysql 出现的 configure: error: No curses/termcap library found
- Python datetime 格式化字符串:strftime()
- Linux内核驱动学习(六)----内核链表
- 【C++学习】成员函数重载