LDD3 讀書筆記 之 第 3 章 字元驅動

2021-09-08 14:40:32 字數 1865 閱讀 2963

本章介紹了下面符號和標頭檔案. struct file_operations 和 struct file 中的成員的列表這裡不重複了.

#include

dev_t

dev_t 是用來在核心裡代表裝置號的型別.

int major(dev_t dev);

int minor(dev_t dev);

從裝置編號中抽取主次編號的巨集.

dev_t mkdev(unsigned int major, unsigned int minor);

從主次編號來建立 dev_t 資料項的巨集定義.

#include

"檔案系統"標頭檔案是編寫裝置驅動需要的標頭檔案. 許多重要的函式和資料結構在此定義.

int register_chrdev_region(dev_t first, unsigned int count, char *name)

int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name)

void unregister_chrdev_region(dev_t first, unsigned int count);

允許驅動分配和釋放裝置編號的範圍的函式. register_chrdev_region 應當用在事先知道需要的主編號時; 對於動態分配, 使用 alloc_chrdev_region 代替.

int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);

老的( 2.6 之前) 字元裝置註冊函式. 它在 2.6 核心中被模擬, 但是不應當給新**使用. 如果主編號不是 0, 可以不變地用它; 否則乙個動態編號被分配給這個裝置.

int unregister_chrdev(unsigned int major, const char *name);

恢復乙個由 register_chrdev 所作的註冊的函式. major 和 name 字串必須包含之前用來註冊裝置時同樣的值.

struct file_operations;

struct file;

struct inode;

大部分裝置驅動使用的 3 個重要資料結構. file_operations 結構持有乙個字元驅動的方法; struct file 代表乙個開啟的檔案, struct inode 代表磁碟上的乙個檔案.

#include

struct cdev *cdev_alloc(void);

void cdev_init(struct cdev *dev, struct file_operations *fops);

int cdev_add(struct cdev *dev, dev_t num, unsigned int count);

void cdev_del(struct cdev *dev);

cdev 結構管理的函式, 它代表核心中的字元裝置.

#include

container_of(pointer, type, field);

乙個傳統巨集定義, 可用來獲取乙個結構指標, 從它裡面包含的某個其他結構的指標.

#include

這個包含檔案宣告核心**使用的函式來移動資料到和從使用者空間.

unsigned long copy_from_user (void *to, const void *from, unsigned long count);

unsigned long copy_to_user (void *to, const void *from, unsigned long count);

在使用者空間和核心空間拷貝資料.

LDD3讀書筆記(第3章 字元驅動)

include dev t dev t 是用來在核心裡代表裝置號的型別.int major dev t dev int minor dev t dev 從裝置編號中抽取主次編號的巨集.dev t mkdev unsigned int major,unsigned int minor 從主次編號來建立...

LDD3讀書筆記(第5章 記憶體分配)

include void kmalloc size t size,int flags 記憶體分配函式 後備快取記憶體 include kmem cache t kmem cache create const char name,size t size,size t offset,unsigned l...

LDD3讀書筆記(第二章)

從第二章開始要涉及到程式設計的內容,本章主要以模組程式設計和核心程式設計,我們將構造乙個簡單的模組。hello world hello world 是我們接觸程式設計最為簡單的程式,我們講述的是核心模組程式設計而不是應用程式程式設計,下面給大家看乙個完整的模組 include include mod...