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

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

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

3天內不再提示

Linux驅動debugfs接口代碼實現

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

實現效果

/sys/kernel/debug/目錄下創建一個ion/test文件,通過catecho的方式進行讀寫操作:

圖片

圖片

前期準備

內核配置打開debugfs:

CONFIG_DEBUG_FS=y

掛載debugfs文件系統:

mount -t debugfs none /sys/kernel/debug

代碼實現

讀寫變量:

#include < linux/debugfs.h >
#include < linux/module.h >
#include < linux/types.h >

static struct dentry *ion_dir;
static u64 test_u64 = 0;

static int __init debugfs_init(void)
{

    //創建一個/sys/kernel/debug/ion目錄
    ion_dir = debugfs_create_dir("ion", NULL);
    if (!ion_dir) {
        printk("ion_dir is nulln");
        return -1;
    }

    /* 創建/sys/kernel/debug/ion/test_u64文件 */
    debugfs_create_u64("test_u64", 0644,
                        ion_dir, &test_u64);

    return 0;
}

static void __exit debugfs_exit(void)
{
    debugfs_remove_recursive(ion_dir);
}

module_init(debugfs_init);
module_exit(debugfs_exit);
MODULE_LICENSE("GPL");

運行結果:

圖片

讀寫字符串:

#include < linux/debugfs.h >
#include < linux/module.h >
#include < linux/fs.h >
#include < linux/uaccess.h >
#include < linux/errno.h >
#include < linux/dcache.h >
#include < linux/types.h >

static char ion_buf[512] = "hellon";
static struct dentry *ion_dir;

static int ion_open(struct inode *inode, struct file *filp)
{
    //printk("ion openn");
    return 0;
}

ssize_t ion_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
{
    int retval = 0;
    if ((*offp + count) > 512)
        count = 512 - *offp;

    if (copy_to_user(buf, ion_buf+*offp, count)) {
        printk("copy to user failed, count:%ldn", count);
        retval = -EFAULT;
        goto out;
    }
    *offp += count;
    retval = count;
out:
    return retval;
}

ssize_t ion_write(struct file *filp, const char __user *buff, size_t count, loff_t *offp)
{
    int retval;

    if (*offp > 512)
        return 0;

    if (*offp + count > 512)
        count = 512 - *offp;

    if (copy_from_user(ion_buf+*offp, buff, count)) {
        printk("copy from user failed, count:%ldn", count);
        retval = -EFAULT;
        goto out;
    }
    *offp += count;
    retval = count;
out:
    return retval;
}

struct file_operations my_fops = {
    .owner = THIS_MODULE,
    .read = ion_read,
    .write = ion_write,
    .open = ion_open,
};

static int __init debugfs_init(void)
{
    printk("INIT MODULEn");

    //創建一個/sys/kernel/debug/ion目錄
    ion_dir = debugfs_create_dir("ion", NULL);
    if (!ion_dir) {
        printk("ion_dir is nulln");
        return -1;
    }

    /* 創建/sys/kernel/debug/ion/test文件 */
    struct dentry *filent = debugfs_create_file("test", 0644, ion_dir, NULL, &my_fops);
    if (!filent) {
        printk("test file is nulln");
        return -1;
    }

    return 0;
}

static void __exit debugfs_exit(void)
{
    debugfs_remove_recursive(ion_dir);
}

module_init(debugfs_init);
module_exit(debugfs_exit);
MODULE_LICENSE("GPL");

運行結果:

圖片

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

    關注

    33

    文章

    8639

    瀏覽量

    151385
  • 驅動
    +關注

    關注

    12

    文章

    1844

    瀏覽量

    85355
  • Linux
    +關注

    關注

    87

    文章

    11319

    瀏覽量

    209830
  • 代碼
    +關注

    關注

    30

    文章

    4801

    瀏覽量

    68734
