zoukankan      html  css  js  c++  java
  • 在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指令) "
    "swi "
    :
    :
    :"memory");
    }
    void main()
    {
    pk();

    }

    }

    6.编译链接c文件

    arm-linux-gcc -static syscall.c -o syscall

    cp syscall /rootfs

  • 相关阅读:
    刻舟求剑,
    录制时间是不准确的,
    HIV T2
    DNA RNA
    洛谷 P1428 小鱼比可爱
    Codevs 1081 线段树练习2
    Codevs 1080 线段树联系
    Tarjan算法
    Codevs 2611 观光旅游
    洛谷 1865 A%B问题
  • 原文地址:https://www.cnblogs.com/defen/p/4728403.html
Copyright © 2011-2022 走看看