27 lines
584 B
C
27 lines
584 B
C
|
#pragma once
|
||
|
|
||
|
#include "cpu_context.h"
|
||
|
#include "mem.h"
|
||
|
|
||
|
#define KTHREAD_NAME_MAX_LENGTH 32
|
||
|
#define KTHREAD_DEFAULT_STACK_SIZE PAGE_SIZE
|
||
|
|
||
|
struct kthread {
|
||
|
char name[KTHREAD_NAME_MAX_LENGTH];
|
||
|
struct cpu_state *cpuState;
|
||
|
vaddr_t stackAddr;
|
||
|
size_t stackSize;
|
||
|
struct kthread *next;
|
||
|
struct kthread *prev;
|
||
|
};
|
||
|
|
||
|
|
||
|
int kthreadSetup(vaddr_t mainStack, size_t mainStackSize);
|
||
|
|
||
|
struct kthread *createKthread(const char *name, cpu_kstate_function_arg1_t func,
|
||
|
void *args);
|
||
|
|
||
|
void deleteKthread(struct kthread *thread);
|
||
|
|
||
|
struct cpu_state *selectNextThread(struct cpu_state *prev_cpu);
|