irq_handle.rs 658 B

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