10.6. 快速參考

2018-02-24 15:50 更新

10.6.?快速參考

本章中介紹了這些關(guān)于中斷管理的符號(hào):

#include <linux/interrupt.h>
int request_irq(unsigned int irq, irqreturn_t (*handler)( ), unsigned long flags, const char *dev_name, void *dev_id);
void free_irq(unsigned int irq, void *dev_id);

調(diào)用這個(gè)注冊(cè)和注銷一個(gè)中斷處理.

#include <linux/irq.h.h>
int can_request_irq(unsigned int irq, unsigned long flags);

這個(gè)函數(shù), 在 i386 和 x86_64 體系上有, 返回一個(gè)非零值如果一個(gè)分配給定中斷線的企圖成功.

#include <asm/signal.h>
SA_INTERRUPT
SA_SHIRQ
SA_SAMPLE_RANDOM

給 request_irq 的標(biāo)志. SA_INTERRUPT 請(qǐng)求安裝一個(gè)快速處理者( 相反是一個(gè)慢速的). SA_SHIRQ 安裝一個(gè)共享的處理者, 并且第 3 個(gè) flag 聲稱中斷時(shí)戳可用來(lái)產(chǎn)生系統(tǒng)熵.

/proc/interrupts
/proc/stat 

報(bào)告硬件中斷和安裝的處理者的文件系統(tǒng)節(jié)點(diǎn).

unsigned long probe_irq_on(void);
int probe_irq_off(unsigned long);

驅(qū)動(dòng)使用的函數(shù), 當(dāng)它不得不探測(cè)來(lái)決定哪個(gè)中斷線被設(shè)備在使用. probe_irq_on 的結(jié)果必須傳回給 probe_irq_off 在中斷產(chǎn)生之后. probe_irq_off 的返回值是被探測(cè)的中斷號(hào).

IRQ_NONE
IRQ_HANDLED
IRQ_RETVAL(int x)

從一個(gè)中斷處理返回的可能值, 指示是否一個(gè)來(lái)自設(shè)備的真正的中斷出現(xiàn)了.

void disable_irq(int irq);
void disable_irq_nosync(int irq);
void enable_irq(int irq);

驅(qū)動(dòng)可以使能和禁止中斷報(bào)告. 如果硬件試圖在中斷禁止時(shí)產(chǎn)生一個(gè)中斷, 這個(gè)中斷永遠(yuǎn)丟失了. 一個(gè)使用一個(gè)共享處理者的驅(qū)動(dòng)必須不使用這個(gè)函數(shù).

void local_irq_save(unsigned long flags);
void local_irq_restore(unsigned long flags);

使用 local_irq_save 來(lái)禁止本地處理器的中斷并且記住它們之前的狀態(tài). flags 可以被傳遞給 local_irq_restore 來(lái)恢復(fù)之前的中斷狀態(tài).

void local_irq_disable(void);
void local_irq_enable(void);

在當(dāng)前處理器熵?zé)o條件禁止和使能中斷的函數(shù).

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)