procfs接口創建
實現效果:
例如, 在/proc下創建一個clk節點,通過cat /proc/clk可查看內容:

在驅動中添加以下代碼:
#include < linux/kernel.h >
#include < linux/module.h >
#include < linux/init.h >
#include < linux/proc_fs.h >
#include < linux/seq_file.h >
struct proc_dir_entry *my_proc_entry;
static int proc_clk_show(struct seq_file *m, void *v)
{
//cat顯示的內容
seq_printf(m,
"pll0: %u Mhzn"
"pll1: %u Mhzn"
"pll2: %u Mhzn",
100, 200, 300);
return 0;
}
static int clk_info_open(struct inode *inode, struct file *filp)
{
return single_open(filp, proc_clk_show, NULL);
}
static struct file_operations myops =
{
.owner = THIS_MODULE,
.open = clk_info_open,
.read = seq_read,
.llseek = seq_lseek,
.release = seq_release,
};
static int __init my_module_init(void)
{
//注冊proc接口
my_proc_entry = proc_create("clk", 0644, NULL, &myops);
return 0;
}
static void __exit my_module_exit(void)
{
//注銷proc接口
proc_remove(my_proc_entry);
}
module_init(my_module_init);
module_exit(my_module_exit);
MODULE_LICENSE("GPL");
procfs接口的創建,主要是實現struct file_operations結構體,然后通過proc_create函數進行注冊,通過proc_remove函數進行注銷。
procfs通常是用來獲取CPU、內存、進程等各種信息,例如cat /proc/cpuinfo、cat /proc/meminfo,所以我們只需要實現.open成員函數。當使用cat命令查看/proc下的信息時,會調用到.open對應的實現函數。
這里我們使用了seq_file接口,需要記住的是, procfs通常會和seq_file接口一起使用 。seq_file是一個序列文件接口, 當我們創建的proc數據內容由一系列數據順序組合而成或者是比較大的proc文件系統時,都建議使用seq_file接口 ,例如cat /proc/meminfo就會顯示很多內容。
seq_file接口主要就是解決proc接口編程存在的問題, 推薦在proc接口編程時使用seq_file接口 ,另外.read、.llseek、.release成員函數也可以直接用seq_read、seq_lseek和seq_release。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
接口
+關注
關注
33文章
9519瀏覽量
157020 -
驅動
+關注
關注
12文章
1954瀏覽量
88522 -
Linux
+關注
關注
88文章
11758瀏覽量
219009
發布評論請先 登錄
相關推薦
熱點推薦
簡析Linux proc文件系統
linux 操作系統把虛擬地址分為用戶空間和內核空間,內核空間可以通過procfs把內核的數據呈現給用戶空間,用戶空間也可以把數據寫入到內核從而更改內核的行為,這在驅動中很常見,最終目
發表于 06-16 10:32
?1312次閱讀
LiteOS-A內核中的procfs文件系統分析
。procfs文件系統是LiteOS-A內核文件系統的一個案例,通過了解procfs文件系統,能夠熟悉LiteOS-A的文件系統框架,并很好地將內核信息通過文件系統反饋給使用者。Linux系統
發表于 12-08 11:31
手把手教你創建Linux設備驅動和應用程序
其實我們創建的myLed IP相對于Linux操作系統可以是它的一個底層設備,因為PS總線為myLed IP分配了尋址地址,這樣我們就可以創建myLed IP模塊的硬件驅動,然后搭建應
發表于 11-10 14:49
?4810次閱讀
linux系統中如何創建文本菜單
當使用Linux系統時,最常見的Shell腳本交互類型是應用菜單(文本菜單),文本菜單的核心是case命令。 H. L.使用case命令完成菜單交互。 讓我們在下面創建一個簡單的腳本。 在Linux系統
發表于 09-25 15:45
?1484次閱讀
如何在 Vitis 中使用 UIO 驅動框架創建簡單的 Linux 用戶應用
Linux嵌入式設計中最基本的任務之一是創建用戶應用程序。 在本篇博文中,我們將探討如何在 Vitis 中使用 UIO 驅動框架創建簡單的 Linu
LiteOS-A內核中的procfs文件系統分析
文件系統,不存在硬盤當中,而是系統啟動時動態生成的文件系統,儲存在內存中。procfs文件系統通常掛載在/proc目錄下。 LiteOS-
Linux驅動-spidev驅動使用方法
Linux內核集成了spidev驅動,提供了SPI設備的用戶空間API,支持用于半雙工通信的read()和write()訪問接口以及用于全雙工通信和I/O配置的ioctl()接口;使用
Linux中如何如何為現有用戶創建主目錄?
在Linux系統中,每個用戶都有一個主目錄,通常稱為home目錄,用于存儲用戶的個人文件和配置信息。然而,有時候我們會創建一個新的用戶,但是忘記或者沒有選擇為其創建一個主目錄。在這種情
Linux驅動proc新接口介紹
proc新接口 注意,在較新版本的內核中, procfs 的函數接口有所變化。 系統 內核版本 Linux 5.10.111 在
linux中創建group的命令
在Linux中,創建用戶組的命令是 groupadd 。 以下是一個例子: groupadd groupName 這個命令將創建一個新的用戶組,名稱為groupName。 在
Linux中的用戶與創建
Linux中的用戶與創建 用戶的類型 超級管理用戶: 權限最高的用戶(uid:0) #uid:是用戶的身份證號,Linux系統只認uid 普通用戶: 權限受限的用戶(uid:1000-
Linux驅動中procfs接口的創建
評論