/DragonOS/kernel/src/arch/x86_64/interrupt/ |
H A D | handle.rs | 25 let desc = irq_desc_manager().lookup(IrqNumber::new(vector)); in x86_64_do_irq() localVariable 27 if likely(desc.is_some()) { in x86_64_do_irq() 28 let desc = desc.unwrap(); in x86_64_do_irq() localVariable 29 let handler = desc.handler(); in x86_64_do_irq() 31 handler.unwrap().handle(&desc, trap_frame); in x86_64_do_irq()
|
H A D | ipi.rs | 235 let desc = irq_desc_manager().lookup(irq).unwrap(); in do_init_irq_handler() localVariable 236 let irq_data: Arc<IrqData> = desc.irq_data(); in do_init_irq_handler() 240 desc.modify_status(IrqLineStatus::IRQ_LEVEL, IrqLineStatus::empty()); in do_init_irq_handler() 242 desc.set_handler(&X86_64IpiIrqFlowHandler); in do_init_irq_handler()
|
/DragonOS/kernel/src/exception/ |
H A D | manage.rs | 137 let desc = irq_desc_manager().lookup(irq).ok_or(SystemError::EINVAL)?; in request_threaded_irq() localVariable 138 if !desc.can_request() { in request_threaded_irq() 139 warn!("desc {} can not request", desc.irq().data()); in request_threaded_irq() 160 return self.inner_setup_irq(irq, irqaction, desc); in request_threaded_irq() 169 desc: Arc<IrqDesc>, in inner_setup_irq() 190 desc: Arc<IrqDesc>, in inner_setup_irq() 194 desc.chip_bus_sync_unlock(); in inner_setup_irq() 201 desc: Arc<IrqDesc>, in inner_setup_irq() 206 return err_out_bus_unlock(e, desc, req_mutex_guard, action_guard); in inner_setup_irq() 212 desc: Arc<IrqDesc>, in inner_setup_irq() [all …]
|
H A D | sysfs.rs | 106 for (irq, desc) in irq_desc_manager().iter_descs() { in irq_sysfs_init() 107 irq_sysfs_add(irq, desc); in irq_sysfs_init() 114 fn irq_sysfs_add(irq: &IrqNumber, desc: &Arc<IrqDesc>) { in irq_sysfs_add() 120 KObjectManager::add_kobj(desc.clone() as Arc<dyn KObject>, Some(kset)).unwrap_or_else(|e| { in irq_sysfs_add() 124 desc.mark_in_sysfs(); in irq_sysfs_add() 129 pub(super) fn irq_sysfs_del(desc: &Arc<IrqDesc>) { in irq_sysfs_del() 130 if desc.in_sysfs() { in irq_sysfs_del() 131 KObjectManager::remove_kobj(desc.clone() as Arc<dyn KObject>); in irq_sysfs_del() 132 desc.mark_not_in_sysfs(); in irq_sysfs_del()
|
H A D | irqchip.rs | 409 desc: &Arc<IrqDesc>, in __irq_do_set_handler() 482 desc.set_handler_no_lock_inner(handler, desc_inner.irq_data(), &chip); in __irq_do_set_handler() 499 .do_set_irq_trigger(desc.clone(), desc_inner, trigger_type) in __irq_do_set_handler() 501 desc.set_handler(handler); in __irq_do_set_handler() 512 .irq_activate_and_startup(desc, desc_inner, IrqManager::IRQ_RESEND) in __irq_do_set_handler() 524 let desc = irq_desc_manager().lookup(irq).ok_or(SystemError::EINVAL)?; in irq_set_handler_data() localVariable 525 desc.inner().common_data().inner().set_handler_data(data); in irq_set_handler_data() 532 desc: &Arc<IrqDesc>, in irq_percpu_disable() 543 desc.inner() in irq_percpu_disable()
|
H A D | irqdata.rs | 47 desc: Weak::new(), in new() 76 self.inner.lock_irqsave().desc.upgrade() in irq_desc() 79 pub fn set_irq_desc(&self, desc: Weak<IrqDesc>) { in set_irq_desc() 80 self.inner.lock_irqsave().desc = desc; in set_irq_desc() 85 self.inner.lock_irqsave().desc = Weak::new(); in clear_irq_desc() 150 desc: Weak<IrqDesc>, field
|
H A D | irqdesc.rs | 935 let desc = self.lookup(irq)?; in do_lookup_and_lock() localVariable 937 if check_percpu && !desc.inner().line_status().is_per_cpu_devid() { in do_lookup_and_lock() 941 if check_global && desc.inner().line_status().is_per_cpu_devid() { in do_lookup_and_lock() 947 desc.chip_bus_lock(); in do_lookup_and_lock() 950 return Some(desc); in do_lookup_and_lock() 953 fn insert(&mut self, irq: IrqNumber, desc: Arc<IrqDesc>) { in insert() 954 self.irq_descs.insert(irq, desc); in insert() 960 if let Some(desc) = self.irq_descs.get(&irq) { in free_desc() 961 irq_sysfs_del(desc); in free_desc() 984 let desc = self.lookup(irq).ok_or(SystemError::EINVAL)?; in set_percpu_devid() localVariable [all …]
|
H A D | handle.rs | 211 desc: &Arc<IrqDesc>, in do_irq_wake_thread() 233 desc.inc_threads_active(); in do_irq_wake_thread() 261 fn do_handle_irq_event(desc: &Arc<IrqDesc>) -> Result<(), SystemError> { in do_handle_irq_event() 262 let desc_inner_guard = desc.inner(); in do_handle_irq_event() 286 irq_manager().do_irq_wake_thread(desc, &mut action_inner); in do_handle_irq_event()
|
H A D | irqdomain.rs | 387 let desc = irq_desc_manager().lookup(virq)?; in domain_get_irq_data() localVariable 388 let mut irq_data = Some(desc.irq_data()); in domain_get_irq_data()
|
/DragonOS/kernel/src/driver/clocksource/ |
H A D | timer_riscv.rs | 109 let desc = irq_desc_manager().lookup(virq).unwrap(); in riscv_sbi_timer_irq_desc_init() localVariable 111 desc.modify_status(IrqLineStatus::IRQ_LEVEL, IrqLineStatus::empty()); in riscv_sbi_timer_irq_desc_init() 112 desc.set_handler(&RiscvSbiTimerIrqFlowHandler); in riscv_sbi_timer_irq_desc_init()
|
/DragonOS/kernel/src/driver/net/e1000e/ |
H A D | e1000e.rs | 433 let desc = &mut self.recv_desc_ring[index]; in e1000e_receive() localVariable 434 if (desc.status & E1000E_RXD_STATUS_DD) == 0 { in e1000e_receive() 440 desc.addr = new_buffer.as_paddr() as u64; in e1000e_receive() 441 buffer.set_length(desc.len as usize); in e1000e_receive() 451 let desc = &self.trans_desc_ring[index]; in e1000e_can_transmit() localVariable 452 if (desc.status & E1000E_TXD_STATUS_DD) == 0 { in e1000e_can_transmit() 461 let desc = &mut self.trans_desc_ring[index]; in e1000e_transmit() localVariable 467 desc.addr = packet.as_paddr() as u64; in e1000e_transmit() 468 desc.len = packet.len() as u16; in e1000e_transmit() 469 desc.status = 0; in e1000e_transmit() [all …]
|
/DragonOS/kernel/src/arch/x86_64/driver/apic/ |
H A D | ioapic.rs | 413 let desc = irq_desc_manager().lookup(irq).unwrap(); in ioapic_init() localVariable 414 let irq_data = desc.irq_data(); in ioapic_init() 424 register_handler(&desc, level); in ioapic_init() 430 fn register_handler(desc: &Arc<IrqDesc>, level_triggered: bool) { in register_handler() 432 desc.modify_status(IrqLineStatus::empty(), IrqLineStatus::IRQ_LEVEL); in register_handler() 435 desc.modify_status(IrqLineStatus::IRQ_LEVEL, IrqLineStatus::empty()); in register_handler() 444 desc.set_handler(handler); in register_handler()
|
H A D | apic_timer.rs | 95 let desc = irq_desc_manager().lookup(APIC_TIMER_IRQ_NUM).unwrap(); in local_apic_timer_irq_desc_init() localVariable 96 let irq_data: Arc<crate::exception::irqdata::IrqData> = desc.irq_data(); in local_apic_timer_irq_desc_init() 100 desc.modify_status(IrqLineStatus::IRQ_LEVEL, IrqLineStatus::empty()); in local_apic_timer_irq_desc_init() 102 desc.set_handler(&LocalApicTimerIrqFlowHandler); in local_apic_timer_irq_desc_init()
|