32位内核增加系统调用

2023-05-16

32位内核增加系统调用

内核版本:2.6.34.15
系统版本:Ubuntu 12.04
系统位数:32位
更细日期:20181102

一.修改系统调用表

在文件arch/x86/kernel/syscall_table_32.S文件末尾处增加:

.long sys_sumextend		/* 338 */

二.添加系统调用号

在目录arch/x86/include/asm/
修改文件unistd_32.h文件,在文件中添加自己的系统调用号。

#define __NR_sumextend		338

同时修改接下来的定义:

#define NR_syscalls         339//这个表示的当前系统调用的总数

三.编写系统调用的处理函数

原则上你可以在内核文件的任何位置添加你的处理函数。这里选择在kernel目录下新建一个自己的C文件:sumextend.c
需要修改相关的Makefile文件。修改sumextend.c所在的目录下的Makefile文件

obj-y += groups.o
obj-y += sumextend.o #自己添加

编写sumextend.c代码内容:

#include <linux/kernel.h>

asmlinkage long sys_sumextend(void)
{
        printk("sumextend worked!\n");
        return 0;
}

在include/linux/syscalls.h中增加头文件声明:

asmlinkage long sys_sumextend(void);

四.编译内核并安装

make clean
make menuconfig
make
make modules
make modules_install
make install

五.编写用户空间测试函数

#include <stdio.h>
#include <sys/syscall.h>
#define SYS_SUMEXTEND 338
int main(void)
{
    syscall(SYS_SUMEXTEND);
    return 0;
}

运行

gcc syscall_test.c -o syscall_test.o
./syscall_test.o

运行后在命令行中输入dmesg即可看到打印信息
image

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

32位内核增加系统调用 的相关文章

随机推荐

  • 树莓派刷机

    目录 一 树莓派刷机方法 xff08 一 xff09 二 树莓派刷机方法 xff08 二 xff09 一 树莓派刷机方法 xff08 一 xff09 0 准备一张SD卡 xff0c 和一个读卡器 xff0c 将SD卡插入读卡器 xff0c
  • Oracle 创建用户详解(create user)

    文章目录 1 概述2 操作 2 1 创建3 2 查询 3 表空间 1 概述 span class token number 1 span 实际开发中 xff0c 不同业务系统使用 span class token string 39 不同的
  • 关于高德地图添加Marker遇到的一些坑

    最近有一个需求 xff0c 是一个出行类的App xff0c 需要在乘客下单后在地图上显示乘客的头像以及司机的头像 这时候就需要在地图上插上一个marker ImageLoader loadLisenter mContext headUrl
  • [sumo]路网建立方法

    在sumo 中友两种创建路网的方法 xff0c 可以将路网理解为地图 xff0c 这里采用编写脚本文件的方式创建 一 xff0c 创建节点脚本 节点就是道图的拐点 xff0c 十字路口等其他一些路径变化的结点 下面以口字型环路为例介绍 xf
  • GO 权限管理之 Casbin

    GO 权限管理之 Casbin 我们来回顾一下上次分享的 GO中 gjson 库的应用和分享 xff0c 它主要是提供了一种非常快速且简单的方式从json文档中获取相应值 分享了 json与 gjson分别代表什么gjson 的简单使用gj
  • Android关闭SdcardFS

    Author Gary Date 2019 8 26 参考博客 xff1a https blog csdn net pen cil article details 79842706 由于项目先在Android6上进行实现的 xff0c 现需
  • 零基础树莓派无键盘鼠标显示器的初始配置方法

    Author Gary Li Date 2019 11 19 Ref https blog csdn net m0 37340681 article details 84262359 https www jianshu com p 3f4f
  • bash与dash的转换

    由于安装PetaLinux时需要设置 bin sh指向为bash xff0c 否则会报出错误 xff1a WARNING bin sh is not bash 转换的方法入下 xff1a 方法一 xff1a 查看当前是bash还是dash
  • Cosmos(ZYNQ)编译运行Linux系统

    Author Gary Data 2019 12 24 Ref ug1144 petalinux tools reference guide pdf https www cnblogs com vacajk p 6146146 html h
  • NR PDCCH (三)DCI传输过程

    微信同步更新欢迎关注同名 modem协议笔记 PDCCH 承载的data就是DCI xff0c 在PDCCH 盲检时需要用正确的RNTI进行解扰和CRC校验 xff0c 才能确认DCI是不是发送给UE的 xff0c 为什么是这样的decod
  • 创建虚拟块设备及挂载

    Author Gary Date 2020 9 16 Ref https www jianshu com p 889bc1621dc3 在学习一个文件系统时 xff0c 将其真正的挂载 xff0c 执行一些读写操作 xff0c 将其运行起来
  • Linux查看多种硬件信息的指令

    查看内存大小 xff1a cat proc meminfo 或者 lsmem 查看DDR版本 xff1a sudo dmidecode t memory grep 39 Type 39 查看内存厂商 xff1a sudo dmidecode
  • git删除子模块

    删除 gitmodules文件或者删除其中的对应项 rm gitmodules 2 从 git config删除相关部分 xff0c 例如 xff1a 3 删除cache git rm cached lt 子模块路径 gt 4 删除模块文件
  • Ubuntu搭建socks5服务

    更新源 xff1a sudo apt update安装 xff1a sudo apt install dante server备份原配置文件 xff1a sudo mv etc danted conf etc danted conf bak
  • 使用docker安装gem5

    编号又是一团糟 xff01 xff01 完全搞不懂CSDN编辑器的编号方法了 官方参考文档 xff1a gem5 Building gem5 实测里面的地址不知道为什么pull不了 xff0c 用了梯子也不行 现在有2个选择 xff0c 第
  • 从指定块地址中读出数据及F2FS inode分析

    有时候我们为了分析文件系统结构等目的 xff0c 需要从指定的块地址中读取数据出来分析 这时候我们可以用两个Ubuntu自带的工具 xff0c filefrag用于获取inode的块地址 xff0c dd命令或者nvme cli 仅适用于N
  • Hadoop3.1.1+Ubuntu18.04虚拟机三种部署方式

    一 xff0e 安装虚拟机 xff1a 在3台电脑中或者3个虚拟机中安装Ubuntu系统 xff0c 并测试三台电脑能互相ping通 二 xff0e 安装Java xff1a 1 在3台Ubuntu电脑中安装Oracle Java 8 由于
  • Spark 2.3+Ubuntu18简单安装过程

    安装Scala xff1a 到官网下载最新版本的scala 2 12 7 xff0c 并拷贝至虚拟机中 https www scala lang org download 解压 sudo mkdir usr lib scala sudo t
  • 2.6.34内核编译

    2 6 34内核编译 内核版本号 xff1a 2 6 34 15 系统版本号 xff1a 12 04 05 虚拟机 xff1a VMware 12 更新日期 xff1a 20181102 准备工作 下载Vmware并破解下载Ubuntu12
  • 32位内核增加系统调用

    32位内核增加系统调用 内核版本 xff1a 2 6 34 15 系统版本 xff1a Ubuntu 12 04 系统位数 xff1a 32位 更细日期 xff1a 20181102 一 修改系统调用表 在文件arch x86 kernel