aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/fbos/compiler.h3
-rw-r--r--include/fbos/printk.h3
-rw-r--r--include/fbos/sched.h10
3 files changed, 16 insertions, 0 deletions
diff --git a/include/fbos/compiler.h b/include/fbos/compiler.h
index 95596dd..67f3194 100644
--- a/include/fbos/compiler.h
+++ b/include/fbos/compiler.h
@@ -6,6 +6,9 @@
*/
#define __noreturn __attribute__((__noreturn__))
+#ifndef __always_inline
+#define __always_inline __attribute__((__always_inline__)) inline
+#endif
#define __s_interrupt __attribute__((interrupt("supervisor")))
#define __aligned(x) __attribute__((aligned(x)))
diff --git a/include/fbos/printk.h b/include/fbos/printk.h
index 6b32555..5a12d7c 100644
--- a/include/fbos/printk.h
+++ b/include/fbos/printk.h
@@ -1,6 +1,8 @@
#ifndef __FBOS_PRINTK_H_
#define __FBOS_PRINTK_H_
+#include <fbos/compiler.h>
+
/*
* This file might be pulled from user space tests. Hence, define alternatives
* for this functions from glibc.
@@ -9,6 +11,7 @@
#ifdef __KERNEL__
extern void die(const char *const message);
extern void printk(const char *const message);
+extern void write(const char *const message, size_t n);
#else
#include <stdio.h>
#include <stdlib.h>
diff --git a/include/fbos/sched.h b/include/fbos/sched.h
index 6a59756..c2a4b19 100644
--- a/include/fbos/sched.h
+++ b/include/fbos/sched.h
@@ -3,6 +3,7 @@
#include <fbos/compiler.h>
+// All the possible IDs for the tasks on this kernel.
enum task_id {
TASK_UNKNOWN = -1,
TASK_INIT = 0,
@@ -11,12 +12,21 @@ enum task_id {
TASK_FIZZBUZZ = 3,
};
+// TODO: if we only care about the absolute address, it can be further
+// simplified.
struct task_struct {
void *stack;
const void *addr;
uint64_t entry_offset;
};
+// Tasks available on this kernel.
extern struct task_struct tasks[4];
+// Identifier for the next task to be run.
+extern int next_task;
+
+// Bring the machine to idle mode.
+__noreturn __kernel void idle(void);
+
#endif // __FBOS_SCHED_H_