query_module() - Unix,Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者指南
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  主頁     參考     討論論壇     關於 TP  

query_module() - Unix,Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

query_module - 查詢核心關於模組的各種資訊

語法

#include <linux/module.h> 

int query_module(const char *name, int which, void *buf, size_t bufsize, size_t *ret);

描述

query_module() 請求核心提供有關可載入模組的資訊。返回的資訊放置在 buf 指向的緩衝區中。呼叫者必須在 bufsize 中指定 buf 的大小。返回資訊的精確性質和格式取決於 which 指定的操作。某些操作需要 name 來識別當前載入的模組,某些操作允許 name 為 NULL,表示核心本身。

以下值可以為 which 指定

標籤描述
0 始終返回成功。用於探測系統呼叫的可用性。
QM_MODULES
 返回所有載入的模組的名稱。返回的緩衝區由一系列以 null 結尾的字串組成;ret 設定為模組的數量。
QM_DEPS
 返回所指示模組使用的所有模組的名稱。返回的緩衝區由一系列以 null 結尾的字串組成;ret 設定為模組的數量。
QM_REFS
 返回使用所指示模組的所有模組的名稱。這是 QM_DEPS 的反向操作。返回的緩衝區由一系列以 null 結尾的字串組成;ret 設定為模組的數量。
QM_SYMBOLS
 返回核心或所指示模組匯出的符號和值。返回的緩衝區是一個如下所示的結構陣列

struct module_symbol {
    unsigned long value;
    unsigned long name;
};

後面跟著以 null 結尾的字串。name 的值為字串相對於 buf 開頭的字元偏移量;ret 設定為符號的數量。

QM_INFO
 返回有關所指示模組的雜項資訊。輸出緩衝區格式為

struct module_info {
    unsigned long address;
    unsigned long size;
    unsigned long flags;
};

其中 address 是模組駐留的核心地址,size 是模組以位元組為單位的大小,flagsMOD_RUNNINGMOD_AUTOCLEAN 等的掩碼,指示模組的當前狀態(請參見核心原始檔 include/linux/module.h)。ret 設定為 module_info 結構的大小。

返回值

成功時,返回零。發生錯誤時,返回 -1,並且 errno 被相應地設定。

錯誤

標籤描述
EFAULT 至少 namebufret 之一在程式的可訪問地址空間之外。
EINVAL 無效的 which;或者 name 為 NULL(表示“核心”),但對於指定的 which 值不允許這樣做。
ENOENT 不存在名為 name 的模組。
ENOSPC 提供的緩衝區大小太小。ret 設定為所需的最小大小。

符合標準

query_module() 是 Linux 特定的。

註釋

此係統呼叫僅在 Linux 核心 2.4 之前存在;它在 Linux 2.6 中被刪除。可以透過 /proc/modules/proc/kallsyms/sys/modules 獲取一些透過 query_module() 可用的資訊。

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.