matos/core/kthread.h

28 lines
665 B
C
Raw Normal View History

2020-04-23 00:49:09 +02:00
#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;
2020-04-23 00:49:09 +02:00
};
int kthreadSetup(vaddr_t mainStack, size_t mainStackSize);
2020-04-24 00:12:12 +02:00
void kthreadExit();
2020-04-23 00:49:09 +02:00
2020-04-24 23:34:34 +02:00
struct kthread *kthreadCreate(const char *name, cpu_kstate_function_arg1_t func, void *args);
2020-04-24 00:12:12 +02:00
void kthreadDelete(struct kthread *thread);
2020-04-23 00:49:09 +02:00
2020-04-24 00:12:12 +02:00
struct kthread *kthreadSelectNext();
2020-04-23 23:40:16 +02:00
struct cpu_state *switchKthread(struct cpu_state *prevCpu);
2020-04-24 23:34:34 +02:00
int kthreadYield();