2 Copyright © 1995-2017, The AROS Development Team. All rights reserved.
6 #ifndef __KERNEL_IPI_H_
7 #define __KERNEL_IPI_H_
9 #include <aros/types/spinlock_s.h>
10 #include <utility/hooks.h>
11 #include "kernel_base.h"
12 #include "apic_ia32.h"
15 Private KERNEL IPI messages
17 #define IPI_NOP (APIC_EXCEPT_IPI_NOP - X86_CPU_EXCEPT_COUNT)
18 #define IPI_STOP (APIC_EXCEPT_IPI_STOP - X86_CPU_EXCEPT_COUNT)
19 #define IPI_RESUME (APIC_EXCEPT_IPI_RESUME - X86_CPU_EXCEPT_COUNT)
20 #define IPI_RESCHEDULE (APIC_EXCEPT_IPI_RESCHEDULE - X86_CPU_EXCEPT_COUNT)
21 #define IPI_CALL_HOOK (APIC_EXCEPT_IPI_CALL_HOOK - X86_CPU_EXCEPT_COUNT)
22 #define IPI_CAUSE (APIC_EXCEPT_IPI_CAUSE - X86_CPU_EXCEPT_COUNT)
24 int core_IPIHandle(struct ExceptionContext
*regs
, void *data1
, struct KernelBase
*KernelBase
);
25 void core_DoIPI(uint8_t ipi_number
, void *cpu_mask
, struct KernelBase
*KernelBase
);
26 int core_DoCallIPI(struct Hook
*hook
, void *cpu_mask
, int async
, int nargs
, IPTR
*args
, APTR _KB
);
28 #define IPI_CALL_HOOK_MAX_ARGS 5
36 IPTR ih_Args
[IPI_CALL_HOOK_MAX_ARGS
];
37 uint32_t * ih_CPUDone
;
38 uint32_t * ih_CPURequested
;
41 spinlock_t ih_SyncLock
;
44 #endif /* __KERNEL_IPI_H_ */