aboutsummaryrefslogtreecommitdiff
path: root/src/scheduler.h
blob: 8c0f5697d2cdd87a2c25fa86b65d2de9b3e3879b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef SCHEDULER_H
#define SCHEDULER_H

#include <stdint.h>

#include "psr.h"

extern PSR_t PL1_PSR;

void setup_scheduler_structures(void);

// to be called by irq handler when respective uart interrupt happens
void scheduler_try_output(void);

// to be called by irq handler when respective uart interrupt happens
void scheduler_try_input(void);

void __attribute__((noreturn))
schedule_wait_for_output(uint32_t regs[14], char c);

void __attribute__((noreturn))
schedule_wait_for_input(uint32_t regs[14]);

void __attribute__((noreturn))
schedule_save_context(uint32_t regs[14]);

void __attribute__((noreturn)) schedule(void);

void __attribute__((noreturn))
schedule_new(uint32_t pc, uint32_t sp);

#endif