Linux之#pragma的用法

先行編譯指令#pragma的用法最近在看開源項目中的代碼時,發現許多地方都用到了#pragma的程式。因此,就問了下Google老師,總結了下#pragma先行編譯指令的常用用法,現在和大家分享下。一.#pragma最常用的方法1. #progma pack(n)1>功能:使用#progma

Linux驅動之裝置模型(3)

4.小結4.1  kobject, kset和ktypekobject, kset和ktype就三個結構體,但是卻很容易讓人混淆,是由於它們內部相互交織。l  kobject,是裝置模型中的基本對象,包含了引用計數,父子關係,目錄項等,通常會嵌入到其它的資料結構中,使其也具有kobject的特性;l  ktype,定義了一些kobjct相關的預設特性:解構函式,sysfs操作以及預設屬性;l  kset,實現兩個功能:n  其中嵌入的kobject作為kobject組的基類n 

linux驅動子系統之輸入子系統(5)

linux驅動子系統之輸入子系統(5)5. 總結5.1 事件資訊的上報過程分析l  上報的大致過程:裝置驅動層->核心層->事件處理層->應用程式層l  具體調用的函數(以evdev為例):input_event()->input_handle_event() ->input_pass_event() ->handle->handler->event(handle,type, code, value) ->evdev_event()

《Linux那些事兒之我是USB》我是隨身碟(17)冬天來了,春天還會遠嗎?(三)

從兩張表得到了我們需要的東西,然後下面的代碼就是圍繞著這兩個指標來展開了。(unusual_dev和id)繼續看get_device_info()。497行,把unusual_dev給記錄在us裡面,反正us裡面也有這麼一個成員。這樣記錄下來以後使用起來就方便了,因為us是貫穿整個故事的,所以訪問它的成員很方便,隨時都可以,但是us_unusual_dev_list以及storage_usb_ids這兩張表這次之後就不會再用了。因為我們已經得到了我們想要的,所以就不用再去騷擾這兩個數組了。498

Linux驅動之觸控螢幕(4)-多點觸控

Linux驅動之觸控螢幕(4)-多點觸控4.1 概述         此驅動支援it7260觸控螢幕控制器,最多支援三點觸摸,已在CPU: s5pc110、linux-2.6.32.9、android-2.2上測試通過。原本以為三天就能搞定,最後還是用了一個禮拜才弄完。水平有限,可能存在一些bug,請及時反饋給我(cjok.liao@gmail.com)。         觸控螢幕驅動主要分為兩個部分:         I2C驅動部分:主要負責將裝置掛接到I2C匯流排上,實現資料轉送;     

Linux驅動之裝置模型(2)

