Linux中的errno

1. 在linux中的errno是多安全執行緒的。原因是errno被定義成一個整形指標extern int *__errno_location()#define errno (int *__errno_location())不同線程調用__errno_location返回的地址則各不相同 2.char *strerror(int errno)看錯誤碼的錯誤語段 3.void perror(const char *s);上一個函數發生錯誤的原因輸出到標準錯誤(stderr) 

Linux使用和產生庫

基本概念 庫有動態與靜態兩種,動態通常用.so為尾碼,靜態用.a為尾碼。例如:libhello.so libhello.a 為了在同一系統中使用不同版本的庫,可以在庫檔案名稱後加上版本號碼為尾碼,例如: libhello.so.1.0,由於程式串連預設以.so為檔案尾碼名。所以為了使用這些庫,通常使用建立符號串連的方式。 ln -s libhello.so.1.0 libhello.so.1 ln -s libhello.so.1 libhello.so 使用庫 當

linux 自動執行 crontab學習筆記

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

linux 2.6核心 字元裝置驅動 相關函數

概述本文介紹linux字元裝置註冊相關的四個函數:cdev_alloc、cdev_init、cdev_add和cdev_del。這四個函數在檔案:fs/char_dev.c中定義,在標頭檔include/linux/cdev.h中聲明。其中cdev_alloc和cdev_init是一對“互斥”函數,以不同的方式完成“相同”的功能:為函數cdev_add做前期準備。cdev_alloc504 /**505  * cdev_alloc() - allocate a cdev structure506

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

轉:面對不斷升級的核心,如何學習linux裝置驅動

面對不斷升級的linux核心、GNU開發工具、linux環境下的各種圖形庫,很多linux應用程式開發人員和linux裝置驅動開發人員即興奮,又煩躁。興奮的是新的軟體軟體、工具給我提供了更強大的功能,煩躁的是適應新軟體的特性、搭建新環境是一項非常繁瑣的事情。本文想從以下3個方面探討一下“面對不斷升級的核心,如何學習linux裝置驅動”。        核心發展的現狀及其對技術人員的影響        

linux 根檔案系統製作

昨天花了我幾個小時的時間,最後終於把那個根檔案系統製作好了~(一):首先linux根檔案系統的製作需要的開發環境。1:移植Linux核心版本:  linux-3.0.1  (只要能用就行)2:交叉編譯工具:arm-linux-gcc 4.3.2(任選)3:檔案系統製作工具:Busybox-1.13.3(任選)4:etc.tar.gz(二):交叉編譯環境的搭建(這一步我在我的部落格其他文章裡面有

交叉編譯工具 arm-linux-gcc 安裝

 汗!!!這個部落格是前幾天寫的,不過其中有個錯誤,導致在編譯uboot的時候出現錯誤,才發現原來有個問題:解壓完arm-linux-gcc-4.4.3.tgz後,配置的檔案錯誤,之前在一本書看到的是配置/etc/bash.bashrc檔案,可這樣是錯誤的,應該配置/etc/profile檔案。 移植到開發板上的每一個代碼都必須通過交叉編譯後才能在開發板的環境中運行。      這裡我用的是arm-linux-gcc-4.4.3.tgz,當然可以到網上下載其他版本的,也可以自己搭建的。記得以前搭

嵌入式Linux系統學習規劃

嵌入式Linux作業系統學習規劃,線路清晰,最重要的是其中推薦的書籍,如果打算進入這行發展,必須都要學習!!!ARM+LINUX路線,主攻嵌入式Linux作業系統及其上應用軟體開發目標: (1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9) (2) 必須掌握一個嵌入式作業系統 (初步定為uclinux或linux,版本待定) (3) 必須熟悉嵌入式軟體開發流程並至少做一個嵌入式軟體項目。 從事嵌入式軟體開發的好處是: (1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業

記憶體管理-Linux核心讀書筆記(轉自搜狐達人空間)

Linux核心的記憶體管理程式採用了分頁管理方式,利用頁目錄和頁表結構處理核心中其他部分代碼對記憶體的申請和釋放操作.記憶體的管理是以記憶體頁面為單位進行的,一個記憶體頁面是指地址連續的4KB記憶體. Linux 0.11核心的記憶體管理目錄中共有三個檔案,Makefile , memory.c , page.s. 其中page.s 僅包含記憶體頁異常的中斷處理過程,主要實現了對缺頁和頁防寫保護的處理. memory.c是記憶體頁面管理的核心檔案. 總體功能描述 Intel 80x86

《linux裝置驅動程式III》學習—第六章

    第六章  進階字元驅動程式操作   前面已經構造了結構完整的可讀可寫的字元裝置驅動程式,這裡介紹進階的操作。  

linux網路位址轉譯函數

在socket編程時,會出現指定了ip,連接埠號碼,卻連不上,這是因為網路地址跟本地主機地址的字元順序不一樣導致的。在linux下提供了一些操作函數,如下: unsigned long int htonl(unsigned long int hostlong);用來將參數指定的32位hostlong 轉換成網路字元順序。 unsigned short int htons(unsigned short int hostshort);

《linux裝置驅動程式III》學習—第一章

1,裝置驅動作用的理解        裝置驅動程式是位於作業系統與硬體之間的軟體層,為上層應用程式提供一個可以訪問硬體的介面,隱藏了對硬體寄存器等的具體操作。當使用者層調用的時候可以把硬體看成是核心的一個介面函數就行了。 2,unix中的一點思想        機制和策略,是unix設計背後影藏的最好思想之一。       

《linux裝置驅動程式III》學習—第二章

 1,介紹最簡單的hello world 驅動程式。。。。之前已經看過了,這部分過2,模組程式與應用程式的區別     @應用程式從頭到尾按順序執行單個任務。模組程式要先註冊到核心,為的是給調用做準備     @退出時,應用程式的資源系統會回收,模組程式要手動     @模組程式不能像應用程式那樣串連庫函數,它調用的只能是核心中的標頭檔 include/linux ,linux/asm     @模組運行在核心空間,應用程式運行在使用者空間3,核心中的並發----驅動也應該考慮的問題    

《linux裝置驅動程式III》學習—第三章

 1,這本書是以scull 為例子來介紹字元裝置驅動程式的編寫的。  scull是一個操作記憶體地區的字元裝置驅動程式。2,註冊裝置號的擷取、登出及註冊  @擷取dev_t 類型裝置號   裝置在核心中以dev_t 類型儲存主次裝置號的。用MKDEV(major,minor) 來獲得dev_t 類型的裝置號,相反,用MAJOR(dev_t  dev) 轉換主裝置號,MINOR(dev_t dev) 轉換出次裝置號。  @核心分配裝置號  int

《linux裝置驅動程式III》學習—第五章

        第四章中講的是核心的調試技術。。。以後用到在學習吧     第五章   並發和競態1,作業系統編程的核心問題之一是並發管理2,什麼是競態:linux中存在大量的並發源,當這些並發源訪問可共用的資料時就會發生競態3,競態的危害:競態會導致共用的資料非控制訪問,導致系統崩潰、資料破壞及安全問題4,如何避免競態:常用的技術是 鎖定和互斥5,記:linux中訊號量的作用絕大多數是為互斥 自旋鎖6,鎖定功能的實現用的多的是自旋鎖,自旋鎖要更高效7,自旋鎖由spinlock_t 類型定義 

linux 進程地址空間 之 mm_count vs mm_users

首先引用 ULK上面的解釋 :The mm_users field stores the number of lightweight processes that share the mm_struct data structure (see the section "The clone( ), fork( ), and vfork( ) System Calls" in Chapter 3). The mm_count field is the main usage counter of

linux 下 新命令學習

      剛才在微博上看到亞嵌李明老的上傳的《新概念C語言》視頻,學到幾個命令。    file 命令,可查看檔案的屬性資訊;    hexdump -C a.out,可查看可執行檔的內容:          readelf  -a a.out,可以查看可執行檔更詳細的資訊:      

linux 驅動 device,driver ,bus 關係

對於Linux驅動開發來說,裝置模型的理解是根本,顧名思義裝置模型是關於裝置的模型,裝置的概念就是匯流排和與其相連的各種裝置了。 裝置是通過匯流排連到電腦上的,需要對應的驅動才能用,可是匯流排是如何發現裝置的,裝置又是如何和驅動對應起來的? 匯流排、裝置、驅動,也就是bus、device、driver,在核心裡都會有它們自己專屬的結構,在include/linux/device.h 裡定義。 首先是匯流排,bus_type.struct bus_type {const char   *

linux platform

首先介紹一下註冊一個驅動的步驟:1、定義一個platform_driver結構2、初始化這個結構,指定其probe、remove等函數,並初始化其中的driver變數3、實現其probe、remove等函數看platform_driver結構,定義於include/linux/platform_device.h檔案中:struct platform_driver {int ( * probe) ( struct platform_device * ) ;int ( * remove ) (

總頁數: 4065 1 .... 394 395 396 397 398 .... 4065 Go to: 前往
Tags Index:

聯繫我們

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

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