long sbi_clear_ipi(void) 清除Pending 的 IPI,IPI 只有在调用该函数时才会被清除,这个接口已经废弃了,因为 S 模式可以直接通过 sip.SSIP CSR 位来清除 IPI。 如果没有需要清除的 IPI,则返回 0,否则返回正数来表示有 IPI 在等待,这个数值由实现定义。 5.5 扩展:发送 IPI(EID #0x04) long sbi_send_ipi(co...
sbi_clear_ipi()已经被弃用,因为S模式代码可以直接清除 sip.SSIP寄存器位。. 如果没有 IPI 待处理,该 SBI 调用将返回 0;如果有 IPI 待处理,该 SBI 调用将返回一个具体实施的正值。 5.5.扩展: 发送IPI (EID #0x04) long sbi_send_ipi(const unsigned long *hart_mask) 向hart_mask指定的所有hart发送跨...
sbi_clear_ipi()已经被弃用,因为S模式代码可以直接清除 sip.SSIP寄存器位。. 这个SBI调用会返回0,如果没有IPI被挂起,则返回一个实现特定的正值,如果有IPI被挂起。 5.5.扩展: 发送IPI (EID #0x04) long sbi_send_ipi(const unsigned long *hart_mask) 向hart_mask指定的所有hart发送跨处理器中断。跨处理器中...
如果你想指定HART 1,HART掩码将是0x2(二进制表示为0b10),因为第1位是1,其他位是0。 // 发送处理器间中断(IPI)的函数fnsend_ipi(hart_mask:usize)->SbiRet {constEXTENSION_IPI:usize=0x735049;// IPI 扩展ID(ASCII"IPI")constFUNCTION_SEND_IPI:usize=0;// 发送IPI的功能IDsbi_call(EXTENSION_IPI, F...
4.5. Extension: Send IPI (EID #0x04) void sbi_send_ipi(const unsigned long *hart_mask) Send an inter-processor interrupt to all the harts defined in hart_mask. Interprocessor interrupts manifest at the receiving harts as Supervisor Software Interrupts. hart_mask is a virtual addre...
4.5. Extension: Send IPI (EID #0x04) void sbi_send_ipi(const unsigned long *hart_mask) Send an inter-processor interrupt to all the harts defined in hart_mask. Interprocessor interrupts manifest at the receiving harts as Supervisor Software Interrupts. hart_mask is a virtual address...
void sbi_send_ipi(const unsigned long *hart_mask) Send an inter-processor interrupt to all the harts defined in hart_mask. Interprocessor interrupts manifest at the receiving harts as Supervisor Software Interrupts. hart_mask is a virtual address that points to a bit-vector of harts. The bit...
sbi_remote_hfence_gvma 0.2 4 0x52464E43 使所有目标HART的G-Stage虚拟内存地址范围失效 sbi_remote_hfence_vvma_asid 0.2 5 0x52464E43 使所有目标HART的V-Stage虚拟内存地址范围和ASID失效 sbi_remote_hfence_vvma 0.2 6 0x52464E43 使所有目标HART的V-Stage虚拟内存地址范围失效rust...
static int __sbi_send_ipi_v02(const unsigned long *hart_mask) { unsigned long hartid, hmask_val, hbase; struct cpumask tmask; struct sbiret ret = {0}; int result; //检查并初始化 hart_mask if (!hart_mask || !(*hart_mask)) { ...
if (sbi_probe_extension(SBI_EXT_IPI)) { __sbi_send_ipi = __sbi_send_ipi_v02; pr_info("SBI IPI extension detected\n"); } else { __sbi_send_ipi = __sbi_send_ipi_v01; } if (sbi_probe_extension(SBI_EXT_RFENCE) > 0) { if (sbi_probe_extension(SBI_EXT_RFENCE)) { __sb...