专题8-Linux系统调用

1.从用户空间到内核空间的时候需要进行系统调用

2.系统调用通过swi指令实现,这个时候会有一个参数,存放到r7寄存器,用来指定要调用的内核态函数。

3.一般内核态的实际函数可以再任意的.c文件实现,但是必须在call.S里面加上相应的函数指针(添加表项)

4.而且要在unistd.h里面对参数进行声明。这个参数是要存放到r7里面的。

5.在用户态进行接口函数实现的时候,要先将上述参数存放到r7,然后再执行swi指令。最后在需要使用这个接口函数的地方调用该函数,这个函数就会自动跳转到内核空间寻找相应的内核态函数。

1.打开内核代码的/kernel/printk.c文件,在文件中实现函数sys_pk()

2./arch/arm/kernel/calls文件中加入新的系统调用

3.arch/arm/include/unistd.h文件中系统调用编号

4. 编写用户函数,调用pk函数

时间: 2024-08-04 12:30:45

专题8-Linux系统调用的相关文章

Linux系统调用列表(转)

以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数.这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的. 按照惯例,这个列表以man pages第2节,即系统调用节为蓝本.按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释. 其中有一些函数的作用完全

Linux系统调用探究(上)

:first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 15px; } h1 { text-transform: uppercase; font-weight: bold; border-bottom: 1px solid; } h2 { border-bottom: 1px solid; } h3, h4, h5, h6 { border-bottom: none; } html * { color:

linux平台学x86汇编(十七):在汇编中使用linux系统调用

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 在前面章节我们已经看到,启动系统调用需要使用INT指令.linux系统调用位于中断0x80,执行INT指令时,所有操作转移到内核中的系统调用处理程序,完成后执行转移到INT指令之后的下一条指令. linux的系统调用在如下文件(32位系统)可以查看: $ cat /usr/include/asm/unistd_32.h #ifndef _ASM_X86_UNISTD_32_H

添加新的linux系统调用

上一篇详细解释了linux系统调用的原理,接下来根据上一篇的原理简单介绍如何创建新的linux系统调用 向内核中添加新的系统调用,需要执行3个步骤: 1. 添加新的内核函数 2. 更新头文件unistd.h 3. 针对这个新函数更新系统调用表calls.S 1. 在kernel/sys.c中添加函数: asmlinkage int sysMul(int a, int b) { int c; c = a*b; return c; } 2.在arch/arm/include/asm/unistd.h

[Linux]Linux系统调用列表

本文列出了大部分常见的Linux系统调用,并附有简要中文说明. 以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数.这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的. 按照惯例,这个列表以man pages第2节,即系统调用节为蓝本.按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改

[Linux]系统调用理解(1)

本文是Linux系统调用专栏系列文章的第一篇,对Linux系统调用的定义.基本原理.使用方法和注意事项大概作了一个介绍,以便读者对Linux系统调用建立一个大致的印象. 什么是系统调用? Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用.用户可以通过系统调用命令在自己的应用程序中调用它们.从某种角度来看,系统调用和普通的函数调用非常相似.区别仅仅在于,系统调用由操作系统核心提供,运行于核心态:而普通的函数调用由函数库或用户自己提供,运行于用户态.二者在使用方式上也有相似之处,

Linux系统调用--getrlimit()与setrlimit()函数详解

http://www.cnblogs.com/niocai/archive/2012/04/01/2428128.html 功能描述:获取或设定资源使用限制.每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值.非授权调 用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制.授权进程可以任意改变其软硬限制.RLIM_INFINITY的 值表示不对资源限制. 用法: #include <sys/resource.h>int getr

linux系统调用原理分析

自己想看看别人开发的项目,吸收下经验,然后找到开源中国,有些网上的大牛自己也开发出了开源中国的客户端 在网上看到很多网友说,下载下来安装不了之类的东西,在我这里我带个路,希望对那些朋友有些帮助. https://github.com/jimneylee/JLRubyChina-iPhone   开源中国源码地址 界面如下: 很多的朋友会直接点击Download ZIP,然后下载下来,打开,打开后就直接CocoaPods更新运行如下命令行 $ pod install 下载了其他的sdk下来后,以为

Linux系统调用列表

以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数.这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的. 按照惯例,这个列表以man pages第2节,即系统调用节为蓝本.按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释. 其中有一些函数的作用完全

ARM Linux系统调用的原理

转载自:http://blog.csdn.net/hongjiujing/article/details/6831192 ARM Linux系统调用的原理 操作系统为在用户态运行的进程与硬件设备进行交互提供了一组接口.在应用程序和硬件之间设置一个额外层具有很多优点.首先,这使得编程更加容易,把 用户从学习硬件设备的低级编程特性中解放出来.其次,这极大地提高了系统的安全性,因为内核在试图满足某个请求之前在接口级就可以检查这种请求的正确性. 最后,更重要的是这些接口使得程序具有可移植性,因为只要内核