Files
riscv-operating-system-mooc/code/os/03-contextswitch/os.h
2021-04-01 20:02:31 +08:00

62 lines
884 B
C

#ifndef __OS_H__
#define __OS_H__
#include "types.h"
#include "platform.h"
#include <stddef.h>
#include <stdarg.h>
/* uart */
extern int uart_putc(char ch);
extern void uart_puts(char *s);
/* printf */
extern int printf(const char* s, ...);
extern void panic(char *s);
/* memory management */
extern void *page_alloc(int npages);
extern void page_free(void *p);
/* task management */
struct context {
/* ignore x0 */
reg_t ra;
reg_t sp;
reg_t gp;
reg_t tp;
reg_t t0;
reg_t t1;
reg_t t2;
reg_t s0;
reg_t s1;
reg_t a0;
reg_t a1;
reg_t a2;
reg_t a3;
reg_t a4;
reg_t a5;
reg_t a6;
reg_t a7;
reg_t s2;
reg_t s3;
reg_t s4;
reg_t s5;
reg_t s6;
reg_t s7;
reg_t s8;
reg_t s9;
reg_t s10;
reg_t s11;
reg_t t3;
reg_t t4;
reg_t t5;
reg_t t6;
};
extern int task_create(void (*task)(void));
extern void task_delay(volatile int count);
#endif /* __OS_H__ */