Linux 使用者態與核心態的互動——netlink 篇

[size=4]Linux 使用者態與核心態的互動 ——netlink 篇[/size] 作者:Kendo 2006-9-3 這是一篇學習筆記,主要是對《Linux 系統核心空間與使用者空間通訊的實現與分析》中的源碼imp2的分析。其中的源碼,可以到以下URL下載: http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz 參考文檔 《Linux 系統核心空間與使用者空間通訊的實現與分析》 陳鑫

基於Linux系統中進程調度分析

本文作者(院 浩),請您在閱讀本文時尊重作者著作權。[摘要]Linux是一個多使用者多任務的作業系統,Linux中實現了對多個進程公平、高效的調度,並不是採用單一的調度策略,而是幾種調度策略有機地綜合應用。[關鍵詞] 進程調度 優先順序 時間片輪轉

Linux系統中如何添加自己的庫檔案路徑

        庫檔案在串連(靜態庫和共用庫)和運行(僅限於使用共用庫的程式)時被使用,其搜尋路徑是在系統中進行設定的。一般 Linux 系統把 /lib 和 /usr/lib兩個目錄作為預設的庫搜尋路徑,所以使用這兩個目錄中的庫時不需要進行設定搜尋路徑即可直接使用。對於處於預設庫搜尋路徑之外的庫,需要將庫的位置添加到庫的搜尋路徑之中。設定庫檔案的搜尋路徑有下列兩種方式,可任選其一使用:  在環境變數 LD_LIBRARY_PATH 中指明庫的搜尋路徑。  在 /etc/ld.so.conf

Linux 2.6 字元裝置驅動程式

