原创 多態性

1、多態性是指發出同樣的消息被不同類型的對象接收時導致完全不同的行爲。 多態的實現:函數重載  運算符重載 (靜態,編譯時的多態)   虛函數(動態:運行時的多態) 聯編(binding):是指計算機程序自身彼此關聯的過程,聯編工作在編

原创 linux驅動程序調試常用方法

驅動程序開發的一個重大難點就是不易調試。本文目的就是介紹驅動開發中常用的幾種直接和間接的調試手段,它們是: 利用printk 查看OOP消息 利用strace 利用內核內置的hacking選項 利用ioctl方法 利用/proc 文件系統

原创 類與對象

1、類的組合:一個類內嵌其他類的對象作爲成員的情況,他們之間的關係是一種包含與被包含的關係。當創建一個類的對象時,如果這個類具有內嵌對象成員,那麼這個內嵌對象將首先被自動創建,因此在創建對象時既要對本類的基本類型數據成員進行初始化,又要對

原创 Linux異常處理體系結構

韋東山書讀後感 1. 對異常概念的理解     異常就是可以打斷CPU正常運行的事件,比如,外部中斷、未定義的指令、軟中斷等。當這些異常發生時,就打斷CPU的正常運行,跳到相應的異常處理程序去處理這些異常要求的一些操作。 2.  Lin

原创 linux2.6.32內核信號量的實現

首先看看信號量的相關數據結構: <include/linux/semaphore.h> struct semaphore {     spinlock_t lock; #lock應該是這個信號量的自旋鎖     unsigned in

原创 copy_to_user,copy_from_user,get_user和put_user函數實現

1、static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n) {  if (acce

原创 linux字符設備按鍵驅動之防抖動

按鍵驅動程序抖動問題會造成多次中斷髮生,實則可能是一次按下或釋放的操作。本驅動程序就是在按鍵驅動程序(中斷方式)的基礎之上,用定時器來去抖動。 當一次按鍵按下的時候,可能產生多個脈衝,我們可以等到最後一個脈衝平穩時再真正地做按下或釋放的

原创 linux內核宏定義

1. gcc的__attribute__編繹屬性 要了解Linux Kernel代碼的分段信息,需要了解一下gcc的__attribute__的編繹屬性,__attribute__主要用於改變所聲明或定義的函數或數據的特性,它有很多

原创 函數

在函數未被調用時,函數的形參並不佔有實際的內存空間,也沒有實際的值。只有在函數被調用時才爲形參分配儲存單元,並將是實參與形參結合。 1、值調用       值調用是指當發生函數調用時,給形參分配內存空間,並用實參來初始化形參,這一過程是單

原创 s3c2410_gpio_cfgpin與s3c2410_gpio_setpin函數

在arm的gpio字符設備驅動中主要由s3c2410_gpio_cfgpin與s3c2410_gpio_setpin函數來設置相應的寄存器值,下面我們來看着兩個函數所實現的功能: void s3c2410_gpio_cfgpin(uns

原创 linux字符設備註冊相關函數

本文介紹linux字符設備註冊相關的四個函數:cdev_alloc、cdev_init、cdev_add和cdev_del。這四個函數在文件:fs/char_dev.c中定義,在頭文件include/linux/cdev.h中聲明。其中c