10.6. 快速參考

2018-02-24 15:50 更新

10.6.?快速參考

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

#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)用這個注冊和注銷一個中斷處理.

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

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

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

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

/proc/interrupts
/proc/stat 

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

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

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

IRQ_NONE
IRQ_HANDLED
IRQ_RETVAL(int x)

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

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號