新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式Linux驅動程序開發要點

        嵌入式Linux驅動程序開發要點

        作者: 時間:2012-08-27 來源:網絡 收藏

        #include

        int request_irq(unsigned int irq,

        void (*handler)(int irq, void dev_id, struct pt_regs *regs),

        unsigned long flags,

        const char *device,

        void *dev_id);

        void free_irq(unsigned int irq, void *dev_id);

        參數irq表示所要申請的硬件中斷號;handler為向系統登記的中斷處理子程序,中斷產生時由系統來調用,調用時所帶參數irq為中斷號;dev_id為申請時告訴系統的設備標識;regs為中斷發生時的寄存器內容;device為設備名,將會出現在/proc/interrupts文件里;flag是申請時的選項,它決定中斷處理程序的一些特性,其中最重要的是中斷處理程序是快速處理程序還是慢速處理程序。快速處理程序運行時,所有中斷都被屏蔽,而慢速處理程序運行時,除了正在處理的中斷外,其他中斷都沒有被屏蔽。在系統中,中斷可以被不同的中斷處理程序共享。

        作為系統核心的一部分,設備程序在申請和釋放內存時不是調用malloc和free,而代之以調用kmalloc和kfree,它們被定義為:

        #include

        void *kmalloc(unsigned int len, int priority);

        void kfree(void *obj);

        參數len為希望申請的字節數;obj為要釋放的內存指針;priority為分配內存操作的優先級,即在沒有足夠空閑內存時如何操作,一般用GFP_KERNEL。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安丘市| 公主岭市| 卢氏县| 泊头市| 延川县| 兴安县| 屏东县| 成都市| 固阳县| 石狮市| 荔浦县| 镇康县| 攀枝花市| 车险| 昔阳县| 东丰县| 克拉玛依市| 通海县| 楚雄市| 怀集县| 长乐市| 婺源县| 乡宁县| 裕民县| 揭阳市| 滨州市| 晋城| 广宁县| 鄱阳县| 嘉义县| 古田县| 巴里| 枣庄市| 富蕴县| 池州市| 会泽县| 赤城县| 黄浦区| 罗山县| 东莞市| 绵竹市|