3.ktype& Kset3.1  ktypel  用來描述一組kobject所具有的共同特性,用structkobj_type結構體來表示struct kobj_type{         void (*release)(struct kobject *kobj);         const struct sysfs_ops *sysfs_ops;         struct attribute **default_attrs;         const struct kobj_

Linux驅動之裝置模型(7)

8.類8.1  classl  Class是對裝置按照功能進行的分類,這樣做是為了給使用者空間提供一個比較友好的介面。Class也是一個kset,對應於/sys/class下的一個目錄int __initclasses_init(void){         /* 對應/sys/class目錄 */         class_kset =kset_create_and_add("class", NULL, NULL);         if (!class_kset)             

linux驅動子系統之輸入子系統(1)

linux驅動子系統之輸入子系統(1)1.輸入子系統架構1.1 概述核心提供的輸入子系統是對分散的、多種不同類別的輸入裝置(鍵盤、滑鼠、觸控螢幕、加速計、跟蹤球、操縱杆等)進行統一處理的驅動程式。 輸入子系統帶來的好處:l  抽象底層形態各異的硬體輸入裝置,為上層提供了統一的操作介面 l  提高了代碼重用率和效率,減少了bug  1.2 系統架構輸入子系統的三層結構:l  事件驅動層          負責和應用程式的介面 l  核心層         

Linux驅動之觸控螢幕(1)

1.     硬體原理1.1overview   我們常用的觸控螢幕類型有兩種:阻性觸控螢幕和容性觸控螢幕。它們在硬體上相差比較大,在驅動實現上相對來說差別比較小。容性觸控螢幕支援多點觸控螢幕,使用者體驗上比較好。下面將簡單介紹一下觸控螢幕用到的硬體原理。 1.2ADC轉換         AD轉換的作用是將時間連續、幅值也連續的類比量轉換為時間離散、幅值也離散的數字訊號。 1.3 阻性觸控螢幕l  簡單來說,阻性觸控螢幕是一種感應器,它將矩形地區中觸摸點(X,

Linux驅動之觸控螢幕(2)

2.     觸控螢幕驅動分析2.1overview         觸控螢幕驅動並沒有阻性和容性之分,只有單點觸摸和多點觸摸之分。典型的觸控螢幕驅動都會基於輸入子系統來做。這裡先來分析一下s3c2410_ts.c(舊核心裡是s3c_ts.c,相對來說變動很大,有興趣可以去看看)這個驅動檔案。此檔案名稱字雖然是s3c2410,但是同樣也支援s3c2440和s3c6410。                                                           2.2

《Linux那些事兒之我是USB》我是隨身碟(18)冬天來了,春天還會遠嗎?(四)

結束了get_device_info,我們繼續沿著storage_probe一步一步地走下去。繼續,這就是我們前面提到過的三個函數,get_transport、get_protocol和get_pipes。一旦結束了這三個函數,我們就將進入本故事的高潮部分。而在這之前,我們只能一個一個地來看。好在這幾個函數雖然不短,但是真正有用的資訊只有一點,所以可以很快看完。993   /* Get the transport, protocol,and pipe settings */994  

Linux驅動之觸控螢幕(3)

3.     多點觸摸3.1overview         多點觸摸沒啥好特別的,就是把多個單點捆綁起來,組合成一組座標值。然後上層應用對其手勢進行解析,就有了我們平常看到的兩個手指對圖片進行縮放等功能。從Linux-2.6.30才對多點觸摸支援。 3.2 單點觸摸和多點觸摸l  單點觸摸和多點觸摸都是基於輸入子系統來做,所以對於在軟體上的實現區別不是很大。 l  參數設定單點觸摸:Input_dev->evbit[0]= BIT_MASK(EV_KEY) |

linux下錯誤的捕獲:errno和strerror的使用

linux下錯誤的捕獲:errno和strerror的使用經常在調用linux 系統api 的時候會出現一些錯誤,比方說使用open() write() creat()之類的函數有些時候會返回-1,也就是調用失敗,這個時候往往需要知道失敗的原因。這個時候使用errno這個全域變數就相當有用了。    在程式碼中包含 #include<errno.h>,然後每次程式調用失敗的時候,系統會自動用用錯誤碼填充errno這個全域變數,這樣你只需要讀errno這個全域變數就可以獲得失敗原因了。

Linux核心學習之中斷(1)

Linux核心學習之中斷[中斷概述]中斷本質上是一種特殊的電訊號,由硬體裝置發向處理器。異常和中斷的不同是異常在產生時必須考慮與處理器時鐘同步。實際上異常也常常稱為同步中斷。比如在除0或者缺頁時,必須靠核心處理的時候,處理器就會產生一個異常。 [中斷處理機制的實現]                                                       

Linux核心學習之中斷(2)-工作隊列

工作隊列[概述]工作隊列是一種將工作推後執行的的形式,工作隊列可以把工作推後,交由一個核心線程去執行,佔有進程內容相關的所有優勢,允許重新調度和睡眠。 [工作隊列的實現]工作隊列子系統是一個用於建立核心線程的介面,通過它建立的進程負責執行由核心其他部分排到隊列裡的任務。它建立的這些核心線程稱作工作者線程(worker thread)。工作隊列子系統提供了一個預設的工作者線程來處理推後的工作,所以我們大多數情況下,沒必要自己去建立工作者線程,使用預設的就OK。Linux kernel

Linux核心學習之中斷(3)-tasklet

Tasklet[概述]Tasklet是非強制中斷的特殊實現。Tasklet通常是下半部處理的優選機制,它在效能和易用性之間有著很好的平衡。較softirq,tasklet不需要考慮SMP下的並發問題,而又比workqueue有著更好的效能。不同類型的tasklet可以在不同的處理器上同時執行,但同類型的tasklet不能同時執行。這就避免了並發問題。ksoftirqd核心線程有著類似工作者線程一樣的職責,它會周期的遍曆非強制中斷的向量列表,如果發現哪個非強制中斷向量掛起了(pending),就執

Linux進程學習二

fork()和vfork()的學習通過上一部分的學習,我們瞭解了進程的概念以及在Linux中進程的實現,此部分我們將具體學習如何在Linux中建立一個進程。一前言:通過原理知識的學習,我們知道每個進程由進程ID號標識。進程被建立時系統會為其分配一個唯一的進程ID號。當一個進程向其父進程(建立該進程的進程)傳遞其終止訊息時,意味這個進程的整個生命週期結束。此時,該進程佔用的所用資源套件括進程ID被全部釋放。那麼在Linux中如何建立一個進程呢?建立進程有兩種方式:一是由作業系統建立,二是由父進程建

Linux檔案夾和檔案許可權

 drwxr-x--- 46 jibo jibo 4096 2012-05-31 17:57 _src分別對應的是:檔案屬性串連數檔案擁有者所屬群組檔案大小檔案修改時間檔案名稱這裡r是可讀,w可寫,x 可執行,其中檔案屬性分為四段,---- --- --- 10個位置例如:  d   rwx   r-x  r-x

ARM Linux靜態映射分析

ARM Linux靜態映射分析源地址:http://www.embedu.org/Column/Column225.htm在華清遠見上課過程中,發現靜態映射方面初學者比較難於掌握和理解,下面分析一下靜態映射機制的原理並通過GPIO和USB、LCD等的靜態映射作為例子來說明如何通過這種靜態映射的方式訪問外設資源。核心提供了一個重要的結構體struct machine_desc

Linux核心模組符號匯出後無法調用問題

Linux核心模組符號匯出後無法調用問題Linux模組間通訊方法非常的多,最便捷的方法莫過於函數符號匯出,然後直接調用。然而在linux2.6.26以後的核心中模組的符號匯出經常會出現問題,一個模組中的匯出符號不能被另外一個模組進行調用。這個使得處理有依賴關係的模組非常的頭疼。1. 符號匯出函數EXPORT_SYMBOL() EXPORT_SYMBOL標籤內定義的函數對全部核心代碼公開,不用修改核心代碼就可以在您的核心模組中直接調用。EXPORT_SYMBOL_GPL()

總頁數: 3662 1 .... 859 860 861 862 863 .... 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.