pjht
3ca8b5a232
Exit function does not deallocate task memory except for the data block, and does not are about the exit code except for logging.
44 lines
734 B
C
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));
|
|
}
|