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 定義...