pid管理修正

This commit is contained in:
zhangzheng
2023-12-01 22:18:10 +08:00
parent c0d24e4a49
commit 9435ca5d71
4 changed files with 17 additions and 10 deletions

View File

@@ -104,6 +104,20 @@ static int task_lock_2(spinlock_t *sp0, spinlock_t *sp1, int *st0, int *st1)
}
return TRUE;
}
int task_set_pid(task_t *task, pid_t pid)
{
task_t *cur_task = thread_get_current_task();
if (cur_task->pid == 0)
{
task->pid = pid;
return 0;
}
else
{
return -EACCES;
}
}
static void task_syscall_func(kobject_t *kobj, syscall_prot_t sys_p, msg_tag_t in_tag, entry_frame_t *f)
{
task_t *cur_task = thread_get_current_task();
@@ -186,15 +200,7 @@ static void task_syscall_func(kobject_t *kobj, syscall_prot_t sys_p, msg_tag_t i
break;
case TASK_SET_PID:
{
if (tag_task->pid == (pid_t)(-1))
{
tag_task->pid = f->r[0];
tag = msg_tag_init4(0, 0, 0, 0);
}
else
{
tag = msg_tag_init4(0, 0, 0, -EACCES);
}
tag = msg_tag_init4(0, 0, 0, task_set_pid(tag_task, f->r[0]));
}
break;
case TASK_GET_PID:

View File

@@ -70,6 +70,7 @@ static void knl_init_2(void)
void *sp_addr = (char *)init_task->mm_space.mm_block + app->i.stack_offset - app->i.data_offset;
void *sp_addr_top = (char *)sp_addr + app->i.stack_size;
task_set_pid(&init_task, 0);
thread_set_msg_bug(init_thread, (char *)(init_task->mm_space.mm_block) + app->i.ram_size);
thread_bind(init_thread, &init_task->kobj);
thread_user_pf_set(init_thread, (void *)(KNL_TEXT + INIT_OFFSET), (void *)((umword_t)sp_addr_top - 8),