From 8ced5eb98d59927e0fae8fad862c56fcbdc54436 Mon Sep 17 00:00:00 2001 From: Mark Date: Tue, 11 Aug 2020 17:00:14 +0300 Subject: [PATCH] Simplify headers a bit --- drivers/usb/usb.c | 1 - fs/sysfs.c | 1 - fs/vfs.c | 2 +- include/sys/thread.h | 5 +++-- net/unix.c | 1 - sys/char/chr.c | 1 - sys/char/line.c | 4 ++-- sys/char/pipe.c | 2 +- sys/char/tty.c | 4 ---- sys/display.c | 1 - sys/execve.c | 1 - sys/init.c | 1 - sys/mem/shmem.c | 1 - sys/mod.c | 1 - sys/panic.c | 1 - sys/sys_file.c | 1 - sys/sys_net.c | 1 - sys/sys_sys.c | 1 - sys/thread.c | 17 ++++++++++++++++- sys/wait.c | 1 - 20 files changed, 23 insertions(+), 25 deletions(-) diff --git a/drivers/usb/usb.c b/drivers/usb/usb.c index 369c23d..1e34ed0 100644 --- a/drivers/usb/usb.c +++ b/drivers/usb/usb.c @@ -1,7 +1,6 @@ #include "drivers/usb/device.h" #include "drivers/usb/driver.h" #include "drivers/usb/usb.h" -#include "arch/amd64/cpu.h" #include "sys/thread.h" #include "sys/assert.h" #include "sys/sched.h" diff --git a/fs/sysfs.c b/fs/sysfs.c index f46fbd1..5a85fea 100644 --- a/fs/sysfs.c +++ b/fs/sysfs.c @@ -1,6 +1,5 @@ #include "user/fcntl.h" #include "user/errno.h" -#include "arch/amd64/cpu.h" #include "arch/amd64/mm/phys.h" #include "arch/amd64/mm/pool.h" #include "fs/sysfs.h" diff --git a/fs/vfs.c b/fs/vfs.c index c62e3d3..4530058 100644 --- a/fs/vfs.c +++ b/fs/vfs.c @@ -1,6 +1,6 @@ -#include "arch/amd64/cpu.h" #include "user/fcntl.h" #include "user/errno.h" +#include "sys/thread.h" #include "sys/block/blk.h" #include "fs/node.h" #include "sys/heap.h" diff --git a/include/sys/thread.h b/include/sys/thread.h index 55952e1..5c96e16 100644 --- a/include/sys/thread.h +++ b/include/sys/thread.h @@ -1,6 +1,7 @@ #pragma once #if defined(ARCH_AMD64) #include "arch/amd64/asm/asm_thread.h" +#include "arch/amd64/cpu.h" #endif #include "user/signum.h" #include "sys/wait.h" @@ -118,8 +119,6 @@ int process_init_thread(struct process *proc, uintptr_t entry, void *arg, int us struct thread *process_first_thread(struct process *proc); -//pid_t thread_alloc_pid(int is_user); -//void thread_ioctx_fork(struct thread *dst, struct thread *src); #define THR_INIT_USER (1 << 0) #define THR_INIT_STACK_SET (1 << 1) int thread_init(struct thread *thr, uintptr_t entry, void *arg, int flags); @@ -141,3 +140,5 @@ int thread_sleep(struct thread *thr, uint64_t deadline, uint64_t *int_time); void process_signal(struct process *proc, int signum); void thread_signal(struct thread *thr, int signum); + +struct process *task_start(void *entry, void *arg, int flags); diff --git a/net/unix.c b/net/unix.c index 64b184f..0ce732e 100644 --- a/net/unix.c +++ b/net/unix.c @@ -1,4 +1,3 @@ -#include "arch/amd64/cpu.h" #include "sys/char/ring.h" #include "user/socket.h" #include "user/errno.h" diff --git a/sys/char/chr.c b/sys/char/chr.c index 2744285..78a5297 100644 --- a/sys/char/chr.c +++ b/sys/char/chr.c @@ -1,5 +1,4 @@ #include "user/errno.h" -#include "arch/amd64/cpu.h" #include "sys/char/chr.h" #include "sys/assert.h" #include "sys/string.h" diff --git a/sys/char/line.c b/sys/char/line.c index bff6283..a3d576b 100644 --- a/sys/char/line.c +++ b/sys/char/line.c @@ -1,14 +1,14 @@ -#include "arch/amd64/cpu.h" #include "sys/char/ring.h" #include "sys/char/line.h" #include "sys/char/chr.h" #include "sys/char/tty.h" +#include "sys/thread.h" #include "sys/assert.h" #include "sys/ctype.h" #include "sys/debug.h" ssize_t line_read(struct chrdev *chr, void *buf, size_t pos, size_t lim) { - struct thread *thr = get_cpu()->thread; + struct thread *thr = thread_self; _assert(chr->type == CHRDEV_TTY); struct ring *r = &chr->buffer; diff --git a/sys/char/pipe.c b/sys/char/pipe.c index b2c170c..f964caf 100644 --- a/sys/char/pipe.c +++ b/sys/char/pipe.c @@ -1,6 +1,6 @@ -#include "arch/amd64/cpu.h" #include "sys/char/pipe.h" #include "sys/char/ring.h" +#include "sys/thread.h" #include "user/errno.h" #include "sys/assert.h" #include "sys/debug.h" diff --git a/sys/char/tty.c b/sys/char/tty.c index 4008fda..722dd51 100644 --- a/sys/char/tty.c +++ b/sys/char/tty.c @@ -1,13 +1,9 @@ -#include "arch/amd64/hw/rs232.h" -#include "arch/amd64/hw/con.h" -#include "arch/amd64/hw/ps2.h" #include "user/termios.h" #include "user/signum.h" #include "sys/char/input.h" #include "user/errno.h" #include "sys/char/line.h" #include "sys/char/ring.h" -#include "arch/amd64/cpu.h" #include "sys/char/tty.h" #include "sys/char/chr.h" #include "sys/console.h" diff --git a/sys/display.c b/sys/display.c index ff963d4..b597a51 100644 --- a/sys/display.c +++ b/sys/display.c @@ -1,5 +1,4 @@ #include "sys/mem/vmalloc.h" -#include "arch/amd64/cpu.h" #include "sys/mem/phys.h" #include "sys/font/psf.h" #include "sys/display.h" diff --git a/sys/execve.c b/sys/execve.c index 77c2ff0..410ad12 100644 --- a/sys/execve.c +++ b/sys/execve.c @@ -2,7 +2,6 @@ #include "arch/amd64/context.h" #include "arch/amd64/mm/map.h" #include "sys/mem/vmalloc.h" -#include "arch/amd64/cpu.h" #include "sys/binfmt_elf.h" #include "sys/sys_proc.h" #include "sys/mem/phys.h" diff --git a/sys/init.c b/sys/init.c index f37327e..889f196 100644 --- a/sys/init.c +++ b/sys/init.c @@ -1,6 +1,5 @@ #include "user/fcntl.h" #include "user/errno.h" -#include "arch/amd64/cpu.h" #include "sys/sys_proc.h" #include "fs/ofile.h" #include "sys/thread.h" diff --git a/sys/mem/shmem.c b/sys/mem/shmem.c index 6f9ec0e..becef90 100644 --- a/sys/mem/shmem.c +++ b/sys/mem/shmem.c @@ -1,5 +1,4 @@ #include "sys/mem/vmalloc.h" -#include "arch/amd64/cpu.h" #include "sys/mem/shmem.h" #include "sys/block/blk.h" #include "sys/mem/phys.h" diff --git a/sys/mod.c b/sys/mod.c index 65de195..ba9b022 100644 --- a/sys/mod.c +++ b/sys/mod.c @@ -1,4 +1,3 @@ -#include "arch/amd64/cpu.h" #include "fs/ofile.h" #include "fs/sysfs.h" #include "fs/vfs.h" diff --git a/sys/panic.c b/sys/panic.c index f16a324..c5625b4 100644 --- a/sys/panic.c +++ b/sys/panic.c @@ -2,7 +2,6 @@ #include "arch/amd64/smp/ipi.h" #include "arch/amd64/smp/smp.h" #endif -#include "arch/amd64/cpu.h" #include "sys/thread.h" #include "sys/sched.h" #include "sys/panic.h" diff --git a/sys/sys_file.c b/sys/sys_file.c index b7ea98a..63cf245 100644 --- a/sys/sys_file.c +++ b/sys/sys_file.c @@ -1,7 +1,6 @@ #include #include "user/errno.h" #include "arch/amd64/hw/timer.h" -#include "arch/amd64/cpu.h" #include "fs/ofile.h" #include "user/fcntl.h" #include "sys/char/ring.h" diff --git a/sys/sys_net.c b/sys/sys_net.c index d188444..423dd47 100644 --- a/sys/sys_net.c +++ b/sys/sys_net.c @@ -1,4 +1,3 @@ -#include "arch/amd64/cpu.h" #include "sys/sys_net.h" #include "sys/assert.h" #include "sys/thread.h" diff --git a/sys/sys_sys.c b/sys/sys_sys.c index e406886..7256bc4 100644 --- a/sys/sys_sys.c +++ b/sys/sys_sys.c @@ -2,7 +2,6 @@ #include "user/reboot.h" #include "user/errno.h" #include "user/time.h" -#include "arch/amd64/cpu.h" #include "sys/sys_sys.h" #include "sys/block/blk.h" #include "fs/node.h" diff --git a/sys/thread.c b/sys/thread.c index c20e9e7..960f482 100644 --- a/sys/thread.c +++ b/sys/thread.c @@ -1,7 +1,6 @@ #include "arch/amd64/mm/pool.h" #include "arch/amd64/context.h" #include "sys/mem/vmalloc.h" -#include "arch/amd64/cpu.h" #include "sys/binfmt_elf.h" #include "sys/sys_proc.h" #include "sys/mem/phys.h" @@ -291,6 +290,22 @@ void process_free(struct process *proc) { kfree(proc); } +struct process *task_start(void *entry, void *arg, int flags) { + struct process *proc = kmalloc(sizeof(struct process)); + if (!proc) { + return NULL; + } + + if (process_init_thread(proc, (uintptr_t) entry, arg, 0) != 0) { + kfree(proc); + return NULL; + } + + sched_queue(process_first_thread(proc)); + + return proc; +} + int process_init_thread(struct process *proc, uintptr_t entry, void *arg, int user) { list_head_init(&proc->g_link); list_head_init(&proc->shm_list); diff --git a/sys/wait.c b/sys/wait.c index 0c7bd78..5eebd91 100644 --- a/sys/wait.c +++ b/sys/wait.c @@ -1,5 +1,4 @@ #include "arch/amd64/hw/timer.h" -#include "arch/amd64/cpu.h" #include "user/errno.h" #include "sys/thread.h" #include "sys/assert.h"