使用核心定時器的second字元裝置驅動

2021-07-01 23:14:52 字數 1826 閱讀 1850

second.c:

#include

#include

#include//file_operations

#include//dev_t

#include

#include//kcalloc

#include//copy_to_user,copy_from_user

#include//中斷

#include

#define second_major 112

static int second_major = second_major;

//second裝置結構體

struct second_dev;

struct second_dev *second_devp;

//定時器處理函式

static void second_timer_handle(unsigned long arg)

//檔案開啟函式

int second_open(struct inode *inode,struct file *filp)

//檔案釋放函式

int second_release(struct inode *inode,struct file *filp)

//讀函式

static ssize_t second_read(struct file *filp,char __user *buf,size_t count,loff_t *ppos)

//檔案操作結構體

static const struct file_operations second_fops = ;

//初始化並註冊cdev

static void second_setup_cdev(struct second_dev *dev,int index)

//裝置驅動模組載入函式

static __init int second_init(void)

if(ret < 0)

return ret;

//動態申請裝置結構體內存

second_devp = kmalloc(sizeof(struct second_dev),gfp_kernel);

if(!second_devp)

memset(second_devp,0,sizeof(struct second_dev));

second_setup_cdev(second_devp,0);

return 0;

fail_malloc:unregister_chrdev_region(devno,1);

return ret;

}//模組解除安裝函式

void second_exit(void)

module_author("zhyang");

module_license("dual bsd/gpl");

module_param(second_major,int,s_irugo);

module_init(second_init);

module_exit(second_exit);

test_second.c:

#include

#include

int main()

}}else  printf("device open failure\n");

close(fd);

}以上**在3核心版本中測試通過

核心 核心定時器的使用

概要 核心定時器是核心用來控制在未來某個時間點 基於jiffies 排程執行某個函式的一種機制,其實現位於 和 kernel timer.c 檔案中。被排程的函式肯定是非同步執行的,它類似於一種 軟體中斷 而且是處於非程序的上下文中,所以排程函式必須遵守以下規則 1 沒有 current 指標 不允...

核心定時器的使用

核心定時器的使用 linux 核心定時器是核心用來控制在未來某個時間點 基於 jiffies 排程執行某個函式的一種機制,其實現位於 和kernel timer.c 檔案中。被排程的函式肯定是非同步執行的,它類似於一種 軟體中斷 而且是處於非程序的上下文中,所以排程函式必須遵守以下規則 1 沒有 c...

核心定時器的使用

概要 核心定時器是核心用來控制在未來某個時間點 基於jiffies 排程執行某個函式的一種機制,其實現位於 和 kernel timer.c 檔案中。被排程的函式肯定是非同步執行的,它類似於一種 軟體中斷 而且是處於非程序的上下文中,所以排程函式必須遵守以下規則 1 沒有 current 指標 不允...