linux 核心 驅動

2021-09-29 20:03:40 字數 988 閱讀 8034

首先 :  

1. 建立裝置  

//分配cdev結構體

if (globalmem_major)

//手動分配

ret = register_chrdev_region(devno, 1, "globalmem");

else

globalmem   提供給上層使用 。   

2   。

建立核心裝置 

struct globalmem_dev ;

globalmem_devp = kzalloc(sizeof(struct globalmem_dev), gfp_kernel);

int err, devno = mkdev(globalmem_major, index);

//對cdev結構體設定file_operations結構體

cdev_init(&dev->cdev, &globalmem_fops);

dev->cdev.owner = this_module;

//將cdev結構體註冊入系統,系統能夠識別呼叫當前cdev

err = cdev_add(&dev->cdev, devno, 1);

if (err)

printk(kern_notice "error %d adding globalmem%d", err, index);

//實現建立檔案系統節點

dev->lkm_memory_class = class_create(this_module, "globalmem");

if (is_err(dev->lkm_memory_class))

return ptr_err(dev->lkm_memory_class);

device_create(dev->lkm_memory_class, null,mkdev(globalmem_major,0),null,"globalmem");

struct cdev __randomize_layout;

新增linux核心驅動

1.將核心驅動.ko放入 lib modules 3.2.0 23 generic kernel drivers 目錄下 2.執行depmod a來解決依賴 掃瞄driver下的驅動依賴關係 命令執行完成後,會自動生成modules.dep 和modules.alias。dep為依賴關係。3.更新當...

linux核心驅動 poll waitqueue

在操作io裝置時,讀取裝置狀態或者資料時,如果採用輪詢方式,會占用大量的cpu資源,這種方式肯定是不可取,所以需要在核心驅動支援非同步通知方式,等到裝置準備好,再通知應用程式,其他時間應用程式應當處於休眠狀態,讓出cpu。本篇介紹poll的使用方法。1 首先定義乙個wait queue head t...

Linux驅動 核心延時測試

linux驅動 核心延時測試 環境 主機 fedora12 目標板 mini6410 目標板linux核心版本 2.6.38 實現功能 延遲2s 方法1 利用系統全域性變數jiffies jiffies記錄系統節拍,每一次節拍,核心時鐘中斷函式會將jiffies加1.hz在arm中為100,表示1s...