1 /** 2 * @file ipi.h 3 * @author fslongjin(longjin@RinGoTek.cn) 4 * @brief 多核通信驱动 5 * @version 0.1 6 * @date 2022-04-07 7 * 8 * @copyright Copyright (c) 2022 9 * 10 */ 11 12 #pragma once 13 14 #include <common/kprint.h> 15 #include <driver/interrupt/apic/apic.h> 16 17 /** 18 * @brief 发送ipi消息 19 * 20 * @param dest_mode 目标模式 21 * @param deliver_status 投递模式 22 * @param level 信号驱动电平 23 * @param trigger 触发模式 24 * @param vector 中断向量 25 * @param deliver_mode 投递模式 26 * @param dest_shorthand 投递目标速记值 27 * @param destination 投递目标 28 */ 29 void ipi_send_IPI(uint32_t dest_mode, uint32_t deliver_status, uint32_t level, uint32_t trigger, 30 uint32_t vector, uint32_t deliver_mode, uint32_t dest_shorthand, uint32_t destination); 31 32 /** 33 * @brief ipi中断处理注册函数 34 * 35 * @param irq_num 中断向量号 36 * @param arg 参数 37 * @param handler 处理函数 38 * @param param 参数 39 * @param controller 当前为NULL 40 * @param irq_name ipi中断名 41 * @return int 成功:0 42 */ 43 int ipi_regiserIPI(uint64_t irq_num, void *arg, 44 void (*handler)(uint64_t irq_num, uint64_t param, struct pt_regs *regs), 45 uint64_t param, hardware_intr_controller *controller, char *irq_name);