在linux内核中实现自己的系统调用
如实现一个简单的打印:printk
1.cd linux-ok6410/kernel/
vim printk.c
void sys_pk()
{
printk("<0>this is a new sys call");
}
cd arch/arm/kernel
2.vim calls.S
在最后面加上
Call(sys_pk)
3.cd arch/arm/include
在文件Unistd.h在合适的位置中添加如下几行:
vim Unistd.h
在最后面加上:
#define __NR_pk (__NR_SYSCALL_BASE+363)
4.对内核进行重新编译
make clean
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
cp uImage /rootfs
tftp 0xc0008000 uImage
bootm 0xc0008000
5.使用新添加的系统调用
vim syscall.c
void pk()
{
__asm__ (
"ldr r7,=363(超过8位不能使用mov指令)\n"
"swi\n"
:
:
:"memory");
}
void main()
{
pk();
}
}
6.编译链接c文件
arm-linux-gcc -static syscall.c -o syscall
cp syscall /rootfs
在linux内核中实现自己的系统调用的更多相关文章
- 【转】在linux内核中读写文件 -- 不错
原文网址:http://blog.csdn.net/tommy_wxie/article/details/8194276 1. 序曲 在用户态,读写文件可以通过read和write这两个系统调用来完成 ...
- Linux内核设计第四周——扒开系统调用三层皮
Linux内核设计第四周 ——扒开系统调用三层皮 一.知识点总结 (一).系统调用基础知识 1.用户态和内核态 内核态:在高级别的状态下,代码可以执行特权指令,访问任意的物理地址: 用户态:在相应的低 ...
- Linux内核中的fastcall和asmlinkage宏
代码中看见:#define _fastcall 所以了解下fastcall -------------------------------------------------------------- ...
- Apparmor——Linux内核中的强制访问控制系统
AppArmor 因为最近在研究OJ(oline judge)后台的安全模块的实现,所以一直在研究Linux下沙箱的东西,同时发现了Apparmor可以提供访问控制. AppArmor(Appli ...
- KSM剖析——Linux 内核中的内存去耦合
简介: 作为一个系统管理程序(hypervisor),Linux® 有几个创新,2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许这个系统管理程序通 ...
- 调皮的程序员:Linux之父雕刻在Linux内核中的故事
本文内容由公众号“格友”原创分享. 1.引言 (不羁的大神,连竖中指都这么帅) 因为LINUX操作系统的流行,Linus 已经成为地球人都知道的名人.虽然大家可能都听过钱钟书先生的名言:“假如你吃 ...
- 20135327郭皓--Linux内核分析第四周 扒开系统调用的三层皮(上)
Linux内核分析第四周 扒开系统调用的三层皮(上) 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/U ...
- (笔记)Linux内核中内存相关的操作函数
linux内核中内存相关的操作函数 1.kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) ...
- 进程在Linux内核中的角色扮演
在Linux内核中,内核将进程.线程和内核线程一视同仁,即内核使用唯一的数据结构task_struct来分别表示他们:内核使用相同的调度算法对这三者进行调度:并且内核也使用同一个函数do_fork() ...
随机推荐
- EC+VO+SCOPE for ES3
词法环境 词法作用域 词法作用域(lexcical scope).即JavaScript变量的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码. 词法环境 用于定义特定变量和函数标识 ...
- Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。
例1:用Linux下的curl命令发送POST请求给Apache服务器上的HTML静态页 [root@new-host ~]# curl -d 1=1 http://www.sohu.com/inde ...
- 获取select中的值
分别使用javascript原生的方法和jquery方法<select id="test" name=""> <option value=&q ...
- action之间传参为中文;type='redirect'和 type='redirectAction'主要区别
摘录自:http://blog.csdn.net/lhi705/article/details/7446156 Struts2中action之间传参中文乱码的问题 解决方法一(已经验证,可以): 两个 ...
- wigs的理解和应用
1. 首先了解下,Web应用的本质,大体如下: 1.浏览器发送一个HTTP请求: 2.服务器收到请求,生成一个HTML文档: 3.服务器把HTML文档作为HTTP响应的Body发送给浏览器: 4.浏览 ...
- python_如何判断字符串a以某个字符串开头或结尾?
案例: 某文件系统目录下有一系列文件: 1.c 2.py 3.java 4.sh 5.cpp ...... 编写一个程序,给其中所有的.sh文件和.py文件加上可执行权限 如何解决这个问题? 1. 先 ...
- Python---多线程(threading)
1. 概述 threading提供线程相关操作,python当前版本的多线程库没有实现优先级.线程组,线程也不能被停止.暂停.恢复和中断 threading提供的类: Thread,Lock,Rloc ...
- duilib消息类型
//定义所有消息类型 ////////////////////////////////////////////////////////////////////////// #define DUI_MS ...
- junit源码解析--初始化阶段
OK,我们接着上篇整理.上篇博客中已经列出的junit的几个核心的类,这里我们开始整理junit完整的生命周期. JUnit 的完整生命周期分为 3 个阶段:初始化阶段.运行阶段和结果捕捉阶段. 这篇 ...
- java事件处理机制
java中的事件机制的参与者有3种角色: 1.event object:就是事件产生时具体的"事件",用于listener的相应的方法之中,作为参数,一般存在与listerne ...