嵌入式Linux字元裝置驅動程式的主要資料結構

2021-06-10 13:40:52 字數 1578 閱讀 9309

1)struct cdev:在核心中代表乙個字元裝置驅動(char device,cdev),每乙個字元裝置驅動都有乙個struct cdev結構體變數與之對應,記錄該裝置驅動的相關資訊,主要包括裝置號dev_t dev和裝置操作函式集const struct file_operations *ops。定義如下:

struct cdev ;

2)struct file_operations:定義了裝置驅動程式與用來訪問操作核心之間的介面,該結構體定義的函式指來訪用來問實際的硬體裝置,不同的硬體裝置具有不同的讀寫函式。

struct file_operations ;

3)struct  inode:表示乙個檔案節點,記錄乙個檔案固有的通用的資訊,任何乙個檔案都有這個結構體變數。

struct inode ;

4)struct file:表示乙個已經開啟的檔案,記錄開啟檔案的屬性,包括讀寫屬性,linux中一切皆檔案,但是檔案一般分為磁碟檔案和特殊檔案,而這個特殊檔案就是裝置檔案,其中所有的外圍硬體裝置都當作裝置檔案進行處理。

struct file  f_u;

struct path f_path;

#define f_dentry f_path.dentry

#define f_vfsmnt f_path.mnt

const struct file_operations *f_op;

spinlock_t f_lock; /* f_ep_links, f_flags, no irq */

#ifdef config_smp

int f_sb_list_cpu;

#endif

atomic_long_t f_count;

unsigned int f_flags;

fmode_t f_mode;

loff_t f_pos;

struct fown_struct f_owner;

const struct cred *f_cred;

struct file_ra_state f_ra;

u64 f_version;

#ifdef config_security

void *f_security;

#endif

/* needed for tty driver, and maybe others */

void *private_data;

#ifdef config_epoll

/* used by fs/eventpoll.c to link all the hooks to this file */

struct list_head f_ep_links;

#endif /* #ifdef config_epoll */

#ifdef config_debug_writecount

unsigned long f_mnt_write_state;

#endif

};

嵌入式linux字元裝置驅動

arm linux 驅動 抵岸科技 1.我們需要先呼叫register chrdev region 或 alloc chrdev region 來向系統申請裝置號 int register chrdev region dev t first,unsigned int count,char name ...

嵌入式linux字元裝置驅動

1.我們需要先呼叫register chrdev region 或 alloc chrdev region 來向系統申請裝置號 int register chrdev region dev t first,unsigned int count,char name 函式通過已知的裝置號first來註冊...

嵌入式linux字元裝置註冊裝置驅動

包含初始化巨集定義的標頭檔案,中的module init和module exit在此檔案中 include 包含初始化載入模組的標頭檔案,中的module license在此標頭檔案中 include 定義module param module param array的標頭檔案 include 定義...