Linux系统调用
来源:互联网 发布:java驻场开发什么意思 编辑:程序博客网 时间:2024/06/08 01:21
Linux分为用户空间和内核空间
我们在内核空间有一个函数要提供给用户空间使用。
比如内核有个函数sys_read(),用户空间有一个应用程序read(),他的实现体来自内核空间。
这样就形成了一个系统调用。
read从内核空间找到sys_read这个函数体。
ARM中有一个指令swi (software interrupt)。一旦swi执行的时候linux就会从用户空间切换到内核空间。系统调用会有编号。Swi先将这个编号保存在寄存器中,进入内核空间后找到编号,就能得到系统调用。
如果我们要实现一个打印的功能,
1)先进入到内核文件目录\linux\kernel\printk.c中,
写了一个函数sys_pk(){printk(“xxxxx”);}
2)然后再找到\linux\arch\arm\kernel\calls.S
在它的最后面加上CALL(sys_pk)
3)进入\linux\arch\arm\include\asm\unistd.h
在最后加一句#define __NR_pk (__NR_SYSCALL_BASE+363)
最后的编号顺着前面加一。
然后先make clean再重新编译内核。
最后再写一个应用程序
编译的时候要使用静态编译arm-linux-gcc -static syscll.c -o syscall
0 0
- 汇编语言调用Linux系统调用
- 如何调用linux系统调用
- Linux系统调用列表
- Linux 系统调用
- Linux系统调用列表
- Linux系统调用列表
- Linux系统调用列表
- Linux系统调用列表
- linux的系统调用
- Linux系统调用列表
- Linux系统调用列表
- Linux系统调用列表
- Linux系统调用讲义
- Linux系统调用列表
- linux 系统调用
- Linux系统调用
- Linux系统调用列表
- linux系统调用(转)
- Logistic回归原理介绍
- 【数据结构】LinkedList原理及实现学习总结
- JS学习笔记
- Andriod中绘(画)图----Canvas的使用详解
- (LeetCode 130)Surrounded Regions(并查集)
- Linux系统调用
- java 继承
- 【CQOI2016】密钥破解
- idea快捷键
- 深入理解linux网络技术内幕读书笔记(一)--简介
- string::npos表示不存在的位置
- web day13 JSTL标签库(c标签,自定义标签),MVC设计模式,JavaWeb经典三层框架
- 【快速因数分解】Pollard's Rho 算法
- android获取指定路径下目录文件