○、說明 筆記適用於Linux的2.6.10以後的核心。筆記以Linux Device Driver3提供的scull程式(scull目錄中的main.c和scull.h)為記錄主線,並以該驅動程式中的各種系統調用和函數調用流程為記錄順序。比如,module_init( )和module_exit( )為相對應的一對系統調用,一般書籍中都會放在一起討論,但是本筆記卻不會這樣,而是在需要調用的時候才會涉及,因此module_init(

linux 2.6 輸入子系統 鍵盤驅動的實現

好久沒來了!寫點東西.關於linux 2.6下面的鍵盤驅動的實現.    2.6核心採用"input sub system" 的概念.將輸入驅動分成三塊: driver,input core和Event handler. "一個輸入事件,如滑鼠移動,鍵盤按鍵按下,joystick的移動等等通過 Driver -> InputCore -> Eventhandler -> userspace 的順序到達使用者空間傳給應用程式。"    關於輸入子系統詳細的文章有一個老兄寫了一篇:

Linux啟動和關閉時自動執行的所有指令檔

                    Linux使用的是基於運行級(run-levels) 概念的稱為SysVinit的專用啟動工具。它在不同的系統上可能是完全不一樣的, 所以不能認為一個指令碼在某個Linux發行版上工作正常。         SysVinit(從現在開始我們稱之為"init")以運行級的模式來工作,一般有7(從0到6)個運行級(實際上可以有更多的運行級,但都是用於特殊情況而且一般使用不到。參見

Linux Input Device

Linux 的 Input Device 是重要的一個 subsystem,在進行實例介紹前,先大略瞭解一下相關的 API。Linux Input Deviceinput.c是Linux的”input”驅動程式,主要支援鍵盤與滑鼠的輸入;input.c介面有趣的地方是採用了事件(event)的方式來處理輸入,以下是input.c介面重要的資料結構與函數:* struct input_dev* void input_event(struct input_dev *dev, unsigned

LINUX下的tty,console與串口

公司作一個嵌入式產品,用ARM核心,LINUX作業系統(不是uclinux)。我最近的工作是把一個原來作好的模組(用串口來通訊)掛到系統上,通過串口來控制該模組的一系列工作,並要求 作成單獨的驅動程式(不是通過應用程式來控制)。同時也想藉此熟悉LINUX下裝置驅動程式的開發方法。我們買的別的公司的開發板,LINUX現在已經能 跑起來,但支援人員和文檔基本沒有。最近剛開始學習LINUX,算是有了一些瞭解,但對TTY裝置、CONSOLE、串口之間的關係覺得比較混亂。這裡有 幾個問題請教:

Linux牆上時間

6.2.2  牆上時間牆上時間,在系統啟動過程中根據即時鐘(RTC)晶片儲存資料進行初始化,在系統運行期間由系統時鐘維護並在合適的時刻和RTC晶片進行同步。牆上時間儲存於系統核心變數xtime中,該變數記錄了現實世界中的年月日格式的時間,以便核心對某些對象和事件作時間標記,如記錄檔案的建立時間、修改時間、上次訪問時間,或者供使用者進程通過系統調用來使用。核心中使用struct

ARM與嵌入式linux如何入門

    由於很多人總問這個問題,所以這裡做一個總結文檔供大家參考。這裡必須先說明,以下的步驟都是針對Linux系統的,並不面向WinCE。也許你會 注意到,現在做嵌入式的人中,做linux研究的人遠比做WinCE的人多,很多產家提供的資料也是以linux為主。我一直很難理解,其實WinCE的 介面比linux的介面好看多了,使用起來也很方便,更為重要的是,WinCE的開發和Windows下的開發基本一樣,學起來簡單得多,但是學 linux或者使用linux做嵌入式的人就是遠比WinCE多。   

linux核心register_chrdev_region()系列函數

    核心提供了三個函數來註冊一組字元裝置編號,這三個函數分別是 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()。其中,register_chrdev_region()是為提前知道裝置的主次裝置號的裝置分配裝置編號。alloc_chrdev_region()

Linux 核心/sys 檔案系統之sysfs 屬性檔案

以上所舉的例子僅僅是一些常見的 sysfs 屬性用法,實際的系統中還常常有很多其它的從未見過的 sysfs 屬性,因此只有舉例是不夠的,即使維護了一份 sysfs 屬性用法參考大全也不夠,未來的核心版本還會出現新的 sysfs 屬性,因此還必須瞭解 Linux 核心代碼以找到實現這些屬性的代碼位置,以學會在沒有相應屬性文檔的情況從核心原始碼來分析其 sysfs 屬性功能。    Sysfs 源碼分析和編程實踐    從原始碼中理解 sysfs 屬性的用途    更多的 sysfs

Linux裝置驅動程式第三版學習(1)-字元裝置驅動程式源碼分析

一、insmod模組時調用module_init(scull_init_module),就來看一下這個函數: int scull_init_module(void)二、int scull_init_module(void){ int result, i; //聲明兩個整形變數 result,i dev_t dev = 0; //聲明一個dev_t類型的對象dev,預設初始值是0//下面這段代碼調用了alloc_chrdev_region方法動態產生裝置編號給dev,裝置的名稱是"scull” ,

Linux驅動的platform機制

最近研究了一下Linux驅動的platform機制。從Linux2.6起,引入了一套新的驅動管理和註冊機制:Platform_device和Platform_driver。Linux中大部分的裝置驅動,都可以使用這套機制,裝置用platform_device表示,驅動用platform_driver進行註冊。 Linux platform

深入理解硬碟的Linux分區

在學習 Linux 的過程中,安裝 Linux 是每一個初學者的第一個門檻。  在這個過程中間,最大的困惑莫過於給硬碟進行分區。  雖然,現在各種發行版本的 Linux 已經提供了友好的圖形互動介面,但是很多的人還是感覺無從下手。這其中的原因主要是不清楚 Linux 的分區規定,以及它下面最有效分區工具― Fdisk 的使用方法。  下面從這兩個方面入手,來講解這個困擾大家的問題。  Linux 的分區規定   1. 裝置管理 在 Linux 中,每一個硬體裝置都映射到一個系統的檔案,對於硬碟、

Linux裝置驅動程式第三版學習(12)- 與硬體通訊

繼續往下學習第九章的內容。從這一章開始才接觸到了一些實際的硬體裝置,硬體是我的強項啊,呵呵。加油! 一、I/O連接埠和I/O記憶體   在學習這部分之前,需要先明確一個概念:side

Linux裝置驅動程式第三版學習(2)-字元裝置驅動程式源碼分析(續)

前段時間一直在搞GPS導航系統的應用軟體,最近告一段落,繼續撿起linux裝置驅動,啃之!上次記錄了模組初始化代碼的學習,今次看看卸載模組的代碼。void scull_cleanup_module(void){ int i; dev_t devno = MKDEV(scull_major, scull_minor); //這個見過!得到當前模組的裝置號 if(scull_devices){ for(i = 0; i < scull_nr_

Linux裝置驅動程式第三版學習(11)- 分配記憶體

一、kmalloc函數內幕    kmalloc的使用已經比較熟悉了,它的函數原型是: 1: #include <linux/slab.h> 2: void *kmalloc(size_t size, int flags);其中size表示要分配的塊的大小, flags是分配標誌。下面分別詳細說明這兩個參數: * size參數   

Linux驅動開發環境配置(核心源碼樹構造)

來源:季義欽BLOG 作者:季義欽 初次接觸Linux驅動程式開發,買了一本《Linux裝置驅動程式》,第一件事當然就是構建開發環境了!!!它上面有一個Hello World的列子://hello.c#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT "Hello,

編寫Linux下Input裝置的檢測程式

    最近玩了下Android-x86的eclair,主題風格相對之前的1.6好看了很多,而且還加了不少之前沒有的功能。但是觸控螢幕不能用,在終端下用getevent命令查看事件資訊,發現得到的絕對座標有很大出入(4096*4096)。於是想自己試著去解決這個問題。同時在Ubuntu下測試,發現居然沒有getevent命令,當然可以用cat

總頁數: 3662 1 .... 381 382 383 384 385 .... 3662 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.