irq_handle.rs 585 B

123456789101112131415161718192021222324
  1. use alloc::sync::Arc;
  2. use system_error::SystemError;
  3. use crate::exception::{
  4. irqdata::IrqHandlerData,
  5. irqdesc::{IrqHandler, IrqReturn},
  6. IrqNumber,
  7. };
  8. /// 默认的网卡中断处理函数
  9. #[derive(Debug)]
  10. pub struct DefaultNetIrqHandler;
  11. impl IrqHandler for DefaultNetIrqHandler {
  12. fn handle(
  13. &self,
  14. _irq: IrqNumber,
  15. _static_data: Option<&dyn IrqHandlerData>,
  16. _dynamic_data: Option<Arc<dyn IrqHandlerData>>,
  17. ) -> Result<IrqReturn, SystemError> {
  18. super::kthread::wakeup_poll_thread();
  19. Ok(IrqReturn::Handled)
  20. }
  21. }