在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux驅動中procfs接口的創建

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 11:24 ? 次閱讀

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/cpuinfocat /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_readseq_lseekseq_release

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8639

    瀏覽量

    151385
  • 驅動
    +關注

    關注

    12

    文章

    1844

    瀏覽量

    85355
  • Linux
    +關注

    關注

    87

    文章

    11319

    瀏覽量

    209830
收藏 人收藏

    評論

    相關推薦

    Linux驅動創建sysfs接口的方法

    在一些linux開發板,經常可以看到通過echo的方式來直接控制硬件或者修改驅動
    發表于 05-31 16:24 ?889次閱讀

    Linux驅動創建procfs接口的方法

    上篇介紹了Linux驅動sysfs接口創建,今天介紹procfs
    發表于 05-31 16:48 ?759次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>驅動</b><b class='flag-5'>中</b><b class='flag-5'>創建</b><b class='flag-5'>procfs</b><b class='flag-5'>接口</b>的方法

    Linux驅動創建debugfs接口的方法

    上篇介紹了procfs接口創建,今天再介紹一種debugfs接口創建
    發表于 05-31 16:53 ?1045次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>驅動</b><b class='flag-5'>中</b><b class='flag-5'>創建</b>debugfs<b class='flag-5'>接口</b>的方法

    簡析Linux proc文件系統

    linux 操作系統把虛擬地址分為用戶空間和內核空間,內核空間可以通過procfs把內核的數據呈現給用戶空間,用戶空間也可以把數據寫入到內核從而更改內核的行為,這在驅動很常見,最終目
    發表于 06-16 10:32 ?854次閱讀

    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 ?4462次閱讀
    手把手教你<b class='flag-5'>創建</b><b class='flag-5'>Linux</b>設備<b class='flag-5'>驅動</b>和應用程序

    Embeded linux的MMC驅動

    Embeded linux的MMC驅動
    發表于 05-14 16:08 ?1170次閱讀
    Embeded <b class='flag-5'>linux</b><b class='flag-5'>中</b>的MMC<b class='flag-5'>驅動</b>

    linux系統如何創建文本菜單

    當使用Linux系統時,最常見的Shell腳本交互類型是應用菜單(文本菜單),文本菜單的核心是case命令。 H. L.使用case命令完成菜單交互。 讓我們在下面創建一個簡單的腳本。 在Linux系統
    發表于 09-25 15:45 ?1161次閱讀

    如何在 Vitis 中使用 UIO 驅動框架創建簡單的 Linux 用戶應用

    Linux嵌入式設計中最基本的任務之一是創建用戶應用程序。 在本篇博文中,我們將探討如何在 Vitis 中使用 UIO 驅動框架創建簡單的 Linu
    的頭像 發表于 11-20 14:05 ?4322次閱讀

    LiteOS-A內核procfs文件系統分析

    文件系統,不存在硬盤當中,而是系統啟動時動態生成的文件系統,儲存在內存procfs文件系統通常掛載在/proc目錄下。 LiteOS-
    的頭像 發表于 12-02 21:10 ?1022次閱讀

    Linux驅動-spidev驅動使用方法

    Linux內核集成了spidev驅動,提供了SPI設備的用戶空間API,支持用于半雙工通信的read()和write()訪問接口以及用于全雙工通信和I/O配置的ioctl()接口;使用
    的頭像 發表于 04-07 10:22 ?5250次閱讀

    Linux如何如何為現有用戶創建主目錄?

    Linux系統,每個用戶都有一個主目錄,通常稱為home目錄,用于存儲用戶的個人文件和配置信息。然而,有時候我們會創建一個新的用戶,但是忘記或者沒有選擇為其創建一個主目錄。在這種情
    的頭像 發表于 05-12 16:24 ?2338次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>中</b>如何如何為現有用戶<b class='flag-5'>創建</b>主目錄?

    Linux驅動proc新接口介紹

    proc新接口 注意,在較新版本的內核procfs 的函數接口有所變化。 系統 內核版本 Linux 5.10.111 在
    的頭像 發表于 09-27 11:29 ?436次閱讀

    如何在Linux創建節點

    手把手教你在 Linux 創建節點,使其可以進行 cat 和 echo 。 我們測試驅動加載是否正常工作,一般都會寫應用程序去測試,這樣驅動
    的頭像 發表于 10-07 15:25 ?986次閱讀
    如何在<b class='flag-5'>Linux</b><b class='flag-5'>中</b><b class='flag-5'>創建</b>節點

    linux創建group的命令

    Linux創建用戶組的命令是 groupadd 。 以下是一個例子: groupadd groupName 這個命令將創建一個新的用戶組,名稱為groupName。 在
    的頭像 發表于 11-08 11:35 ?1497次閱讀
    主站蜘蛛池模板: 欧美不卡1卡2卡三卡老狼| 女同性进行性行为视频| 日韩一级片免费| 天天操夜夜操视频| 欧美日日日| 九九国产在线| 日本三级黄色网址| 免费观看黄网站| 欧美美女一区二区三区| 国产盗摄女厕美女嘘嘘| 中国男女全黄大片一级| 91av免费在线观看| 性欧美极品| 久久天天躁狠狠躁夜夜躁综合| 久久天天躁狠狠躁夜夜免费观看| 国产香蕉在线精彩视频| 啪啪91视频| 精品久久久久国产免费| 中文字幕一二三区乱码老| 男女视频在线看| 兔费看全黄三级| 怡红院色视频在线| 美欧毛片| 亚1州区2区三区4区产品| 性欧美人与zooz| 拍拍拍成人免费高清视频| 色婷婷成人网| 六月婷婷激情综合| 欧美白人极品性喷潮| 国产色av| 天天操天天插天天射| 婷婷成人丁香五月综合激情| 欧美日本一区二区| 四虎影院海外永久| 久久久久久噜噜噜久久久精品 | 欧美人与zoxxxx视频| 800免费资源网| 男人午夜视频在线观看| 国产盗摄女厕美女嘘嘘| 欧美一区二区高清| 亚洲免费看片|