欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux內核設備驅動之Linux內核模塊加載機制筆記整理

 更新時間:2018年12月17日 10:05:56   作者:Engineer-Bruce_Yang  
今天小編就為大家分享一篇關于Linux內核設備驅動之Linux內核模塊加載機制筆記整理,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

#include <linux/moduleparam.h>

1. 模塊參數(shù)

在驅動定義變量

static int num = 0; //當加載模塊不指定num的值時則為0
  • module_param(變量名, 類型, 權限);類型: byte, int, uint, short, ushort, long, ulong, bool, charp,權限不能有寫的權限
  • 傳參數(shù): insmod test.ko 變量名1=值1  變量名2=值2

module_param的調用關系如下:

#define module_param(name, type, perm) \
module_param_named(name, name, type, perm)
#define module_param_named(name, value, type, perm)  \
param_check_##type(name, &(value));  \
module_param_call(name, param_set_##type, param_get_##type, &value, perm); \
__MODULE_PARM_TYPE(name, #type)
#define module_param_call(name, set, get, arg, perm)   \
__module_param_call(MODULE_PARAM_PREFIX,   \
  name, set, get, arg,   \
  __same_type(*(arg), bool), perm)
#define __module_param_call(prefix, name, set, get, arg, isbool, perm) \
static int __param_perm_check_##name __attribute__((unused)) = \
BUILD_BUG_ON_ZERO((perm) < 0 || (perm) > 0777 || ((perm) & 2)) \
+ BUILD_BUG_ON_ZERO(sizeof(""prefix) > MAX_PARAM_PREFIX_LEN); \
static const char __param_str_##name[] = prefix #name; \
static struct kernel_param __moduleparam_const __param_##name \
__used \
  __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \
= { __param_str_##name, perm, isbool ? KPARAM_ISBOOL : 0, \
  set, get, { arg } }

多個c文件編成一個模塊,可以使用xxx-objs這個Makefile中的指令來實現(xiàn),如下:

test-objs := a.o b.o //由a.c, b.c 編成test.ko, 注意不能有.o文件與目標ko文件同名
obj-m += test.o

可在/sys/module/模塊名/下查看模塊在系統(tǒng)的信息

1. 查看elf文件的信息

readelf test.ko -a

ko文件組成

  • 1. elf文件頭
  • 2. text data ...
  • 3. sections table
  • 4. symbol table

2. EXPORT_SYMBOL(函數(shù)名/變量的地址) //把函數(shù)/或者變量的地址導出到內核的符號表中

EXPORT_SYMBOL_GPL(函數(shù)名)
///////////

/proc/kallsyms 查看當前系統(tǒng)的符號表

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

  • Linux系統(tǒng)用戶管理命令小結

    Linux系統(tǒng)用戶管理命令小結

    這篇文章主要介紹了Linux系統(tǒng)用戶管理命令小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Linux 查看磁盤IO并找出占用IO讀寫很高的進程

    Linux 查看磁盤IO并找出占用IO讀寫很高的進程

    這篇文章主要介紹了Linux 查看磁盤IO并找出占用IO讀寫很高的進程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 通過 SSH 在遠程 Linux 系統(tǒng)上運行命令的方法

    通過 SSH 在遠程 Linux 系統(tǒng)上運行命令的方法

    這篇文章主要介紹了通過 SSH 在遠程 Linux 系統(tǒng)上運行命令的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 關于將Web項目部署到阿里云服務器(5個步驟搞定)

    關于將Web項目部署到阿里云服務器(5個步驟搞定)

    這篇文章主要介紹了關于將Web項目部署到阿里云服務器(5個步驟搞定),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 詳細講解西軟FOXHIS增量備份與恢復方法

    詳細講解西軟FOXHIS增量備份與恢復方法

    西軟在實施階段時,會設置好幾個Linux shell的自動任務,把數(shù)據(jù)每天全庫備份兩次,并且并把數(shù)據(jù)通過ftp拷至備份庫,其實這樣做存在非常大的安全隱患,數(shù)據(jù)庫服務器如果給KO了,您酒店只有當天的兩次備份,數(shù)據(jù)損失將是12個小時來計算,對酒店經(jīng)營非常不利
    2017-01-01
  • 在IDEA中使用Linux命令的操作方法

    在IDEA中使用Linux命令的操作方法

    這篇文章主要介紹了在IDEA中使用Linux命令的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 在Linux環(huán)境下安裝Kafka

    在Linux環(huán)境下安裝Kafka

    本文以安裝Kafka的步驟做了圖文詳細介紹,Kafka是一種高吞吐量 的分布式發(fā)布訂閱消息系統(tǒng),對Kagka感興趣的小伙伴可以參考參考本篇文章
    2021-08-08
  • CentOS7下安裝yum源及上傳下載命令rz、sz安裝方法(圖解)

    CentOS7下安裝yum源及上傳下載命令rz、sz安裝方法(圖解)

    這篇文章主要介紹了CentOS7下安裝yum源及上傳下載命令rz、sz安裝方法,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • 在AWS的Linux服務器部署Flask預演(詳細步驟)

    在AWS的Linux服務器部署Flask預演(詳細步驟)

    這篇文章主要介紹了在AWS的Linux服務器部署Flask預演,部署Flask應用程序到AWS Linux服務器,你可以選擇多種方式,本文分步驟給大家介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Linux scp命令用法及實例分享

    Linux scp命令用法及實例分享

    Linux scp命令用于Linux之間復制文件和目錄。scp是 secure copy的縮寫, scp是linux系統(tǒng)下基于ssh登陸進行安全的遠程文件拷貝命令。下面我們來詳細看下scp命令的用法以及實例
    2017-03-03

最新評論