zoukankan      html  css  js  c++  java
  • .ko文件

    ko文件介绍

    • .ko文件是kernel object文件(内核模块),该文件作用是把内核的部分功能移动到内核外边,需要的时候插入内核,不需要时卸载。
    • 内核模块实现一些函数,作为回调函数注册到内核中。在内核加载/卸载时,或者其他应用程序调用系统调用时,注册的回调函数才得到调用。

    动态加载.ko文件示例:

    c源码:

    // 引入相关内核头文件
    #include <linux/module.h>
    
    // 内核模块信息,包括许可证、作者、描述和版本等
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("tongyishu");
    MODULE_DESCRIPTION("hello world ko");
    MODULE_VERSION("1.0");
    
    // 初始化函数,在加载时调用,分配资源准备执行环境,这里只是往内核日志输出一行记录
    static int __init hello_init(void)
    {
        printk(KERN_INFO "HELLO: Hello World, this is hello module speaking
    ");
        return 0;
    }
    
    // 清理函数,在卸载时调用,回收资源销毁执行环境
    static void __exit hello_exit(void)
    {
        printk(KERN_INFO "HELLO: Goodbye World
    ");
    }
    
    // 登记初始化函数及清理函数
    module_init(hello_init);
    module_exit(hello_exit);

    Makefile文件:

    obj-m+=hello.o
     
    all:
            make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
    
    clean:
            make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules clean

    执行 make 命令:

     

     会生成相关文件(包含 .ko 文件):

     modinfo hello.ko查看相关信息:

    lsmod 查看已经加载的内核模块 :

    insmod hello.ko加载内核模块 & dmesg 查看输出:

        (dmesg用于查看开机信息)

     rmmod hello 卸载内核模块 & dmesg 查看输出:

  • 相关阅读:
    音频设备的接线图了解
    学习感悟
    音频系统操作文档
    通讯型高清视频会议摄像机
    网络继电器控制板
    linx命令 1
    28岁应该怎么样规划职业?
    Python的数值类型与序列类型
    Mysql数据库笔记
    内部类
  • 原文地址:https://www.cnblogs.com/tongyishu/p/12012205.html
Copyright © 2011-2022 走看看