os/libc/tasking.c
pjht 3ca8b5a232 Add a very basic exit function and fix kmalloc.
Exit function does not deallocate task memory except for the data block, 
and does not are about the exit code except for logging.
2019-08-25 17:32:08 -05:00

44 lines
734 B
C

#include <stdint.h>
void yield() {
asm volatile(" \
mov $1, %eax; \
int $80; \
");
}
void createTask(void* task) {
asm volatile(" \
mov $2, %%eax; \
int $80; \
"::"b"(task));
}
void createTaskCr3(void* task,void* cr3) {
asm volatile(" \
mov $9, %%eax; \
int $80; \
"::"b"(task),"c"(cr3));
}
void createTaskCr3Param(void* task,void* cr3,uint32_t param1,uint32_t param2) {
asm volatile(" \
mov $12, %%eax; \
int $80; \
"::"b"(task),"c"(cr3),"d"(param1),"S"(param2));
}
void yieldToPID(uint32_t pid) {
asm volatile(" \
mov $15, %%eax; \
int $80; \
"::"b"(pid));
}
void exit(uint8_t code) {
asm volatile(" \
mov $17, %%eax; \
int $80; \
"::"b"(code));
}