收藏 人收藏

    評論

    相關推薦

    Linux驅動中創建procfs接口的方法

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

    如何去實現嵌入式LINUX驅動的軟件代碼

    如何對嵌入式LINUX驅動的硬件信息進行配置呢?如何去實現嵌入式LINUX驅動的軟件代碼呢?
    發表于 12-24 07:31

    Linux MTD 源代碼分析

    Linux MTD 源代碼分析 Linux MTD介紹:設備層和原始設備層的函數調用關系(紅色部分需要我們實現):NOR型Flash芯片驅動
    發表于 02-08 16:43 ?9次下載

    Linux內核源代碼漫游

    Linux內核源代碼漫游 本章試圖以順序的方式來解釋Linux代碼,以幫助讀者對源代碼的體系結構以及很多相關的unix特性的
    發表于 02-09 15:27 ?26次下載

    基于Linux下的LCD驅動程序實現

    基于Linux下的LCD驅動程序實現
    發表于 10-30 16:45 ?12次下載
    基于<b class='flag-5'>Linux</b>下的LCD<b class='flag-5'>驅動</b>程序<b class='flag-5'>實現</b>

    你知道Linux內核里的DebugFS

    DebugFS,顧名思義,是一種用于內核調試的虛擬文件系統,內核開發者通過debugfs和用戶空間交換數據。
    發表于 04-25 18:55 ?1892次閱讀
    你知道<b class='flag-5'>Linux</b>內核里的<b class='flag-5'>DebugFS</b>?

    要學會調試內核打印debugfs

    name是創建的目錄名字,parent是該目錄的父目錄。如果填NULL,則直接出現在debugfs的根目錄。
    發表于 04-27 19:01 ?1210次閱讀

    嵌入式Linux系統的驅動原理和使用ARM Linux實現SPI驅動程序的說明

    介紹嵌入式Linux系統的驅動原理;分析SPI協議的通信原理和微處理器S3C2440A中SPI接口的硬件結構;闡述SPI驅動程序的實現過程。
    發表于 11-14 16:36 ?11次下載
    嵌入式<b class='flag-5'>Linux</b>系統的<b class='flag-5'>驅動</b>原理和使用ARM <b class='flag-5'>Linux</b><b class='flag-5'>實現</b>SPI<b class='flag-5'>驅動</b>程序的說明

    linux spi應用層驅動以及回環測試代碼

    linux spi應用層驅動以及回環測試代碼
    發表于 10-22 15:47 ?2次下載

    linux系統的驅動實現原理

    原理就是將硬件操作的接口全都放到驅動鏈表上,在驅動實現device的open、read、write等操作。當然這樣做也有弊端,就是驅動fi
    發表于 11-02 09:59 ?921次閱讀

    Linux的PWM驅動框架及實現方法

    本文主要講述了Linux的PWM驅動框架、實現方法、驅動添加方法和調試方法。
    的頭像 發表于 05-14 15:24 ?1459次閱讀
    <b class='flag-5'>Linux</b>的PWM<b class='flag-5'>驅動</b>框架及<b class='flag-5'>實現</b>方法

    Linux內核代碼60%都是驅動

    為什么Linux內核代碼60%都是驅動? 如果每支持新的設備就加入驅動,內核會不會變得越來越臃腫?
    的頭像 發表于 07-11 11:48 ?994次閱讀
    <b class='flag-5'>Linux</b>內核<b class='flag-5'>代碼</b>60%都是<b class='flag-5'>驅動</b>?

    linux內核中的debugfs該怎樣去使用呢?

    debugfs可用于內核向用戶空間提供信息,debugfs是個小型的文件系統,與/proc和sysfs不同,debugfs沒有較為嚴苛的規則和定義,我們可以在里面放置想要的任何信息,以便于系統開發和調試。
    的頭像 發表于 08-21 09:01 ?3947次閱讀
    <b class='flag-5'>linux</b>內核中的<b class='flag-5'>debugfs</b>該怎樣去使用呢?

    Linux驅動函數接口說明

    函數接口說明 創建目錄、文件函數: /* 創建目錄 */ struct dentry *debugfs_create_dir( const char *name, struct dentry
    的頭像 發表于 09-27 11:20 ?485次閱讀
    主站蜘蛛池模板: 久草资源网站| 国外精品视频在线观看免费| 欧美性操| 奇米影视一区| 午夜资源| 亚洲aa| 日日舔夜夜操| 成人午夜网站| 国产综合视频在线观看| 天天摸日日干| 美女一级毛片免费观看| 天天操天天干天天| 好吊妞视频988在线播放| 天堂在线网站| 永久看免费bbbbb视频| 天天做天天爱天天爽| 一级在线观看视频| 天天干夜夜爽天天操夜夜爽视频| 欧美性色生活片天天看99| 神马午夜影院| 最新仑乱免费视频| 干天天| 69hdxxxx日本| 亚洲国产欧美视频| 亚洲欧美日韩动漫| 亚洲欧美高清在线| 日韩美女拍拍免费视频网站| 日韩精品一区二区三区毛片| 美女很黄很黄是免费的·无遮挡网站| 欧美成人一区二区三区在线电影| 狠狠五月深爱婷婷网免费| 国产在线一卡| 亚洲vv| 最近最新免费视频| 种子在线搜索| 性色爽爱性色爽爱网站| 欧美三级在线视频| 4hu44四虎在线观看| 午夜刺激爽爽视频免费观看| 偷操| 欧美ol丝袜高跟秘书在线播放|