Time of Update: 2018-12-03
在講進程管理專題最核心的課題——進程建立之前,我們先簡單地回顧一下上一篇博文的sys_clone()系統調用:asmlinkage int sys_clone(struct pt_regs regs){ unsigned long clone_flags; unsigned long newsp; int __user *parent_tidptr, *child_tidptr; clone_flags = regs.ebx; newsp = regs.ecx;
Time of Update: 2018-12-03
1 進程切換之前的工作由於每個進程共用CPU寄存器(咱們就當是單CPU吧),因此在恢複一個進程之前,核心必須確保每個寄存器裝入掛起進程時的值,他們就叫“硬體上下文”。在Linux中,進程硬體上下文得一部分放在TSS段,主要用於對核心態堆棧進行定址,而剩餘部分放在核心態堆棧中。我們再回憶一下硬體中TSS段的內容:struct tss_struct { unsigned short back_link,__blh; unsigned long esp0;
Time of Update: 2018-12-03
Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4下面是一個Windows Mobile6上的一個線程的實現體。我要提醒一下1. WinCE kernel是multi-task環境2. 這個線程的實現看起來沒什麼特別結論這樣一個thread直接會導致這個mobile系統無法正常使用,power button失效,keypad無法使用。再次引導你誤判WinCE
Time of Update: 2018-12-03
最近free download一個Linux kernel
Time of Update: 2018-12-03
來自精通Linux裝置驅動程式開發:平台裝置驅動中的平台可看做一種偽匯流排,通常用於將整合進片上系統的輕量級裝置和Linux裝置模型串連在一起。平台由平台裝置和平台裝置驅動程式組成。(來自:http://blog.tianya.cn/blogger/post_show.asp?BlogID=862226&PostID=21247170)裝置驅動中,平台裝置作為一個虛擬裝置和匯流排可以大大簡化設計難度。核心在初始化過程中,首先初始化虛擬匯流排,其次將裝置添加到虛擬匯流排上,最後註冊裝
Time of Update: 2018-12-03
HCI Packet包括四種,即Command,Event,ACL和SCO/eSCO,對應到MS-Stack中的定義,即為COMMAND_PACKET ,EVENT_PACKET,DATA_PACKET_ACL和DATA_PACKET_SCO。如下(詳細參照bt_hcip.h):enum HCI_TYPE { COMMAND_PACKET = 1, DATA_PACKET_ACL = 2, DATA_PACKET_SCO = 3,
Time of Update: 2018-12-03
從下到上,依次是ALSA driver、ALSA lib、ALSA application:ALSA application包括aplay、arecord,他們屬於ALSA utils的工具。這些工具用於測試驅動非常的好。ALSA lib提供諸如開啟,關閉,播放的函數庫。ALSA driver是後來才加入了對SOC的支援,並且將hardware audio
Time of Update: 2018-12-03
輸入:apt-cache search linux-source //查看核心版本輸入:apt-get install linux-source-3.0.0 //擷取對應版本的核心,預設安裝在/usr/src目錄下見:Ubuntu下構建核心源碼樹的方法 ubuntu下編譯本機模組是否需要下載核心源碼呢?答案是可以的。dmesg | tail -1
Time of Update: 2018-12-03
branch instruction的指令如下:0xEA00088E對應的二進位是:11101010000000000000100010001110分析如下:1110是無條件的意思101是branch instruction的標誌000000000000100010001110一共24位,就是我們的0x88E,可以表示的最大數是2的24次方,即64MB,所以branch instruction可以前跳或者後跳32MB的空間。然後然我們看看0x88E到底怎麼回事:0x88E*4+8=0x2240
Time of Update: 2018-12-03
fork()與vfock()都是建立一個進程,那他們有什麼區別呢?總結有以下三點區別:1. fork():子進程拷貝父進程的資料區段,程式碼片段 vfork():子進程與父進程共用資料區段2. fork():父子進程的執行次序不確定 vfork保證子進程先運行,在調用exec或exit之前與父進程資料是共用的,在它調用exec或exit之後父進程才可能被調度運行。3. vfork
Time of Update: 2018-12-03
一.checkout 簽出 cvs checkout [-ANPRcflnps] [-r rev| -D date] [-d dir] [-j rev1] [-j rev2] [-k kopt] modules... -A 重設所有粘性標記/日期/kopts -N 如果指定了-d選項,不要使用短模組路徑 -P 刪除空目錄 -R 操作應用於子目錄 -c 顯示模組資料庫的內容 -f
Time of Update: 2018-12-03
二、藍芽串連方法第一次使用需要用手機與藍芽耳機配對,配對成功後才能夠使用。配對方法:1.啟動藍芽耳機:按住藍芽開關鍵,等藍燈變長亮(一直亮)狀態(有的藍芽耳機是紅藍燈交替閃爍),此時藍芽耳機處於配對狀態(此過程大概需要按住10秒左右,按的時候中間一定不能鬆手,否則需要關機後重新操作);2.啟動手機的藍芽功能,然後設定手機搜尋藍牙裝置;3.從搜尋到的裝置列表中選擇產品的型號,按提示輸入配對碼“0000”(有的不需要輸入配對碼),藍紅燈快速閃爍兩下後表明配對成功,並將藍芽串連至手機,在部分手機中可能
Time of Update: 2018-12-03
我遇到過太多太多自以為是的例子,有時候包括自己。超級解霸之父梁肇新在他書中提到程式員進階的幾個階段,我非常同意這位大師的觀點。其中有個階段就是學習驅動程式和理解作業系統的核心,從1990年一直有以研究linux核心所引發的研究作業系統核心的一股風潮。Ring0,Ring3,虛擬記憶體,系統調用,進程同步,缺頁等等,有一些聽起來很炫的專業詞彙,更有甚者,以為自己能說出這些詞,自己就是高手了。Ring0/3,如果你不懂Intel IA-32體系架構,那麼請你謙虛一點。虛擬記憶體,page pool,
Time of Update: 2018-12-03
我的筆記本是thinkpad,外接顯示器設定解析度為1680x1050.首先,熟悉一下命令:xrandr 命令列可以很方便地切換雙屏,常用方式如下,其他的可以自己探索:xrandr --output VGA --same-as LVDS --auto開啟外接顯示器(最高解析度),與筆記本液晶螢幕顯示同樣內容(複製)xrandr --output VGA --same-as LVDS --mode
Time of Update: 2018-12-03
“代碼執行環境”不知道有沒有這個專有名詞。工作的經曆讓我感到這個概念需要攤出來好好說說。它是衡量你coding水平的重要指標。從電腦發明到現在,人們一直在努力使更多的人“不理解”這個概念,於是軟體中的層級概念就隨之產生了。核心,驅動,應用程式等的3個等級的大致的劃分,也基本劃分出了3種類型的程式員。作業系統的著作者更是竭力在營造一個好的“環境”給我們的代碼。我們---“普通的程式員”則越來越傻。其實可以這樣說,“代碼執行環境”的深刻理解,是你有資格成為“高手”的必要條件。當代的多任務作業系統使我
Time of Update: 2018-12-03
由於大二的經驗,我OS的bootloader很快就被拿到了gcc下面,運行正常,從中得出了個結論,中斷的啟用對發現你的boot code down機的情況是個絕佳的工具,它幫你撲捉出錯的一瞬間。如果不啟用,代碼中的記憶體保護性錯誤,讓你很難找到哪裡的問題,這個思想已經被我運用到了現在從事的工作中。printk一定得有,我需要看kernel
Time of Update: 2018-12-03
============================ Wifi 啟動代碼流程 ====================1、系統啟動 首先載入init.rc,這個檔案 會載入所有service,init是linux啟動的 第一個 使用者空間 的應用(屬於linux進程,不屬於Android應用)。2、init.rc裡有以下這句話:Service wpa_supplicant /system/bin/wpa_supplicant –Dwext –iwlan0 –d –c
Time of Update: 2018-12-03
下面這封信,是我今天準備對我的兩位老大寫的郵件。我真的很受不了這種不被人信任的感覺。可是想想這封信發出去確實對我不會有什麼好處,顯示我的氣量很小,不成熟。最後還是沒寫下去。作為26歲的心潮澎湃的紀念,我決定將它留在我的blog上。我不知道各路大俠,遇到這樣的事情時,你是如何處理的?你會發火麼?(其實我也只是心裡比較火)。你會有不被信任感嗎?到底應該和其他的類似這樣的team member如何合作呢? Dear J & D, 我非常樂意為other
Time of Update: 2018-12-03
K9K8G08U1M512Mx8BitsPackage Type: 48-Pin TSOP1這是典型的NAND flash,由block組成,每一個block包含64個Pages,而一個page是2k+64=2048+64=2112位元組。對於一個page,0~2047個位元組用來儲存資料,2048~2111,共64個位元組,Spare Area,用來儲存page中每個sector的資訊,其中第一個16位元組用於描述第一個512個位元組,第二個16位元組用於描述第二個512個位元組,以此類推,
Time of Update: 2018-12-03
上海的FM交通音樂台,是廣大司機朋友們的好朋友。它會即時的播報一些交通狀況。但是很可惜,只有聽得懂中文,並且能把上海地圖牢記在心中的朋友,才能知道交通台在說些什麼。“延安西路暢通。。。”,假如你是老外,或者初到上海,他們交通台播報的即時交通訊息你就無法享用了。 這就是智能交通系統的雛形。從整個城市的角度看,即時的廣播路況可以極大的提高道路的利用率,不至於有的道路堵死,有的道路沒車開。FM語音廣播是只是一個過渡產品,以後的交通狀況資訊還是通過FM廣播,但是不是語音,是數字編碼。你作為一個司機,只需