原创 Linux 內核中的 cdev_alloc和cdev_add

Linux內核中每個字符設備都對應一個 cdev 結構的變量,下面是它的定義:linux-2.6.22/include/linux/cdev.hstruct cdev { struct kobject kobj;          //

原创 Linux驅動程序開發 006- 內核同步技術

序言 在前面,我們介紹了常用兩種內核同步技術:自旋鎖和信號量。這裏我們接着介紹其他的內核同步技術。 內核同步技術 前面我們提到,信號量是基於原子操作的,它的信號初始值count是一個原子類型,下面我們就對

原创 Linux音頻編程1

Linux音頻編程1雖然目前Linux的優勢主要體現在網絡服務方面,但事實上同樣也有着非常豐富的媒體功能,本文就是以多媒體應用中最基本的聲音爲對象,介紹如何在Linux平臺下開發實際的音頻應用程序,同時還給出了一些常用的音頻編程框架。一、

原创 Linux驅動程序開發008 - 設備IO

序言:前面我們提到,設備驅動程序的主要功能操作設備,更準確的說就是如何操作設備寄存器或設備內存。不同的計算機體系結構提供了不同的設備操作接口,主要就是IO端口映射(Ports)或IO內存映射(Memory-Map )。例如X86平臺,它對

原创 Linux驅動程序開發 005- 內核同步技術

序言 就像我們在操作系統裏學習的那樣,如果多個程序(進程或線程)同時訪問臨界區數據就會發生競爭。存在競爭條件的程序會產生不可預料的結果。消除競爭的方法一般就是同步的訪問臨界區數據(原子訪問)。Linux內