#ifndef __LUNAIX_SCHEDULER_H
#define __LUNAIX_SCHEDULER_H
-#define SCHED_TIME_SLICE 1000
+#include <lunaix/compiler.h>
+#include <lunaix/process.h>
+
+#define SCHED_TIME_SLICE 300
+#define MAX_THREAD_PP 1024
+
+#define PROC_TABLE_SIZE 8192
+#define MAX_PROCESS (PROC_TABLE_SIZE / sizeof(ptr_t))
+
+struct scheduler
+{
+ struct proc_info** procs;
+ struct llist_header* threads;
+ struct llist_header* proc_list;
+ struct llist_header sleepers;
-struct scheduler {
- struct proc_info* _procs;
int procs_index;
- unsigned int ptable_len;
+ int ptable_len;
+ int ttable_len;
};
-void sched_init();
-void schedule();
+void
+sched_init();
+
+void noret
+schedule();
+
+void noret
+run(struct thread* thread);
+
+void
+cleanup_detached_threads();
#endif /* __LUNAIX_SCHEDULER_H */