/* * Copyright (c) 2020 Institute of Parallel And Distributed Systems (IPADS), Shanghai Jiao Tong University (SJTU) * OS-Lab-2020 (i.e., ChCore) is licensed under the Mulan PSL v1. * You can use this software according to the terms and conditions of the Mulan PSL v1. * You may obtain a copy of Mulan PSL v1 at: * http://license.coscl.org.cn/MulanPSL * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR * PURPOSE. * See the Mulan PSL v1 for more details. */ #include #include #include #include #include #include #include #include #include "syscall_num.h" void sys_debug(long arg) { kinfo("[syscall] sys_debug: %lx\n", arg); } void sys_putc(char ch) { /* * Lab3: Your code here * Send ch to the screen in anyway as your like */ uart_send(ch); } u32 sys_getc(void) { return uart_recv(); } /* * Lab4 * Finish the sys_get_cpu_id syscall */ u32 sys_get_cpu_id(void) { return smp_get_cpu_id(); } #pragma clang diagnostic push #pragma clang diagnostic ignored "-Winitializer-overrides" /* * Lab3: Your code here * Update the syscall table as you like to redirect syscalls * to functions accordingly */ const void *syscall_table[NR_SYSCALL] = { [0 ... NR_SYSCALL - 1] = sys_debug, [SYS_putc] = sys_putc, [SYS_exit] = sys_exit, [SYS_create_pmo] = sys_create_pmo, [SYS_map_pmo] = sys_map_pmo, [SYS_handle_brk] = sys_handle_brk, /* lab3 syscalls finished */ [SYS_getc] = sys_getc, [SYS_yield] = sys_yield, [SYS_create_device_pmo] = sys_create_device_pmo, [SYS_unmap_pmo] = sys_unmap_pmo, [SYS_create_thread] = sys_create_thread, [SYS_create_process] = sys_create_process, [SYS_register_server] = sys_register_server, [SYS_register_client] = sys_register_client, [SYS_ipc_call] = sys_ipc_call, [SYS_ipc_return] = sys_ipc_return, [SYS_cap_copy_to] = sys_cap_copy_to, [SYS_cap_copy_from] = sys_cap_copy_from, [SYS_set_affinity] = sys_set_affinity, [SYS_get_affinity] = sys_get_affinity, /* * Lab4 * Add syscall */ [SYS_get_cpu_id] = sys_get_cpu_id, [SYS_create_pmos] = sys_create_pmos, [SYS_map_pmos] = sys_map_pmos, [SYS_write_pmo] = sys_write_pmo, [SYS_read_pmo] = sys_read_pmo, [SYS_transfer_caps] = sys_transfer_caps, [SYS_ipc_reg_call] = sys_ipc_reg_call, /* TMP FS */ [SYS_fs_load_cpio] = sys_fs_load_cpio, [SYS_debug] = sys_debug }; #pragma clang diagnostic pop