系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。通过int 0x80,就可使用内核资源。不过,通常应用程序都是使用具有标准接口定义的C函数库间接的使用内核的系统调用,即应用程序调用C函数库中的函数,C函数库中再通过int 0x80进行系统调用。
所以,系统调用过程是这样的:
应用程序调用libc中的函数->libc中的函数引用系统调用宏->系统调用宏中使用int 0x80完成系统调用并返回
下面是sys_call_table的定义文件
位于./include/sys.h
其中sys_call_table的类型是fn_ptr类型,其中sys_call_table[0]元素为sys_setup,它的类型是fn_ptr类型,它实际上是函数sys_setup的
入口地址。
它的定义如下:
typedef int (*fn_ptr) (); // 定义函数指针类型。
下面的实例代码有助于理解函数指针:
system_call系统调用入口函数
./include/unistd.h文件中系统调用符号和调用号的对应定义
这是一系列宏,它们的定义在unistd.h中,基本形式为#define _NR_name value,name为系统函数名字,value是一个整数值,是name所对应的系统函数指针在sys_call_table中的偏移量。
系统调用宏也在本文件内定义,采用内联汇编,如下:
分享到:
相关推荐
linux-0.11-devel-060625.ziplinux-0.11-devel-060625.ziplinux-0.11-devel-060625.ziplinux-0.11-devel-060625.ziplinux-0.11-devel-060625.ziplinux-0.11-devel-060625.ziplinux-0.11-devel-060625.ziplinux-0.11-...
本代码是目前能够找到的最早的Linux的内核版本,Linux 0.11内核是Linux内核的早期版本,于1991年由Linus Torvalds编写并发布。作为一个基于UNIX的操作系统内核,它的源代码包含了核心代码和一些驱动程序。采用开源...
linux-0.11-devel-050518.ziplinux-0.11-devel-050518.ziplinux-0.11-devel-050518.ziplinux-0.11-devel-050518.ziplinux-0.11-devel-050518.ziplinux-0.11-devel-050518.ziplinux-0.11-devel-050518.ziplinux-0.11-...
自己的linux-0.11编译开发环境,增加了nasm可执行文件,增加了dos软盘,虚拟机用的是bochs-2.1.1。
linux 0.11内核下载,linux 内核
windows下面编译linux-0.11内核 MinGW32 Bochs
linux0.11内核原理框图 VISIO版
Linux0.11内核代码,对于学习内核的人来说,Linux0.11内核代码确实是个不错的选择。。
linux内核完全注释根据linux0.11编写的。搭配内核设计的艺术2版,学习linux内核的神组合。学习内核建议从linux0.11看起,初始版本内容比较简单,但包含的都是内核的精髓。先上手,学到了方法,后面再看最新版本就更...
LINUX0.11内核源码 真男人就读源码
《Linux 0.11内核完全注释》
Linux内核Linux内核0.11完全注解.rar0.11完全注解.rar
本书对早期的Linux操作系统内核(v0.11)全部源代码文件进行了详细的注释和 说明,旨在让读者能够在短时间内对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux系统打下坚实的基础。书中首先介绍了 ...
linux0.11内核源代码 linux0.11内核源代码 linux0.11内核源代码
linux-0.11-040327-rh9.diff.gz
可以直接make的linux-0.11源码,得到Image
linux-0.11.rar linux0.11版内核源代码 下载
linux0.11资料,linux0.11内核源码及完全注释
linux0.11内核源代码.麻雀虽小,五脏俱全,linux内核的早期版本,学习LINUX内核的好东西!
看linux-0.11代码,从启动0.11开始