Add createTaskCr3

This commit is contained in:
pjht 2019-05-05 13:30:01 -05:00
parent 1efc0bff19
commit f34d5029df
5 changed files with 11 additions and 0 deletions

View File

@ -185,6 +185,8 @@ void isr_handler(registers_t r) {
tasking_send_msg(r.ebx,(void*)r.ecx,r.edx);
} else if (r.eax==8) {
r.ebx=(uint32_t)paging_new_address_space();
} else if (r.eax==9) {
tasking_createTaskCr3((void*)r.ebx,(void*)r.ecx);
}
break;
}

View File

@ -6,6 +6,7 @@
void tasking_init();
void tasking_yield();
Task* tasking_createTask(void* eip);
Task* tasking_createTaskCr3(void* eip,void* cr3);
char isPrivleged(uint32_t pid);
void tasking_send_msg(uint32_t pid,void* msg,uint32_t size);
void* tasking_get_msg(uint32_t* sender);

Binary file not shown.

View File

@ -29,3 +29,10 @@ void send_msg(uint32_t pid,void* msg,uint32_t size) {
int $80; \
"::"b"(pid),"c"(msg),"d"(size));
}
void createTaskCr3(void* task,void* cr3) {
asm volatile(" \
mov $9, %%eax; \
int $80; \
"::"b"(task),"c"(cr3));
}

View File

@ -5,6 +5,7 @@
void yield();
void createTask(void* task);
void createTaskCr3(void* task,void* cr3);
char isPrivleged(uint32_t pid);
void send_msg(uint32_t pid,void* msg,uint32_t size);
void* get_msg(uint32_t* sender);