Send_msg now reqires size
This commit is contained in:
parent
c679ae1bde
commit
35bba425ac
@ -182,7 +182,7 @@ void isr_handler(registers_t r) {
|
|||||||
} else if (r.eax==6) {
|
} else if (r.eax==6) {
|
||||||
r.ebx=tasking_get_msg((uint32_t*)r.ebx);
|
r.ebx=tasking_get_msg((uint32_t*)r.ebx);
|
||||||
} else if (r.eax==7) {
|
} else if (r.eax==7) {
|
||||||
tasking_send_msg(r.ebx,(void*)r.ecx);
|
tasking_send_msg(r.ebx,(void*)r.ecx,r.edx);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ Task* tasking_createTask(void* eip) {
|
|||||||
return createTaskKmode(eip,0);
|
return createTaskKmode(eip,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tasking_send_msg(uint32_t pid,void* msg) {
|
void tasking_send_msg(uint32_t pid,void* msg,uint32_t size) {
|
||||||
for (Task* task=headTask;task!=NULL;task=task->next) {
|
for (Task* task=headTask;task!=NULL;task=task->next) {
|
||||||
if (task->pid==pid) {
|
if (task->pid==pid) {
|
||||||
uint32_t cr3;
|
uint32_t cr3;
|
||||||
|
@ -7,6 +7,6 @@ void tasking_init();
|
|||||||
void tasking_yield();
|
void tasking_yield();
|
||||||
Task* tasking_createTask(void* eip);
|
Task* tasking_createTask(void* eip);
|
||||||
char isPrivleged(uint32_t pid);
|
char isPrivleged(uint32_t pid);
|
||||||
void tasking_send_msg(uint32_t pid,void* msg);
|
void tasking_send_msg(uint32_t pid,void* msg,uint32_t size);
|
||||||
void* tasking_get_msg(uint32_t* sender);
|
void* tasking_get_msg(uint32_t* sender);
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,9 +23,9 @@ void* get_msg(uint32_t* sender) {
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void send_msg(uint32_t pid,void* msg) {
|
void send_msg(uint32_t pid,void* msg,uint32_t size) {
|
||||||
asm volatile(" \
|
asm volatile(" \
|
||||||
mov $7, %%eax; \
|
mov $7, %%eax; \
|
||||||
int $80; \
|
int $80; \
|
||||||
"::"b"(pid),"c"(msg));
|
"::"b"(pid),"c"(msg),"d"(size));
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
void yield();
|
void yield();
|
||||||
void createTask(void* task);
|
void createTask(void* task);
|
||||||
char isPrivleged(uint32_t pid);
|
char isPrivleged(uint32_t pid);
|
||||||
void send_msg(uint32_t pid,void* msg);
|
void send_msg(uint32_t pid,void* msg,uint32_t size);
|
||||||
void* get_msg(uint32_t* sender);
|
void* get_msg(uint32_t* sender);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user