ipi.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #pragma once
  2. #ifdef x86_64
  3. #include <arch/x86_64/x86_64_ipi.h>
  4. #else
  5. #error "error type of arch!"
  6. #endif
  7. /**
  8. * @brief 发送ipi消息
  9. *
  10. * @param dest_mode 目标模式
  11. * @param deliver_status 投递模式
  12. * @param level 信号驱动电平
  13. * @param trigger 触发模式
  14. * @param vector 中断向量
  15. * @param deliver_mode 投递模式
  16. * @param dest_shorthand 投递目标速记值
  17. * @param apic_type apic的类型 (0:xapic 1: x2apic)
  18. * @param destination 投递目标
  19. */
  20. extern void ipi_send_IPI(uint32_t dest_mode, uint32_t deliver_status, uint32_t level, uint32_t trigger,
  21. uint32_t vector, uint32_t deliver_mode, uint32_t dest_shorthand, bool apic_type, uint32_t destination);
  22. /**
  23. * @brief ipi中断处理注册函数
  24. *
  25. * @param irq_num 中断向量号
  26. * @param arg 参数
  27. * @param handler 处理函数
  28. * @param param 参数
  29. * @param controller 当前为NULL
  30. * @param irq_name ipi中断名
  31. * @return int 成功:0
  32. */
  33. extern int ipi_regiserIPI(uint64_t irq_num, void *arg,
  34. void (*handler)(uint64_t irq_num, uint64_t param, struct pt_regs *regs),
  35. uint64_t param, hardware_intr_controller *controller, char *irq_name);