原创 linux內核--定時器API

/**<linux/timer.h> 定時器結構體 struct timer_list { ........ unsigned long expires; --內核希望定時器執行的jiffies值 void

原创 高級字符驅動之堵塞與非堵塞IO

/** *此實例涉及到線程的掛起與競態,字符IO的堵塞與非堵塞 */ struct scull_pipe { wait_queue_head_t inp, outp; char *buffer, *end

原创 定位設備--llseek實現

/** 如果llseek實現lseek和llseek系統調用,如果未定義llseek方法, 內核默認修改file結構體中的f_pos成員來實現定位,如果是操作一個 設備,則需提供自己的llseek方法。 不聲明llseek方法默

原创 linux中管道(pipe)一談

/*********************************************** 管道(pipe)是Linux上進程間通信的一種方式,其是半雙工(數據流只能在一個方向上流動(還需要經過內核),及要麼是接收,要麼

原创 c語言中--typeof--關鍵字用法

C語言中 typeof 關鍵字是用來定義變量數據類型的。在linux內核源代碼中廣泛使用。 下面是Linux內核源代碼中一個關於typeof實例: #define min(x, y) ({ \

原创 pthread_cancel函數注意事項

/************************************************** 相關函數: #include <pthread.h> int pthread_cancel(pthread

原创 Qt程序啓動畫面

QSplashScreen類 一些程序使用程序啓動畫面對緩慢的啓動過程進行掩飾。類會在主窗口出現之前顯示一個 圖片,也得以在圖片是顯示信息以提示程序運行進度。 int main(int argc, char **argv)

原创 linux下避免殭屍進程的幾種方法

linux下我們可以調用fork函數創建子進程,創建的子進程將會得到父進程的數據空間、堆、棧......副本(採用寫時複製機制),子進程將會繼承父進程的信號掩碼、信號處理方式、當前工作目錄、會話id、組id......。當

原创 madplay移植

移植前需求準備: a. 源碼包: 1. libid3tag-0.15.1b.tar.gz 2. libmad-0.15.1b.tar.gz 3. madplay-0.15.2

原创 popen和pclose詳解及實例

popen函數是標準c提供的一個管道創建函數,其內部操作主 要是創建一個管道,調用fork創建子進程,關閉不需用的文件描述符,調用exec函數族執行popen的第一個參數。然後等到關閉。 也就是說我們可以傳遞一個命令(ls

原创 c++異常處理--創建自己的異常處理類

複習了一下c++中的異常處理! 繼承exception類 class myException : public std::exception { public: explicit myEx

原创 git 配置

安裝 git apt install git 配置 git 一. 添加用戶明與郵箱 git config --global user.name "XXXX" git config --global user.email "

原创 grep過濾目錄或文件方法

在使用grep在指定目錄下查找包含指定字符串的文件是,我們想過濾(即不遞歸查詢指定目錄)時!可以使用 –exclude-dir 參數 單個目錄實例 搜索.目錄但不搜索在.目錄下的.svg目錄中包含“string”字符串的文件 gre

原创 ORTP-0.27.0移植

注意: a. 對於0.27一下版本的ORTP的交叉編譯則沒有一下依賴庫 b. 交叉編譯工具鏈是: arm-linux-gnueabihf-gcc-4.9.1 (4.9版本一下的編譯bctoolbox出錯)