*参照元 [#eacb05be]
#backlinks

*説明 [#x2e8d7ab]
-パス: [[linux-2.6.33/include/linux/interrupt.h]]

-FIXME: これは何?
--説明

-CONFIG_GENERIC_HARDIRQS の有効、無効によって、処理の本体が異なる。
-FIXME: なぜ???
--CONFIG_GENERIC_HARDIRQS 有効: request_threaded_irq()
---[[linux-2.6.33/request_threaded_irq()]]
--CONFIG_GENERIC_HARDIRQS 無効: request_irq()
---FIXME: 各アーキテクチャごとの request_irq() へのリンク?
---m68k: [[linux-2.6.33/request_irq()(m68k)]]



**引数 [#j7689fc5]
-unsigned int irq
--
-irq_handler_t handler
--
--[[linux-2.6.33/irq_handler_t]]
-unsigned long flags
--
-const char *name
--
-void *dev
--

**返り値 [#jc426e0c]
-int
--


**参考 [#i7d1d45d]


*実装 [#g13f36d0]
 #ifdef CONFIG_GENERIC_HARDIRQS
 extern int __must_check
 request_threaded_irq(unsigned int irq, irq_handler_t handler,
                      irq_handler_t thread_fn,
                      unsigned long flags, const char *name, void *dev);
 
 static inline int __must_check
 request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
             const char *name, void *dev)
 {
         return request_threaded_irq(irq, handler, NULL, flags, name, dev);
 }
 
-CONFIG_GENERIC_HARDIRQS が有効なアーキテクチャでは、
request_irq() は request_threaded_irq() の別名である。
--[[linux-2.6.33/request_threaded_irq()]]

 extern void exit_irq_thread(void);
 #else
 
 extern int __must_check
 request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
             const char *name, void *dev);
 
 /*
  * Special function to avoid ifdeffery in kernel/irq/devres.c which
  * gets magically built by GENERIC_HARDIRQS=n architectures (sparc,
  * m68k). I really love these $@%#!* obvious Makefile references:
  * ../../../kernel/irq/devres.o
  */
 static inline int __must_check
 request_threaded_irq(unsigned int irq, irq_handler_t handler,
                      irq_handler_t thread_fn,
                      unsigned long flags, const char *name, void *dev)
 {
         return request_irq(irq, handler, flags, name, dev);
 }
 
-CONFIG_GENERIC_HARDIRQS が無効なアーキテクチャでは、
request_threaded_irq() は request_irq() の別名である。

 static inline void exit_irq_thread(void) { }
 #endif


*コメント [#r0ce7163]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS