Linux基礎系列-Kernel 初始化宏

在看linux代碼時,很多驅動的init函數裡面都有類似core_initcall,subsys_initcall的宏,一開始可能不明白這些宏是做什麼用的,後來可能猜得出是核心初始化時調用的,再後來可能對核心如何調用這些初始化的宏感興趣,這裡就總結一下,權當備忘。前言   宏定義__define_initcall(level,fn)對於核心的初始化很重要,它指示   編譯器在編譯的時候,將一系列初始化函數的起始地址值按照一定的順序  

Linux核心VFS—rootfs檔案系統載入

 linux-2.6.34源碼1.核心啟動調用start_kernel函數進行初始化。asmlinkage void __init start_kernel(void) //init\Main.c:528{    buffer_init();    key_init();    security_init();    vfs_caches_init(totalram_pages);//678行,vfs初始化    signals_init();}2.start_kernel調用vfs_cache

Linux基礎系列-記憶體與I/O操作

該文大部轉自宋寶華老師的文章,自是將它納入自己整理的一個小體系中,這個系列中如果沒有很合適的文章,會用原創補上。  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 對於提供了MMU(儲存管理器,輔助作業系統進行記憶體管理,提供虛真實位址轉換等硬體支援)的處理器而言,Linux提供了複雜的儲存管理系統,使得進程所能訪問的記憶體達到4GB。進程的4GB記憶體空間被人為的分為兩個

Linux基礎系列-定時器與時間管理

一段經典摘抄,OS的心跳,很重要,但很少引起人的注意,除非碰到相關問題。1、節拍率——HZ:在alpha體繫結構上是1024,而在其它平台上,都為10數量級倍。在嵌入式ARM上為100(2.6核心)。這個值的意義是什麼呢,也就是在arm平台上時鐘中斷100次,為一秒。一般的情況下編程者不要改變這個值,因為核心編很多代碼都是有時間要求的,而且核心編寫都在很多地方都做了相應的最佳化與折衷處理,改變HZ的值會對系統的效能有很大的影響。2、jiffies:這個值是用來記錄系統自系統啟動以來產生的節拍的總

Linux子系統系列-網路

該網卡了,之前一直不敢接觸的一塊。先簡單化在複雜化吧,可以提綱挈領,一覽全域。0,簡介1,架構2,實現 0,簡介網卡裝置在Linux的地位比較特殊,不同於其他裝置,網卡裝置沒有特定的檔案對應,Linux對他做了專門的處理。Linux的網路裝置子系統主要是基於Unix的Socket機制。在系統和驅動程式之間定義有專門的資料結構(sk_buff)進行資料的傳輸。網路子系統主要關注三個方面:1,發送和接收2,中斷3,時鐘

Linux子系統系列-USB

最近調查了MUSB的一個問題,將USB這塊的架構簡單梳理了一下,趁熱這次做下記錄,能提綱挈領即可/*****************************************************************/目錄0,背景1,USB 子系統結構2,USB

Linux子系統系列-TTY

處理過幾個串口的問題,這幾天才稍微有了些時間來整理一下這一塊的東西。目錄暫時大致分為以下幾部分吧:0,背景1,串口驅動的結構2,串口驅動的實現3,關於TTY core---------------------------------------------------------------------------------------------------0,背景往常review這塊代碼的時候,經常會被linux代碼樹中東一片西一片的uart,tty,serial

Linux基礎系列-訊號及訊號處理

基礎系列比子系統系列好些,這個系列大部分都是摘抄,很多兄弟在前面做了很好的總結,在此感謝他們。最近處理一個調試的問題,涉及到linux的訊號,在此總結一下,以作備忘+++++++++++++++++++++++++++++++++++++++++++++++++++++目錄:1,linux的訊號2,訊號處理3,debug中如何處理訊號4,如何在多線程應用中編寫安全的訊號處理函數 一,linux的訊號1,概念 訊號是在軟體層次上對中斷機制的一種類比,在原理上,一個進程收到一個訊號與處理器收到一個插

linux中鏈表函數問題

  25[ 標籤:linux,鏈表函數 ]在學習核心鏈表時,有下列函數希望比較懂的人來回答以下這些函數及結構體的作用struct list_head

Linux子系統系列-I2C

