interrupt: basic ipl handling

This commit is contained in:
Matheus
2023-04-23 15:42:08 -03:00
parent ee63940c68
commit 5f84cdec3c
4 changed files with 28 additions and 11 deletions
+6 -2
View File
@@ -11,6 +11,11 @@
#error Unsupported architecture!
#endif
#define IPL_MAX -1
#define IPL_NONE 0
#define IPL_TIMER 1
#define IPL_BASE 1000
struct _isr_t;
typedef struct _isr_t {
void (*func)(struct _isr_t *self, context_t *ctx);
@@ -22,8 +27,7 @@ typedef struct _isr_t {
void interrupt_register(int vector, void (*func)(isr_t *self, context_t *ctx), void (*eoi)(isr_t *self), long priority);
isr_t *interrupt_allocate(void (*func)(isr_t *self, context_t *ctx), void (*eoi)(isr_t *self), long priority);
void interrupt_raiseipl(long newipl);
void interrupt_loweripl(long newipl);
long interrupt_setipl(long newipl);
bool interrupt_set(bool status);
#endif