該篇不屬於原創,主要是最近解決了一個I2C的問題,期間看了很多大俠的博文,現在將這個子系統整理一下。整個I2C framework, eric.xiao大俠做了很詳盡的敘述,給了我很大協助,在此表示感謝,好像也是成都的,有緣....++++++++++++++++++++++++++++++++++++ 這裡用稍微“粗俗”一點的語言稍微記錄一下,方便記憶即可, i2c 驅動架構套件含三層:1,i2c core:提供通用的一些方法和通訊演算法供i2c bus操作使用,這是與具體硬體無關的一層。2,

Linux下計算程式已耗用時間的兩種方法

 http://article.pchome.net/content-323089.html1.以下是我在網上看到的: 有時候我們要計算程式執行的時間.比如我們要對演算法進行時間分析 ..這個時候可以使用下面這個函數. #include <sys/time.h> int gettimeofday(struct timeval *tv,struct timezone *tz); strut timeval { long tv_sec; /* 秒數 */ long tv_usec; /*

linux環境變數介紹

環境變數是和Shell緊密相關的,使用者登入系統後就啟動了一個Shell。對於Linux來說一般是bash,但也可以重新設定或切換到其它的

arm linux 系統調用實現

In this article we will dive into system call interface implementation in arm linux(with gnu eabi).我們將從bionic中的open函數開始追溯arm linux的系統調用實現(使用gnu eabi)。Linux的應用程式要想訪問核心必須使用系統調用從而實現從usr模式轉到svc模式。在arm中,這個過程是通過swi(或者和它等價的指令)來實現模式轉換的。從bionic

arm linux 中斷初始化

中斷機制的核心資料結構是 irq_desc,它完整地描述了一條中斷線(或稱為“中斷通道” ) 。irq_desc 結構在 include/linux/irq.h 中定義在 kernel/irq/handle.c 中有個全域 irq_desc 數組,描述了系統中所有的中斷線:handle_irq,這是個函數指標,指向的是一個高層次的中斷事件處理函數,定義了處理中斷事件的一種策略。在 kernel/irq/chip.c 中實現了 5

Linux中非強制中斷機制分析

 什麼是非強制中斷機制?Linux中的非強制中斷機制用於系統中對時間要求最嚴格以及最重要的中斷下半部進行使用。在系統設計過程中,大家都清楚中斷上下文不能處理太多的事情,需要快速的返回,否則很容易導致中斷事件的丟失,所以這就產生了一個問題:中斷髮生之後的交易處理由誰來完成?在前背景程式中,由於只有中斷上下文和一個任務上下文,所以中斷上下文觸發事件,設定標記位,任務上下文迴圈掃描標記位,執行相應的動作,也就是中斷髮生之後的事情由任務來完成了,只不過任務上下文採用掃描的方式,即時性不能得到保證。在Li

Linux Platform驅動程式架構解析

1.platform匯流排、裝置與驅動在Linux

Linux核心通過inline hook實現隱藏進程

這是我們作業系統的大作業。原理就是inline hook 那個 proc 檔案系統,根目錄下的 readdir 的函數。替換掉第三個參數,filldir。代碼爆短,60來行。Ubuntu 10.04

Linux設定網路檔案系統

(1) NFS的配置:首先在shell執行setup,快顯功能表介面後,選中System services,斷行符號進入系統服務選項菜單,在其中選中 [*]nfs ,然後退出.(2) vim /etc/exportsNfs伺服器的配置,設定檔/etc/exports:Exports檔案中一些選項的含義選項                                                 說明Ro                        該主機對該共用目錄有唯讀許可權Rw   

linux 自動執行 crontab學習筆記

在linux平台上如果需要實現任務調度功能可以編寫cron指令碼來實現。以某一頻率執行任務linux預設會啟動crond進程,crond進程不需要使用者啟動、關閉。 crond進程負責讀取調度任務並執行,使用者只需要將相應的調度指令碼寫入cron的調度設定檔中。 cron的調度檔案有以下幾個: crontab cron.d cron.daily cron.hourly cron.monthly cron.weekly 如果用的任務不是以hourly monthly

arm開發板將驅動靜態編譯到linux核心鏡像的步驟

一、準備好可以正常引導開發板的源碼二、在核心源碼kernel檔案夾的driver目錄下,建立ledtest檔案夾      #mkdir drivers/ledtest三、將“LED驅動實驗”的驅動程式拷貝到ledtest目錄下      #cp /opt/work/lab/led_driver/led_driver.c  drivers/ledtest/四、在drivers/ledtest/目錄下建立Kconfig以及Makefile檔案      Kconfig檔案     config

總頁數: 3662 1 .... 3183 3184 3185 3186 3187 .... 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.