From 24c96c13357f39e763e7afad2d83968b5c8a79b5 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Fri, 13 May 2022 21:41:27 +0800 Subject: [PATCH 01/19] basic 1 --- lab6/Makefile | 65 +++++++++ lab6/include/exception.h | 43 ++++++ lab6/include/freelist.h | 27 ++++ lab6/include/gpio.h | 45 +++++++ lab6/include/mbox.h | 48 +++++++ lab6/include/memory.h | 40 ++++++ lab6/include/mmu.h | 31 +++++ lab6/include/printf.h | 84 ++++++++++++ lab6/include/sched.h | 58 ++++++++ lab6/include/sys.h | 29 ++++ lab6/include/typedef.h | 9 ++ lab6/include/uart.h | 36 +++++ lab6/include/utils.h | 15 +++ lab6/initramfs.cpio | Bin 0 -> 247296 bytes lab6/kernel8.elf | Bin 0 -> 48576 bytes lab6/kernel8.img | Bin 0 -> 20120 bytes lab6/linker.ld | 50 +++++++ lab6/obj/exception_c.o | Bin 0 -> 13760 bytes lab6/obj/freelist_c.o | Bin 0 -> 6400 bytes lab6/obj/main_c.o | Bin 0 -> 9432 bytes lab6/obj/mbox_c.o | Bin 0 -> 4008 bytes lab6/obj/memory_c.o | Bin 0 -> 17728 bytes lab6/obj/mmu_s.o | Bin 0 -> 1096 bytes lab6/obj/printf_c.o | Bin 0 -> 9768 bytes lab6/obj/sched_c.o | Bin 0 -> 11136 bytes lab6/obj/start_s.o | Bin 0 -> 8824 bytes lab6/obj/sys_s.o | Bin 0 -> 1024 bytes lab6/obj/uart_c.o | Bin 0 -> 7872 bytes lab6/obj/utils_c.o | Bin 0 -> 7752 bytes lab6/src/exception.c | 202 +++++++++++++++++++++++++++ lab6/src/freelist.c | 70 ++++++++++ lab6/src/main.c | 128 ++++++++++++++++++ lab6/src/mbox.c | 112 +++++++++++++++ lab6/src/memory.c | 238 ++++++++++++++++++++++++++++++++ lab6/src/mmu.S | 42 ++++++ lab6/src/printf.c | 228 +++++++++++++++++++++++++++++++ lab6/src/sched.c | 152 +++++++++++++++++++++ lab6/src/start.S | 285 +++++++++++++++++++++++++++++++++++++++ lab6/src/sys.S | 50 +++++++ lab6/src/uart.c | 220 ++++++++++++++++++++++++++++++ lab6/src/utils.c | 122 +++++++++++++++++ 41 files changed, 2429 insertions(+) create mode 100644 lab6/Makefile create mode 100644 lab6/include/exception.h create mode 100644 lab6/include/freelist.h create mode 100644 lab6/include/gpio.h create mode 100644 lab6/include/mbox.h create mode 100644 lab6/include/memory.h create mode 100644 lab6/include/mmu.h create mode 100644 lab6/include/printf.h create mode 100644 lab6/include/sched.h create mode 100644 lab6/include/sys.h create mode 100644 lab6/include/typedef.h create mode 100644 lab6/include/uart.h create mode 100644 lab6/include/utils.h create mode 100644 lab6/initramfs.cpio create mode 100644 lab6/kernel8.elf create mode 100644 lab6/kernel8.img create mode 100644 lab6/linker.ld create mode 100644 lab6/obj/exception_c.o create mode 100644 lab6/obj/freelist_c.o create mode 100644 lab6/obj/main_c.o create mode 100644 lab6/obj/mbox_c.o create mode 100644 lab6/obj/memory_c.o create mode 100644 lab6/obj/mmu_s.o create mode 100644 lab6/obj/printf_c.o create mode 100644 lab6/obj/sched_c.o create mode 100644 lab6/obj/start_s.o create mode 100644 lab6/obj/sys_s.o create mode 100644 lab6/obj/uart_c.o create mode 100644 lab6/obj/utils_c.o create mode 100644 lab6/src/exception.c create mode 100644 lab6/src/freelist.c create mode 100644 lab6/src/main.c create mode 100644 lab6/src/mbox.c create mode 100644 lab6/src/memory.c create mode 100644 lab6/src/mmu.S create mode 100644 lab6/src/printf.c create mode 100644 lab6/src/sched.c create mode 100644 lab6/src/start.S create mode 100644 lab6/src/sys.S create mode 100644 lab6/src/uart.c create mode 100644 lab6/src/utils.c diff --git a/lab6/Makefile b/lab6/Makefile new file mode 100644 index 000000000..5b199e3b1 --- /dev/null +++ b/lab6/Makefile @@ -0,0 +1,65 @@ +# +# Copyright (C) 2018 bzt (bztsrc@github) +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, copy, +# modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +# + +ARMGNU ?= aarch64-linux-gnu + +SRC_DIR = src +BUILD_DIR = obj + +C_FILES = $(wildcard $(SRC_DIR)/*.c) +ASM_FILES = $(wildcard $(SRC_DIR)/*.S) +OBJ_FILES = $(C_FILES:$(SRC_DIR)/%.c=$(BUILD_DIR)/%_c.o) +OBJ_FILES += $(ASM_FILES:$(SRC_DIR)/%.S=$(BUILD_DIR)/%_s.o) +DEP_FILES = $(OBJ_FILES:%.o=%.d) +-include $(DEP_FILES) + +CFLAGS = -Wall -ffreestanding -nostdlib -nostartfiles -Iinclude -mgeneral-regs-only +ASMFLAGS = -Iinclude + +all: clean kernel8.img + +$(BUILD_DIR)/%_c.o: $(SRC_DIR)/%.c + $(ARMGNU)-gcc $(CFLAGS) -c $< -o $@ -g + +$(BUILD_DIR)/%_s.o: $(SRC_DIR)/%.S + $(ARMGNU)-gcc $(ASMFLAGS) -c $< -o $@ + +kernel8.img: $(OBJ_FILES) + aarch64-linux-gnu-ld -nostdlib -nostartfiles $(OBJ_FILES) -T linker.ld -o kernel8.elf + aarch64-linux-gnu-objcopy -O binary kernel8.elf kernel8.img + +clean: + rm kernel8.elf *.o >/dev/null 2>/dev/null || true + rm -rf $(BUILD_DIR)/* || true + +run: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none + +cpio: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -initrd initramfs.cpio + +debug: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -S -s -initrd initramfs.cpio + diff --git a/lab6/include/exception.h b/lab6/include/exception.h new file mode 100644 index 000000000..71c837096 --- /dev/null +++ b/lab6/include/exception.h @@ -0,0 +1,43 @@ +#ifndef _EXCEPTION_H +#define _EXCEPTION_H + +#include "typedef.h" + +// save_all, load_all 的 register 用 struct 包起來,方便操作 +typedef struct Trapframe { + uint64_t x[31]; // general register from x0 ~ x30 + uint64_t sp_el0; + uint64_t elr_el1; + uint64_t spsr_el1; +} Trapframe; + +typedef struct cpio_newc_header { + char c_magic[6]; + char c_ino[8]; + char c_mode[8]; + char c_uid[8]; + char c_gid[8]; + char c_nlink[8]; + char c_mtime[8]; + char c_filesize[8]; + char c_devmajor[8]; + char c_devminor[8]; + char c_rdevmajor[8]; + char c_rdevminor[8]; + char c_namesize[8]; + char c_check[8]; +} cpio_newc_header; + +extern void enable_irq(); +extern void disable_irq(); +void sync_exception_router(uint64_t esr_el1, uint64_t elr_el1, Trapframe *trapframe); +void syscall(uint64_t syscall_num, Trapframe* trapframe); +void sys_getpid(Trapframe *trapframe); +void sys_uart_read(Trapframe *trapframe); +void sys_uart_write(Trapframe *trapframe); +void sys_exec(Trapframe *trapframe); +void sys_fork(Trapframe *trapframe); +void sys_exit(Trapframe *trapframe); +void sys_mbox_call(Trapframe *trapframe); +void sys_kill(Trapframe *trapframe); +#endif /* _EXCEPTION_H */ \ No newline at end of file diff --git a/lab6/include/freelist.h b/lab6/include/freelist.h new file mode 100644 index 000000000..665a1fd79 --- /dev/null +++ b/lab6/include/freelist.h @@ -0,0 +1,27 @@ +#ifndef FREELISTS_H +#define FREELISTS_H + +#define BELONG_LEFT -1 +#define ALLOCATED -2 +#define RESERVED -3 + +struct Node { + struct Node *next; + struct Node *prev; + int index; +}; + +struct Freelist { + struct Node *head; +}; + +typedef struct Node Node; +typedef struct Freelist Freelist; + +void freelist_init(Freelist *, Node *); +void freelist_push(Freelist *, Node *, int); +void freelist_remove(Freelist *, Node *, int); +void freelist_print(int, Freelist *); +void print_freelists(); + +#endif diff --git a/lab6/include/gpio.h b/lab6/include/gpio.h new file mode 100644 index 000000000..4640ac347 --- /dev/null +++ b/lab6/include/gpio.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ +#include "mmu.h" +#define MMIO_BASE (VA_START | 0x3F000000) + +#define GPFSEL0 ((volatile unsigned int*)(MMIO_BASE+0x00200000)) +#define GPFSEL1 ((volatile unsigned int*)(MMIO_BASE+0x00200004)) +#define GPFSEL2 ((volatile unsigned int*)(MMIO_BASE+0x00200008)) +#define GPFSEL3 ((volatile unsigned int*)(MMIO_BASE+0x0020000C)) +#define GPFSEL4 ((volatile unsigned int*)(MMIO_BASE+0x00200010)) +#define GPFSEL5 ((volatile unsigned int*)(MMIO_BASE+0x00200014)) +#define GPSET0 ((volatile unsigned int*)(MMIO_BASE+0x0020001C)) +#define GPSET1 ((volatile unsigned int*)(MMIO_BASE+0x00200020)) +#define GPCLR0 ((volatile unsigned int*)(MMIO_BASE+0x00200028)) +#define GPLEV0 ((volatile unsigned int*)(MMIO_BASE+0x00200034)) +#define GPLEV1 ((volatile unsigned int*)(MMIO_BASE+0x00200038)) +#define GPEDS0 ((volatile unsigned int*)(MMIO_BASE+0x00200040)) +#define GPEDS1 ((volatile unsigned int*)(MMIO_BASE+0x00200044)) +#define GPHEN0 ((volatile unsigned int*)(MMIO_BASE+0x00200064)) +#define GPHEN1 ((volatile unsigned int*)(MMIO_BASE+0x00200068)) +#define GPPUD ((volatile unsigned int*)(MMIO_BASE+0x00200094)) +#define GPPUDCLK0 ((volatile unsigned int*)(MMIO_BASE+0x00200098)) +#define GPPUDCLK1 ((volatile unsigned int*)(MMIO_BASE+0x0020009C)) diff --git a/lab6/include/mbox.h b/lab6/include/mbox.h new file mode 100644 index 000000000..87bf5fb8c --- /dev/null +++ b/lab6/include/mbox.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +/* a properly aligned buffer */ +//extern volatile unsigned int mbox[36]; + +#define MBOX_REQUEST 0 + +/* channels */ +#define MBOX_CH_POWER 0 +#define MBOX_CH_FB 1 +#define MBOX_CH_VUART 2 +#define MBOX_CH_VCHIQ 3 +#define MBOX_CH_LEDS 4 +#define MBOX_CH_BTNS 5 +#define MBOX_CH_TOUCH 6 +#define MBOX_CH_COUNT 7 +#define MBOX_CH_PROP 8 + +/* tags */ +#define MBOX_TAG_GETSERIAL 0x10004 +#define MBOX_TAG_LAST 0 + +int mboxc_mbox_call(unsigned char ch, unsigned int *mbox); +int get_board_revision(); +int get_arm_memory(); diff --git a/lab6/include/memory.h b/lab6/include/memory.h new file mode 100644 index 000000000..6dc6b509a --- /dev/null +++ b/lab6/include/memory.h @@ -0,0 +1,40 @@ +#ifndef MEMORY_H +#define MEMORY_H + +#define MEMORY_BASE 0xFFFF000000000000 +#define CPIO_SIZE 247296 +#define PAGE_SIZE 0x1000UL // 4KB +#define MAX_PAGES 0x40000 // total 0x40000000 +#define LOG2_MAX_PAGES 18 +#define LOG2_MAX_PAGES_PLUS_1 19 +#define NULL 0 + + +#include "freelist.h" +#include "typedef.h" + +struct block_meta { + int size; + short free; + short pagetail; + struct block_meta *next; +}; + +struct blocklist { + struct block_meta *head; +}; + +typedef struct block_meta block_meta; +typedef struct blocklist blocklist; +#define BLOCK_SIZE (sizeof(block_meta)) + +void memory_init(void); +int find_allocate_list(Freelist *, int); +int allocate_page(Freelist *, Node *, int *, int, int); +void free_page(Freelist *, Node *, int *, int); +void *malloc(size_t); +void free(void *); +void reserve_memory(ulong start, ulong end); +void print_memory(); + +#endif // _MEMORY_H diff --git a/lab6/include/mmu.h b/lab6/include/mmu.h new file mode 100644 index 000000000..82a420e81 --- /dev/null +++ b/lab6/include/mmu.h @@ -0,0 +1,31 @@ +#ifndef _MMU_H +#define _MMU_H + +//#define KERNEL_VIRT_BASE 0xFFFF000000000000 +#define KERNEL_VIRT_BASE 0x0 +// tcr +// https://developer.arm.com/documentation/ddi0595/2021-06/AArch64-Registers/TCR-EL1--Translation-Control-Register--EL1- +#define TCR_CONFIG_REGION_48bit (((64 - 48) << 0) | ((64 - 48) << 16)) +#define TCR_CONFIG_4KB ((0b00 << 14) | (0b10 << 30)) +#define TCR_CONFIG_DEFAULT (TCR_CONFIG_REGION_48bit | TCR_CONFIG_4KB) + +// mair +// https://developer.arm.com/documentation/ddi0595/2021-06/AArch64-Registers/MAIR-EL1--Memory-Attribute-Indirection-Register--EL1- +#define MAIR_DEVICE_nGnRnE 0b00000000 +#define MAIR_NORMAL_NOCACHE 0b01000100 +#define MAIR_IDX_DEVICE_nGnRnE 0 +#define MAIR_IDX_NORMAL_NOCACHE 1 + +// identity paging +#define PD_TABLE 0b11 +#define PD_BLOCK 0b01 +#define PD_ACCESS (1 << 10) +#define BOOT_PGD_ATTR PD_TABLE +#define BOOT_PUD_ATTR (PD_ACCESS | (MAIR_IDX_DEVICE_nGnRnE << 2) | PD_BLOCK) + + +#define VA_START 0xFFFF000000000000 +#define VA_MASK 0x0000FFFFFFFFFFFF +#define LOW_MEMORY 0x80000 + +#endif \ No newline at end of file diff --git a/lab6/include/printf.h b/lab6/include/printf.h new file mode 100644 index 000000000..7b53b8421 --- /dev/null +++ b/lab6/include/printf.h @@ -0,0 +1,84 @@ +/* +File: printf.h +Copyright (C) 2004 Kustaa Nyholm +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +This library is really just two files: 'printf.h' and 'printf.c'. +They provide a simple and small (+200 loc) printf functionality to +be used in embedded systems. +I've found them so usefull in debugging that I do not bother with a +debugger at all. +They are distributed in source form, so to use them, just compile them +into your project. +Two printf variants are provided: printf and sprintf. +The formats supported by this implementation are: 'd' 'u' 'c' 's' 'x' 'X'. +Zero padding and field width are also supported. +If the library is compiled with 'PRINTF_SUPPORT_LONG' defined then the +long specifier is also +supported. Note that this will pull in some long math routines (pun intended!) +and thus make your executable noticably longer. +The memory foot print of course depends on the target cpu, compiler and +compiler options, but a rough guestimate (based on a H8S target) is about +1.4 kB for code and some twenty 'int's and 'char's, say 60 bytes of stack space. +Not too bad. Your milage may vary. By hacking the source code you can +get rid of some hunred bytes, I'm sure, but personally I feel the balance of +functionality and flexibility versus code size is close to optimal for +many embedded systems. +To use the printf you need to supply your own character output function, +something like : + void putc ( void* p, char c) + { + while (!SERIAL_PORT_EMPTY) ; + SERIAL_PORT_TX_REGISTER = c; + } +Before you can call printf you need to initialize it to use your +character output function with something like: + init_printf(NULL,putc); +Notice the 'NULL' in 'init_printf' and the parameter 'void* p' in 'putc', +the NULL (or any pointer) you pass into the 'init_printf' will eventually be +passed to your 'putc' routine. This allows you to pass some storage space (or +anything really) to the character output function, if necessary. +This is not often needed but it was implemented like that because it made +implementing the sprintf function so neat (look at the source code). +The code is re-entrant, except for the 'init_printf' function, so it +is safe to call it from interupts too, although this may result in mixed output. +If you rely on re-entrancy, take care that your 'putc' function is re-entrant! +The printf and sprintf functions are actually macros that translate to +'tfp_printf' and 'tfp_sprintf'. This makes it possible +to use them along with 'stdio.h' printf's in a single source file. +You just need to undef the names before you include the 'stdio.h'. +Note that these are not function like macros, so if you have variables +or struct members with these names, things will explode in your face. +Without variadic macros this is the best we can do to wrap these +fucnction. If it is a problem just give up the macros and use the +functions directly or rename them. +For further details see source code. +regs Kusti, 23.10.2004 +*/ + + +#ifndef __TFP_PRINTF__ +#define __TFP_PRINTF__ + +#include + +void init_printf(void* putp,void (*putf) (void*,char)); + +void tfp_printf(char *fmt, ...); +void tfp_sprintf(char* s,char *fmt, ...); + +void tfp_format(void* putp,void (*putf) (void*,char),char *fmt, va_list va); + +#define printf tfp_printf +#define sprintf tfp_sprintf + +#endif \ No newline at end of file diff --git a/lab6/include/sched.h b/lab6/include/sched.h new file mode 100644 index 000000000..cee766faa --- /dev/null +++ b/lab6/include/sched.h @@ -0,0 +1,58 @@ +#ifndef _SCHED_H +#define _SCHED_H +#include "typedef.h" + +struct cpu_context { + unsigned long x19; + unsigned long x20; + unsigned long x21; + unsigned long x22; + unsigned long x23; + unsigned long x24; + unsigned long x25; + unsigned long x26; + unsigned long x27; + unsigned long x28; + unsigned long fp; + unsigned long lr; + unsigned long sp; +}; + +struct Thread { + struct cpu_context cpu_context; + int state; + int counter; + int priority; + int preempt_count; + int pid; + int status; + uint64_t kernel_sp; + uint64_t user_sp; + +}; + +typedef struct Thread Thread; +#define INIT_TASK \ +/*cpu_context*/ { {0,0,0,0,0,0,0,0,0,0,0,0,0}, \ +/* state etc */ 0,0,1,0,0,0,0xffff000000080000,0 \ +} +#define NR_TASKS 64 +#define THREAD_SIZE 4096 + +#define TASK_RUNNING 0 +#define TASK_ZOMBIE 1 + +Thread *current_thread(); +int thread_create(void *func); +void preempt_disable(void); +void preempt_enable(void); +void _schedule(); +void schedule(); + +void idle(); +void timer_tick(); +void kill_zombies(); +void task_init(void); + + +#endif //_SCHED_H \ No newline at end of file diff --git a/lab6/include/sys.h b/lab6/include/sys.h new file mode 100644 index 000000000..612be215c --- /dev/null +++ b/lab6/include/sys.h @@ -0,0 +1,29 @@ +#ifndef _SYS_H +#define _SYS_H + +#define SYS_GETPID 0 +#define SYS_UART_READ 1 +#define SYS_UART_WRITE 2 +#define SYS_EXEC 3 +#define SYS_FORK 4 +#define SYS_EXIT 5 +#define SYS_MBOX_CALL 6 +#define SYS_KILL 7 + +#endif + +#ifndef __ASSEMBLY__ + +#include "typedef.h" + +/* Function in sys.S */ +extern int getpid(); +extern size_t uartread(char buf[], size_t size); +extern size_t uartwrite(const char buf[], size_t size); +extern int exec(const char *name, char *const argv[]); +extern int fork(); +extern void exit(int status); +extern int mbox_call(unsigned char ch, unsigned int *mbox); +extern void kill(int pid); + +#endif \ No newline at end of file diff --git a/lab6/include/typedef.h b/lab6/include/typedef.h new file mode 100644 index 000000000..ff8d6ad69 --- /dev/null +++ b/lab6/include/typedef.h @@ -0,0 +1,9 @@ +#ifndef _TYPEDEF_H +#define _TYPEDEF_H + +#define uint unsigned int +#define ulong unsigned long +#define uint64_t unsigned long +#define size_t unsigned long +//#define DEBUG 0 +#endif /* _TYPEDEF_H */ \ No newline at end of file diff --git a/lab6/include/uart.h b/lab6/include/uart.h new file mode 100644 index 000000000..7217f4bba --- /dev/null +++ b/lab6/include/uart.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +void uart_init(); +void uart_send(unsigned int c); +char uart_getc(); +char uart_getc_pure(); +void uart_int(int i); +void uart_uint(unsigned int i); +void uart_ulong(unsigned long i); +void uart_puts(char *s); +void uart_hex(unsigned int d); +void uart_hex_long(unsigned long d); +void putc(void *p, char c); diff --git a/lab6/include/utils.h b/lab6/include/utils.h new file mode 100644 index 000000000..b0d595549 --- /dev/null +++ b/lab6/include/utils.h @@ -0,0 +1,15 @@ +#ifndef UTILS_H +#define UTILS_H + +#define DEBUG 0 +int strcmp(char *s1, char *s2); +int hex_to_int(char *p, int size); +void *get_user_program_address(); +void shell_input(char *input); +int log2(int x); +int pow2(int x); +unsigned long cstr_to_ulong(char *s); +void* simple_malloc(void **now, int size); +void debug(char *, int); + +#endif \ No newline at end of file diff --git a/lab6/initramfs.cpio b/lab6/initramfs.cpio new file mode 100644 index 0000000000000000000000000000000000000000..0676fb1584617bc4d73624b3b212a12133e97d8e GIT binary patch literal 247296 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 N9j5>3; diff --git a/lab6/obj/exception_c.o b/lab6/obj/exception_c.o new file mode 100644 index 0000000000000000000000000000000000000000..032887a3f3ab99e2f54fbb3de77b45993fb71db6 GIT binary patch literal 13760 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 Rux|eS6cFX6X~L)N{~s`d<$C}C literal 0 HcmV?d00001 diff --git a/lab6/obj/main_c.o b/lab6/obj/main_c.o new file mode 100644 index 0000000000000000000000000000000000000000..324202fe0a621b44ad3168cf790710dc3c2aeefc GIT binary patch literal 9432 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 LPlhzrt8V`vu%Guw literal 0 HcmV?d00001 diff --git a/lab6/obj/mbox_c.o b/lab6/obj/mbox_c.o new file mode 100644 index 0000000000000000000000000000000000000000..5511c8d195745851d4ee144a009a07bde22b044c GIT binary patch literal 4008 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 A1ONa4 literal 0 HcmV?d00001 diff --git a/lab6/obj/mmu_s.o b/lab6/obj/mmu_s.o new file mode 100644 index 0000000000000000000000000000000000000000..46e833b80741cfe89c2b73b1eb961919f9eb5971 GIT binary patch literal 1096 zcmbtT%SyvQ6g|mQtsoe8f}5blg-F1i%fS~e{DAI4+J;tWp(L}YEBguRC%BR>-MDd4 z`~nf`2lxdp?aq6XnKqqP1Ra>%bI;5(l?{IVk z`RIDui_Y`l^|ND7vghO>G;&H4>PH|Jz8R=g<1#B1m^aOPGvA?nr-Rn41$BsPpWnZ( z`88|*rsg>o#~vkKkubQ@L#2T&ndM^8t- z`c*@64AQF(2`H*0k1d0exE%#5?kNO~NJR*0X9XHsozQtT6A&%f%~ukedae9ifvn&JNNwCm?Pw9jVA WP#1c@NnzOaZ_wHzy{C)%P5%ws;Y)o0 literal 0 HcmV?d00001 diff --git a/lab6/obj/printf_c.o b/lab6/obj/printf_c.o new file mode 100644 index 0000000000000000000000000000000000000000..e8ff38266df7b35b3d2d0e2c3ae930e0f2978f85 GIT binary patch literal 9768 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 literal 0 HcmV?d00001 diff --git a/lab6/obj/sched_c.o b/lab6/obj/sched_c.o new file mode 100644 index 0000000000000000000000000000000000000000..6e2f4f9ff90d2178ef618e57c915def14ce11403 GIT binary patch literal 11136 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 literal 0 HcmV?d00001 diff --git a/lab6/obj/start_s.o b/lab6/obj/start_s.o new file mode 100644 index 0000000000000000000000000000000000000000..2882af1eaf34b643c97c663dc21077cb25dbebfb GIT binary patch literal 8824 zcmeI1UuYaf9LIn6r%j@%z5a=JHL1CiY7ykTSZYtIX7lG-6H}9hKmtDOUG6ry!`$t4 zZ(}Y&F=C;DJ~R;Qi(nKVItbDy#V3Q$KD3eRn|K6~TB=x)l1iHOH@h=;%jE8*5SHK# z+1=lKX6E;u`OWNX_V&Hl&>6SO1w6UnTd3wZ1&9W#wq%+Tv_NweHmpVj8WCtjpb>#a z1R4?8H4!)ju#C@pUpK%Kc6yl~ls$C`0!_$5mtew3hCT}76`=E`9Q2e7!|-=sgpFP= zod3ZvPOf_7n*i6=;6O)d1s2yp>L|U6N7?fka+(idK2TbPl{M%IFb;=}54<s$UozckbCl@WMjIO{HyLGn{$tm zww`F|MJZbH=|`Oy>YPEH zv#9eL>I|UHAo_V7b%s#q9O}G5u%AnGEIZL(7>$-f*#C8pH3z$@?{sc)jqIjA2X|qg zcQVGEct1CeMhqHj;QzMO9sjDs`ae3X-|X=G#~mKO*ITc4_5KL9N*vRdr@$`y#(dcCD@Gp1ZYdhK5v4F zAi#ID&Y=+?Z4)lykGsi{w1>3kz2s|HOzyPEPcYQ}JH%Qo4_v&i9j7 ziZSwRM7rPYf~EJbTUv|PqoyW!;V%BxFh+eFy&jYO!mjk4C+_aX-w$@~{StlKl40bSr{908XPwBUU*sH9gM#t@F?Sp z0zbic#Ogq$bdd2o0#7l%A`E$f@iAe@pP2lvAqnyQiq(e$rcpWZICurl>o*IWE*4*n zcz$j2irb3uO&$Jy9e$$@|G5soRfqp!axYl%!wgFg@ap3k+jSoXq81OC99M<#Defre zLZc|-tpXopJR0b6y$=Q&~$ER78JnRIX=)XYoL+JNMuc&)fEl&OqO;ahqgAG*G-w~K;Kr9 zx~egmq^hB!SzpPS!iBkvo=l@_n8scvXEja9>5x)p67yhHF^87Q6litR)@F0Ep2i`h zAg?J(Hm}RfnUYKK5)HkXGc=`YZ&mKxgE*fDZPVY%>~`e%n{_4e>89M;1Fa%%Q{Gmo z4G>^9_5ZkyU&cI5wEh#8X`cJpzD9Ywjc?T9SJ{3i*5@}b)wT9y%h^RXfB^E4%|E{% zsGp~8{7Y7!@@H(E@0)JqejE3({gHm+=VLdE!-e@Qt|$l>bj`Y^xuq*b9m1)Eo`5he zHVA7t$ze*vld7uQyg$52V~JgYy@Cr#$nz|%YfmA}P$oQHK(be|*<$NsxsRI%c5~30vAYy}oAq%JjBYSaLL!-7Ta*PNQj66n1-hh>n z86m_Y@EDwlqn@r|fRh}5_p|ShW8a^goz{W?r3HA#%quAn*O>m1F_utA0}pSs|NSNG zezckHFg;-Uk?ALL*~ z%k!4tJDwj1-uC=h@O{raf**Q*E;w2_uC%>Q`?yiY8m$U(Yf`JBbKS$`#0*KL7UN`+ zcYA6y!Z4)|qU>&LRYJ2h#XKmL)wxB~S5_fPvP@R}v%g6Z?(f${WbFM5!QH)Z+a|}w z%bT6@O-#$1-leq$jsM2Gd{wV)O5E9zFStnB4Oh!q`A(Ke%i3=J)5pnoAp2kcCBEsK K+H=X6$@p)93{qYI literal 0 HcmV?d00001 diff --git a/lab6/obj/uart_c.o b/lab6/obj/uart_c.o new file mode 100644 index 0000000000000000000000000000000000000000..06bf55cc20b222f81e2a0fb07b4df94a2635e324 GIT binary patch literal 7872 zcmb_he{5UT6+X}QO`JMSlbAw70)CFdMt|5&L&jQ2iPP|_&{3AQ6Wgk#PU0k{u9Mmh zEi|G=hJWABX_NCyW4zEx3mGe^F;ygtq zxhAbx#MovDhsWmB8fCL`(dJZCVV-!*we?z@hxcpy&d>P=f49(2zbUVxS;k5p9|*A# zwKj8}Y|fJ>rukLLS&ox!U_YaIs&i0P4(2cS(&ln+a&x4c4(uh`#be&5q*WUDfADIK zi-&*m-HU#jDMx6w97)b{Ouxi>Cq-!hrS>>uWk22Sl|KME)j0Bv@QJ9@Tu#uejqyC| zzwz~fxi_BA+tc>xSpRM?a`8<1*y6{P3d&$}7RrEo5Rq_MG{+>6s^*Xj*n!TK3 zgHHL+z8}J$bIIwsW7dWKGl=VZ^!NME5Lpk?`6Fi#*XuH_UbT0yb@#3pd-pA8?{Fqu zE*o6LTpmB3(J?6-cfY_Z_Y1tJf6soss`l%rZcO#?nd8FQ*&Ml=4y3q-aaQEM1GfS+ zGmkY{t}&^L8t6j}@cHE5#lx>GsfCiiG{7~3LPt%Z4zW*m$K2&qj~ZPM-`2yo4myzG zbBc4p=akUT14nI!w2oVYjg>Wc_eJmeMlHhUQmwH*;=%e)QGN0o><4$sy)Ewa6Ke zoQ{JpxMX{HAvEiF50e$hdf`$YAw&uWWqeY6(zSR~>a)c|Y>^@BWW-gQ^s>zeJPln~2IpS27_2mlv zyIlRJl>Q!9e3Zy1GASKjGRA75_9fNZpvLyVs40eTcVmo~&W~nyjlD!XbY{ zYeSROT-$gVG8VUbTl@{zg{}{64t=_X;pCbpwzgPdEF#DsbR^rtzBM>0t0)vA5*_Gn z01aa7HdJbrEQk}u+S|ZW2PL(F!?VJ&wuO0xP?WZX6QHd3y0IDYiD@`MIYJk5KaJutn^^~74p`vjE-Ko%yG;o0>`vB&R0h1gW?U?w*bE2f6B=>mk%8{QWi&ZY|EvB~^IF+E(&OynFdIke&N zRNk3QP8ACp&lG7SGnUc76l?NP9UM;|atDJP8{rry)F}qTup=$Nb7wRqm82~vh3J<4 z{_E_kcMnbFic?MwVjHLAY~%f1o$=1@wGK*+xCXdc_YF|s(3MteeS~mX${*wMHtuU^ ze9Y(j!WrC|_%5Sv7NE&n9kM$WzTJUIz8Qe;Quv6%-a1+kPLSMsymEBTZomhzXBT)wsY8j?>3Pt+DXa%l&hJ&wKobl`-4w?}?K*_Rx- zT>mQ`c^hAtXeEBA^}TZbmf*IDAAJpyf4j10s9Ix_0KK!JQYz zay(**J_CM|pHE9s2S_Q_hT*;$ejguQa_Zhai?@*HQdzvUmR?QrKBB!UKds2CzEjw((lYo4l{ZsA zy9^#w`84%!T?Rk94BnygY4U7Z2LHh_c&Ez0$uqqS{@^mWg2{)xc~4l3dA*|eX! z{%r%-=PPO8`utM7aPNM6$D%Lhoqk-8^66|UUQ8b`Kc*E?dVFv+ zpW2^RS@`6g4O32mw`Q0v$qzL1Piyu1aD;fa;>TDLKX2QMe+b~VN#&RCXC4L_L|fx@ z^eOa=tJj-CiQY6FQW8by>hbppbAD3$Yhi10GPz#=U3K0V<7VpO{~oHw|0MrGfYzxT zOx@j(nHZ~oUww+|bFL{&T|U3n_U|?PGZHs#&;GOT zrvDjWCMO_zORYcqAM!T>-D>NfSL^FK;q{r)Tz?7}udn^YP_`%3i~cUdIX%^V3EI`{ z-{lWzv~^DBKDC|hzXpjOyGj_Wss5?HME8WUH`3(VoBr$g^;$?TFL4Pcv8SS2g=J>I3aL*U}l7_WuU2 Cez2+l literal 0 HcmV?d00001 diff --git a/lab6/obj/utils_c.o b/lab6/obj/utils_c.o new file mode 100644 index 0000000000000000000000000000000000000000..ff591cfacedde740e311731ad381c10c536581bb GIT binary patch literal 7752 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 Qi|HSh0MFJm&A`?F9~6nVg#Z8m literal 0 HcmV?d00001 diff --git a/lab6/src/exception.c b/lab6/src/exception.c new file mode 100644 index 000000000..6182d2197 --- /dev/null +++ b/lab6/src/exception.c @@ -0,0 +1,202 @@ +// https://developer.arm.com/documentation/ddi0595/2021-06/AArch64-Registers/ESR-EL1--Exception-Syndrome-Register--EL1- + +#include "utils.h" +#include "exception.h" +#include "sys.h" +#include "printf.h" +#include "sched.h" +#include "memory.h" +#include "uart.h" +#include "mbox.h" + +extern void end_thread(void); +extern void ret_from_fork(void); +extern Thread *task[]; +extern void delay(int); + +void sync_exc_router(uint64_t esr_el1, uint64_t elr_el1, Trapframe *trapframe) { + int ec = (esr_el1 >> 26) & 0b111111; + int iss = esr_el1 & 0x1FFFFFF; + if (ec == 0b010101) { // is system call + uint64_t syscall_num = trapframe->x[8]; + //printf("[SYSCALL] %d\n", syscall_num); + syscall(syscall_num, trapframe); + } + else { + printf("Exception return address 0x%x\n", elr_el1); + printf("Exception class (EC) 0x%x\n", ec); + printf("Instruction specific syndrome (ISS) 0x%x\n", iss); + while(1){ + ; + } + } +} + +void syscall(uint64_t syscall_num, Trapframe* trapframe) { + switch (syscall_num) { + case SYS_GETPID: + sys_getpid(trapframe); + break; + + case SYS_UART_READ: + sys_uart_read(trapframe); + break; + + case SYS_UART_WRITE: + sys_uart_write(trapframe); + break; + + case SYS_EXEC: + sys_exec(trapframe); + break; + + case SYS_FORK: + sys_fork(trapframe); + break; + + case SYS_EXIT: + sys_exit(trapframe); + break; + + case SYS_MBOX_CALL: + sys_mbox_call(trapframe); + break; + case SYS_KILL: + sys_kill(trapframe); + break; + } + return; +} + +void sys_getpid(Trapframe *trapframe) { + trapframe->x[0] = current_thread()->pid; +} + +void sys_uart_read(Trapframe *trapframe) { + char *buf = (char *)trapframe->x[0]; + size_t size = (size_t)trapframe->x[1]; + enable_irq(); // 避免卡在 read 裡 + for (int i = 0; i < size; i++) { + *(buf + i) = uart_getc(); + } + disable_irq(); + trapframe->x[0] = size; +} + +void sys_uart_write(Trapframe *trapframe) { + const char *buf = (const char *)trapframe->x[0]; + size_t size = (size_t)trapframe->x[1]; + enable_irq(); + for (int i = 0; i < size; i++) { + uart_send(*(buf + i)); + } + disable_irq(); + trapframe->x[0] = size; +} + +void sys_exec(Trapframe *trapframe) { + preempt_disable(); + char *input = (char *)trapframe->x[0]; + char *program_pos; + cpio_newc_header *fs = (cpio_newc_header *)0x8000000; + char *current = (char *)0x8000000; + int name_size; + int file_size; + while (1) { + fs = (cpio_newc_header *)current; + name_size = hex_to_int(fs->c_namesize, 8); + file_size = hex_to_int(fs->c_filesize, 8); + current += 110; + if (strcmp(current, "TRAILER!!!") == 0) { + uart_puts("No such file!\n"); + break; + } + if (strcmp(current, input) == 0) { + current += name_size; + while ((current - (char *)fs) % 4 != 0) + current++; + program_pos = (char *)current; + break; + } else { + current += name_size; + while ((current - (char *)fs) % 4 != 0) + current++; + current += file_size; + while ((current - (char *)fs) % 4 != 0) + current++; + } + } + char *new_program_pos = (char *)malloc(file_size); + for (int i = 0; i < file_size; i++) { + *(new_program_pos+i) = *(program_pos+i); + } + printf("program pos : %x\n", new_program_pos); + preempt_enable(); + Thread *cur = current_thread(); + asm volatile("msr sp_el0, %0" : : "r"(cur->user_sp)); + asm volatile("msr elr_el1, %0": : "r"(new_program_pos)); + asm volatile("msr spsr_el1, %0" : : "r"(0x0)); + asm volatile("eret"); + trapframe->x[0] = 0; +} + +void sys_fork(Trapframe *trapframe) { + Thread *parent = current_thread(); + /* + ret_from_fork 會把 child_trapframe load to register, + 這樣跑 child thread 時就會用到 child_trapframe 更改的 sp + */ + int newpid = thread_create(ret_from_fork); + + Thread *child = task[newpid]; + + printf("child: %x\n", child); + + // copy kernel stack and user stack + uint64_t kstack_offset = (char *)parent->kernel_sp - (char *)trapframe; + uint64_t ustack_offset = (char *)parent->user_sp - (char *)trapframe->sp_el0; + + // copy kernel stack (including trapframe) + for (uint64_t i = 1; i <= kstack_offset; i++) { + *((char *)(child->kernel_sp - i)) = *((char *)(parent->kernel_sp - i)); + } + + // copy user stack + for (uint64_t i = 1; i <= ustack_offset; i++) { + *((char *)(child->user_sp - i)) = *((char *)(parent->user_sp - i)); + } + + child->cpu_context.sp = child->kernel_sp - kstack_offset; + + Trapframe *child_trapframe = (Trapframe *)child->cpu_context.sp; + child_trapframe->sp_el0 = child->user_sp - ustack_offset; + printf("child sp: %x\n", child_trapframe->sp_el0); + + trapframe->x[0] = child->pid; + child_trapframe->x[0] = 0; +} + +void sys_exit(Trapframe *trapframe) { + current_thread()->status = trapframe->x[0]; + end_thread(); +} + +void sys_mbox_call(Trapframe *trapframe) { + unsigned char ch = (unsigned char)trapframe->x[0]; + unsigned int *mbox = (unsigned int *)trapframe->x[1]; + int ret = mboxc_mbox_call(ch, mbox); // defined in mbox.c + trapframe->x[0] = ret; +} + +void timer_interrupt(int i) { + unsigned long cntfrq_el0; + asm volatile ("mrs %0, cntfrq_el0":"=r" (cntfrq_el0)); + asm volatile ("lsr %0, %0, #5":"=r" (cntfrq_el0) :"r"(cntfrq_el0)); // 1/32 second tick + asm volatile ("msr cntp_tval_el0, %0" : : "r"(cntfrq_el0)); + timer_tick(); +} + +void sys_kill(Trapframe *trapframe) { + int pid = trapframe->x[0]; + task[pid]->state = TASK_ZOMBIE; +} \ No newline at end of file diff --git a/lab6/src/freelist.c b/lab6/src/freelist.c new file mode 100644 index 000000000..87fcdfd3e --- /dev/null +++ b/lab6/src/freelist.c @@ -0,0 +1,70 @@ +#include "memory.h" +#include "freelist.h" +#include "uart.h" +#include "utils.h" +#include "printf.h" + +extern Freelist *heads; +extern int *frame_array; + +void freelist_push(Freelist *list, Node *nodes, int num) { + nodes[num].next = NULL; + nodes[num].prev = NULL; + if (!list->head) { + list->head = &nodes[num]; + return; + } + Node *node = list->head; + node->prev = &nodes[num]; + nodes[num].next = node; + list->head = &nodes[num]; + return; +} + +void freelist_remove(Freelist *list, Node *nodes, int num) { + Node *current = &nodes[num]; + Node *pre = current->prev; + // Remove the target by updating the head or the previous node. + if (pre==NULL) { + list->head = current->next; + if (current->next != NULL) { + current->next->prev = pre; + } + } + else { + if (current->next == NULL) { + pre->next = current->next; + } + else { + current->next->prev = pre; + pre->next = current->next; + } + } + current->prev = NULL; + current->next = NULL; +} + +void print_freelists() { + uart_puts("-----------Freelists------------\n"); + for(int i = LOG2_MAX_PAGES; i >= 0; i--) { + freelist_print(i, &heads[i]); + } + // uart_puts("-------------Pages--------------\n"); + // for (int j = 0; j < (MAX_PAGES/16); j++) { + // for (int i = 0; i < 16; i++) { + // uart_int(frame_array[16*j+i]); + // uart_puts(" "); + // } + // uart_puts("\n"); + // } +} +void freelist_print(int level, Freelist *list) { + uart_puts("Level "); + uart_int(level); + uart_puts(": "); + for (Node *node = list->head; node != NULL; node = node->next) { + uart_uint(node->index); + uart_puts(" "); + } + uart_puts("\n"); +} diff --git a/lab6/src/main.c b/lab6/src/main.c new file mode 100644 index 000000000..4493803e7 --- /dev/null +++ b/lab6/src/main.c @@ -0,0 +1,128 @@ +#include "uart.h" +#include "utils.h" +#include "freelist.h" +#include "memory.h" +#include "sched.h" +#include "printf.h" +#include "typedef.h" +#include "sys.h" +#include "mbox.h" +#define N 5 + +extern void delay(); +extern void core_timer_enable(); +extern void set_exception_vector_table(); + + +void cpu_timer_register_enable() { // 讓 el0 用 clock 不會 interrupt + uint64_t tmp; + asm volatile("mrs %0, cntkctl_el1" : "=r"(tmp)); + tmp |= 1; + asm volatile("msr cntkctl_el1, %0" : : "r"(tmp)); +} + +void fork_test(){ + printf("\nFork Test, pid %d\n", getpid()); + int cnt = 1; + int ret = 0; + if ((ret = fork()) == 0) { // child + long long cur_sp; + asm volatile("mov %0, sp" : "=r"(cur_sp)); + printf("first child pid: %d, cnt: %d, ptr: %x, sp : %x\n", getpid(), cnt, &cnt, cur_sp); + ++cnt; + if ((ret = fork()) != 0){ + asm volatile("mov %0, sp" : "=r"(cur_sp)); + printf("first child pid: %d, cnt: %d, ptr: %x, sp : %x\n", getpid(), cnt, &cnt, cur_sp); + } + else{ + while (cnt < 5) { + asm volatile("mov %0, sp" : "=r"(cur_sp)); + printf("second child pid: %d, cnt: %d, ptr: %x, sp : %x\n", getpid(), cnt, &cnt, cur_sp); + delay(1000000); + ++cnt; + } + } + exit(0); + } + else { + unsigned int __attribute__((aligned(16))) mbox[36]; + get_board_revision(mbox); + mbox_call(MBOX_CH_PROP, mbox); + for (int i = 0; i < 8; i++) { + printf("mbox %d: %x\n", i, mbox[i]); + } + printf("parent here, pid %d, child %d\n", getpid(), ret); + } +} + +void foo(){ + for(int i = 0; i < 10; ++i) { + printf("Thread id: %d %d\n", getpid(), i); + delay(10000000); + schedule(); + } +} + +void main() { + //asm volatile ("ldr x0, =pg_dir"); + asm volatile ("mov x0, #0"); + asm volatile ("msr ttbr0_el1, x0"); + asm volatile ("tlbi vmalle1is"); // invalidate all TLB entries + asm volatile ("dsb ish"); // ensure completion of TLB invalidatation + asm volatile ("isb"); // clear pipeline") + uart_init(); + init_printf(NULL, putc); + memory_init(); + task_init(); + core_timer_enable(); + cpu_timer_register_enable(); + set_exception_vector_table(); + while (1) { + char c = uart_getc(); + uart_send(c); + if (c == 's') break; + } + printf("%s", "\nHello from Raspberry pi!\n"); + // for(int i = 0; i < N; ++i) { // N should > 2 + // thread_create(foo); + // } + // delay(1000000000); + // kill_zombies(); + // printf("PID: %d\n", getpid()); + // for(int i = 0; i < N*2; ++i) { // N should > 2 + // thread_create(foo); + // } + // fork_test(); + // int ret; + // if ((ret = fork()) == 0) + // exec("syscall.img", 0x0); + // idle(); + char input[1024]; + while (1) { + uart_send('\r'); + uart_puts("# "); + shell_input(input); + if (strcmp(input, "run") == 0) { + uart_puts("running...\n"); + } else if (strcmp(input, "m") == 0) { + shell_input(input); + int size = (int)cstr_to_ulong(input); + void *ptr = malloc(size); + uart_puts("Allocation finished: "); + uart_hex((uint)ptr); + uart_puts("\n"); + } else if (strcmp(input, "d") == 0) { + shell_input(input); + void *ptr = (void *)(ulong)hex_to_int(input, 8); + free(ptr); + uart_puts("Free finished: "); + uart_hex((uint)ptr); + uart_puts("\n"); + } else if (strcmp(input, "pm") == 0) { + print_freelists(); + print_memory(); + } else { + uart_puts("Error input!\n"); + } + } +} diff --git a/lab6/src/mbox.c b/lab6/src/mbox.c new file mode 100644 index 000000000..4d9dbce85 --- /dev/null +++ b/lab6/src/mbox.c @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#include "gpio.h" +#include "printf.h" + +/* mailbox message buffer */ +//volatile unsigned int __attribute__((aligned(16))) mbox[36]; + +#define VIDEOCORE_MBOX (MMIO_BASE + 0x0000B880) +#define MBOX_READ ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x0)) +#define MBOX_POLL ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x10)) +#define MBOX_SENDER ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x14)) +#define MBOX_STATUS ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x18)) +#define MBOX_CONFIG ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x1C)) +#define MBOX_WRITE ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x20)) +#define MBOX_RESPONSE 0x80000000 +#define MBOX_FULL 0x80000000 +#define MBOX_EMPTY 0x40000000 +#define MBOX_CH_PROP 8 +/* tags */ +#define GET_BOARD_REVISION 0x00010002 +#define GET_ARM_MEMORY 0x00010005 +#define REQUEST_CODE 0x00000000 +#define REQUEST_SUCCEED 0x80000000 +#define REQUEST_FAILED 0x80000001 +#define TAG_REQUEST_CODE 0x00000000 +#define END_TAG 0x00000000 + +/** + * Make a mailbox call. Returns 0 on failure, non-zero on success + */ +int mboxc_mbox_call(unsigned char ch, unsigned int *mbox) { + /* 28 bits (MSB) for value, 4 bits for channel type */ + unsigned int r = (((unsigned int)((unsigned long)mbox) & ~0xF) | (ch & 0xF)); + + /* wait until we can write to the mailbox */ + do { + asm volatile("nop"); + } while (*MBOX_STATUS & MBOX_FULL); + /* write the address of our message to the mailbox with channel identifier */ + *MBOX_WRITE = r; + /* now wait for the response */ + while (1) { + /* is there a response? */ + do { + asm volatile("nop"); + } while (*MBOX_STATUS & MBOX_EMPTY); + /* is it a response to our message? */ + if (r == *MBOX_READ) + /* is it a valid successful response? */ + return mbox[1] == MBOX_RESPONSE; + } + return 0; +} + +int get_board_revision(unsigned int *mbox) { + mbox[0] = 7 * 4; // buffer size in bytes + mbox[1] = REQUEST_CODE; + // tags begin + mbox[2] = GET_BOARD_REVISION; // tag identifier + mbox[3] = 4; // maximum of request and response value buffer's length. + mbox[4] = TAG_REQUEST_CODE; + mbox[5] = 0; // value buffer + // tags end + mbox[6] = END_TAG; + + return 0; + //return mbox_call(MBOX_CH_PROP, mbox); // message passing procedure call, you should implement it following the 6 steps provided above. + + // printf("0x%x\n", mbox[5]); // it should be 0xa020d3 for rpi3 b+ +} + +int get_arm_memory(unsigned int *mbox) { + mbox[0] = 8 * 4; // buffer size in bytes + mbox[1] = REQUEST_CODE; + // tags begin + mbox[2] = GET_ARM_MEMORY; // tag identifier + mbox[3] = 8; // maximum of request and response value buffer's length. + mbox[4] = TAG_REQUEST_CODE; + mbox[5] = 0; // value buffer + mbox[6] = 0; // value buffer + // tags end + mbox[7] = END_TAG; + + return 0; + //return mbox_call(MBOX_CH_PROP, mbox); // message passing procedure call, you should implement it following the 6 steps provided above. + + // printf("0x%x\n", mbox[5]); // it should be 0xa020d3 for rpi3 b+ +} \ No newline at end of file diff --git a/lab6/src/memory.c b/lab6/src/memory.c new file mode 100644 index 000000000..d34059a4c --- /dev/null +++ b/lab6/src/memory.c @@ -0,0 +1,238 @@ +#include "memory.h" +#include "freelist.h" +#include "uart.h" +#include "utils.h" +#include "printf.h" + +Freelist *heads; +Node *nodes; +int *frame_array; +blocklist memory_blocks; + +extern char _end; + +void memory_init() { + void *base = (void *)&_end; + heads = (Freelist *)simple_malloc(&base, (int)sizeof(Freelist)*LOG2_MAX_PAGES_PLUS_1); + nodes = (Node *)simple_malloc(&base, (int)sizeof(Node)*MAX_PAGES); + frame_array = (int *)simple_malloc(&base, (int)sizeof(int)*MAX_PAGES); + for (int i = 0; i < MAX_PAGES; i++) { + nodes[i].prev = NULL; + nodes[i].next = NULL; + nodes[i].index = i; + frame_array[i] = BELONG_LEFT; + } + frame_array[0] = LOG2_MAX_PAGES; + for (int i = 0; i < LOG2_MAX_PAGES; i++) { + heads[i].head = NULL; + } + heads[LOG2_MAX_PAGES].head = &nodes[0]; + + reserve_memory(MEMORY_BASE+0x0, MEMORY_BASE+(ulong)base); + reserve_memory(MEMORY_BASE+0x8000000, MEMORY_BASE+(0x8000000+CPIO_SIZE)); + reserve_memory(MEMORY_BASE+0x3c000000, MEMORY_BASE+0x40000000); + + memory_blocks.head = (block_meta *)malloc(PAGE_SIZE); + memory_blocks.head->next = NULL; + memory_blocks.head->size = 4096 - BLOCK_SIZE; + memory_blocks.head->free = 1; + memory_blocks.head->pagetail = 1; + +} + +int find_allocate_list(Freelist *heads, int needed_pages) { + for (int i = needed_pages; i <= LOG2_MAX_PAGES; i++) { + if (heads[i].head != NULL) { + return i; + } + } + return LOG2_MAX_PAGES; +} + +int allocate_page(Freelist *heads, Node *nodes, int *frames, int needed_level, int index) { + debug("Allocate page for level ", needed_level); + if (index >= 0) { + // reserve memory + int remove = index, push; + int use_level = needed_level; + while(frames[remove] != use_level) { + remove &= ~(pow2(use_level)); + use_level++; + } + debug("Remove", remove); + freelist_remove(&heads[use_level], nodes, remove); + for(int i = use_level-1; i >= needed_level; i--) { + remove ^= (index & pow2(i)); + push = remove ^ pow2(i); + debug("Push", push); + freelist_push(&heads[i], nodes, push); + frames[push] = i; + } + frames[index] = ALLOCATED; + return 0; // no need to return anything + } + else { + // normal page allocation + int use_level = find_allocate_list(heads, needed_level); + Node *fs = heads[use_level].head; + int front = fs->index; + debug("Remove from freelist", front); + freelist_remove(&heads[use_level], nodes, front); + for (int i = use_level-1; i >= needed_level; i--) { + int back = front | pow2(i); + debug("Push to freelist", back); + freelist_push(&heads[i], nodes, back); + frames[back] = i; + } + frames[front] = ALLOCATED; + return fs->index; + } +} + +void free_page(Freelist *heads, Node *nodes, int *frames, int free_index) { + debug("Freeing page", free_index); + frames[free_index] = BELONG_LEFT; + int level = 0; + int free_level = LOG2_MAX_PAGES; + while(frames[free_index ^ pow2(level)] == BELONG_LEFT) { // 如果非最左邊區塊,終會到達index=0, frames[0]不可能BELONG_LEFT, 所以會跳出迴圈 + free_index &= ~(pow2(level)); + level++; + } + for (int i = level; i < LOG2_MAX_PAGES; i++) { + int buddy = free_index ^ pow2(i); + if (frames[buddy] != i) { // not same level or allocated + free_level = i; + break; + } + frames[buddy] = BELONG_LEFT; + freelist_remove(&heads[i], nodes, buddy); + debug("Merged", buddy); + free_index &= ~(pow2(i)); + } + debug("Push back to freelist", free_index); + freelist_push(&heads[free_level], nodes, free_index); + frames[free_index] = free_level; + return; +} + +void *malloc(size_t size) { + if (size >= (PAGE_SIZE-BLOCK_SIZE)) { + //int need_pages = (size+PAGE_SIZE-1)/PAGE_SIZE; + int needed_order = log2((size+PAGE_SIZE-1)/PAGE_SIZE); + void *ptr = (void *)(MEMORY_BASE + allocate_page(heads, nodes, frame_array, needed_order, -1) * PAGE_SIZE); + //print_freelists(); + printf("[Malloc] %x\n", ptr); + return ptr; + } + else { + uart_puts("Dynamic allocation\n"); + block_meta *curr = memory_blocks.head; + size = (size & ~15) + 16; // align to 16 + /* find split block */ + while(1) { + if ((curr->free != (short)0) && (curr->size > size)) { + break; + } + if (curr->next == (block_meta *)NULL) { + /* allocate new page */ + block_meta *new_page = (block_meta *)malloc(PAGE_SIZE); + new_page->size = PAGE_SIZE-BLOCK_SIZE; + new_page->free = 1; + new_page->pagetail = 1; + new_page->next = NULL; + curr->next = new_page; + curr = curr->next; + break; + } + curr = curr->next; + } + + /* allocate memory */ + int left_size = curr->size - size; + block_meta *new_block = (block_meta *)((ulong)curr+BLOCK_SIZE+(ulong)size); + new_block->size = left_size; + new_block->free = 1; + new_block->pagetail = curr->pagetail; + new_block->next = curr->next; + curr->size = size; + curr->free = 0; + curr->pagetail = 0; + curr->next = new_block; + return (void *)((ulong)curr+BLOCK_SIZE); + + } +} + +void free(void *ptr) { + if ((ulong)ptr % PAGE_SIZE == 0) { + int free_index = (int)(((ulong)ptr-MEMORY_BASE+(PAGE_SIZE-1)) / 0x1000); + printf("Free page index %d\n", free_index); + free_page(heads, nodes, frame_array, free_index); + //print_freelists(); + } + else { + printf("[Free] %x\n", ptr); + block_meta *need_free = (block_meta *)((ulong)ptr-BLOCK_SIZE); + need_free->free = 1; + /* remove block */ + block_meta *curr = memory_blocks.head; + while(curr != NULL) { + if (curr->free) { + while(!curr->pagetail && (curr->next != NULL) && curr->next->free) { + curr->size += curr->next->size; + curr->pagetail = curr->next->pagetail; + curr->next = curr->next->next; + } + } + curr = curr->next; + } + } +} + +void reserve_memory(ulong start, ulong end) { + int index = (start-MEMORY_BASE) / PAGE_SIZE; + int pages = ((end+PAGE_SIZE-1)-start) / PAGE_SIZE; + uart_puts("Reserve "); + uart_int(pages); + uart_puts(" page(s)\n"); + for (int i = 0; i < LOG2_MAX_PAGES; i++) { + if (index & pow2(i)) { + allocate_page(heads, nodes, frame_array, i, index); + index += pow2(i); + pages -= pow2(i); + } + if (pages <= 0) break; + if (pow2(i) >= pages) { + allocate_page(heads, nodes, frame_array, log2(pages), index); + break; + } + if (pages <= 0) break; + } + //uart_puts("[Reserve memory] Finished.\n"); + //print_freelists(); +} + +void print_memory() { + block_meta *curr = memory_blocks.head; + while(curr != NULL) { + uart_puts("----------------\n"); + uart_puts("Address: "); + uart_hex((ulong)curr + BLOCK_SIZE); + uart_puts("\n"); + uart_puts("Size: "); + uart_int(curr->size); + uart_puts("\n"); + uart_puts("Free: "); + if (curr->free) + uart_puts("Yes\n"); + else + uart_puts("No\n"); + uart_puts("Last block in the page: "); + if (curr->pagetail) + uart_puts("Yes\n"); + else + uart_puts("No\n"); + + curr = curr->next; + } +} \ No newline at end of file diff --git a/lab6/src/mmu.S b/lab6/src/mmu.S new file mode 100644 index 000000000..34246f105 --- /dev/null +++ b/lab6/src/mmu.S @@ -0,0 +1,42 @@ +#define __ASSEMBLY__ +#include "mmu.h" + +.global set_tcr +set_tcr: + ldr x0, =TCR_CONFIG_DEFAULT + msr tcr_el1, x0 + ret + +.global set_mair +set_mair: + ldr x0, =( \ + (MAIR_DEVICE_nGnRnE << (MAIR_IDX_DEVICE_nGnRnE * 8)) | \ + (MAIR_NORMAL_NOCACHE << (MAIR_IDX_NORMAL_NOCACHE * 8)) \ + ) + msr mair_el1, x0 + ret + +.global create_page_table +create_page_table: + ldr x0, =pg_dir // PGD's page frame at 0x0 + and x0, x0, #VA_MASK + add x1, x0, 0x1000 // PUD's page frame at 0x1000 + + ldr x2, =BOOT_PGD_ATTR + orr x2, x1, x2 // combine the physical address of next level page with attribute. + str x2, [x0] + + ldr x2, =BOOT_PUD_ATTR + mov x3, 0x00000000 + orr x3, x2, x3 + str x3, [x1] // 1st 1GB mapped by the 1st entry of PUD + mov x3, 0x40000000 + orr x3, x2, x3 + str x3, [x1, 8] // 2nd 1GB mapped by the 2nd entry of PUD + + msr ttbr0_el1, x0 // load PGD to the bottom translation-based register. + msr ttbr1_el1, x0 // also load PGD to the upper translation based register. + mrs x2, sctlr_el1 + orr x2 , x2, 1 + msr sctlr_el1, x2 // enable MMU, cache remains disabled + ret \ No newline at end of file diff --git a/lab6/src/printf.c b/lab6/src/printf.c new file mode 100644 index 000000000..dd020d062 --- /dev/null +++ b/lab6/src/printf.c @@ -0,0 +1,228 @@ +/* +File: printf.c +Copyright (C) 2004 Kustaa Nyholm +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "printf.h" + +typedef void (*putcf) (void*,char); +static putcf stdout_putf; +static void* stdout_putp; + + +#ifdef PRINTF_LONG_SUPPORT + +static void uli2a(unsigned long int num, unsigned int base, int uc,char * bf) + { + int n=0; + unsigned int d=1; + while (num/d >= base) + d*=base; + while (d!=0) { + int dgt = num / d; + num%=d; + d/=base; + if (n || dgt>0|| d==0) { + *bf++ = dgt+(dgt<10 ? '0' : (uc ? 'A' : 'a')-10); + ++n; + } + } + *bf=0; + } + +static void li2a (long num, char * bf) + { + if (num<0) { + num=-num; + *bf++ = '-'; + } + uli2a(num,10,0,bf); + } + +#endif + +static void ui2a(unsigned int num, unsigned int base, int uc,char * bf) + { + int n=0; + unsigned int d=1; + while (num/d >= base) + d*=base; + while (d!=0) { + int dgt = num / d; + num%= d; + d/=base; + if (n || dgt>0 || d==0) { + *bf++ = dgt+(dgt<10 ? '0' : (uc ? 'A' : 'a')-10); + ++n; + } + } + *bf=0; + } + +static void i2a (int num, char * bf) + { + if (num<0) { + num=-num; + *bf++ = '-'; + } + ui2a(num,10,0,bf); + } + +static int a2d(char ch) + { + if (ch>='0' && ch<='9') + return ch-'0'; + else if (ch>='a' && ch<='f') + return ch-'a'+10; + else if (ch>='A' && ch<='F') + return ch-'A'+10; + else return -1; + } + +static char a2i(char ch, char** src,int base,int* nump) + { + char* p= *src; + int num=0; + int digit; + while ((digit=a2d(ch))>=0) { + if (digit>base) break; + num=num*base+digit; + ch=*p++; + } + *src=p; + *nump=num; + return ch; + } + +static void putchw(void* putp,putcf putf,int n, char z, char* bf) + { + char fc=z? '0' : ' '; + char ch; + char* p=bf; + while (*p++ && n > 0) + n--; + while (n-- > 0) + putf(putp,fc); + while ((ch= *bf++)) + putf(putp,ch); + } + +void tfp_format(void* putp,putcf putf,char *fmt, va_list va) + { + char bf[12]; + + char ch; + + + while ((ch=*(fmt++))) { + if (ch!='%') + putf(putp,ch); + else { + char lz=0; +#ifdef PRINTF_LONG_SUPPORT + char lng=0; +#endif + int w=0; + ch=*(fmt++); + if (ch=='0') { + ch=*(fmt++); + lz=1; + } + if (ch>='0' && ch<='9') { + ch=a2i(ch,&fmt,10,&w); + } +#ifdef PRINTF_LONG_SUPPORT + if (ch=='l') { + ch=*(fmt++); + lng=1; + } +#endif + switch (ch) { + case 0: + goto abort; + case 'u' : { +#ifdef PRINTF_LONG_SUPPORT + if (lng) + uli2a(va_arg(va, unsigned long int),10,0,bf); + else +#endif + ui2a(va_arg(va, unsigned int),10,0,bf); + putchw(putp,putf,w,lz,bf); + break; + } + case 'd' : { +#ifdef PRINTF_LONG_SUPPORT + if (lng) + li2a(va_arg(va, unsigned long int),bf); + else +#endif + i2a(va_arg(va, int),bf); + putchw(putp,putf,w,lz,bf); + break; + } + case 'x': case 'X' : +#ifdef PRINTF_LONG_SUPPORT + if (lng) + uli2a(va_arg(va, unsigned long int),16,(ch=='X'),bf); + else +#endif + ui2a(va_arg(va, unsigned int),16,(ch=='X'),bf); + putchw(putp,putf,w,lz,bf); + break; + case 'c' : + putf(putp,(char)(va_arg(va, int))); + break; + case 's' : + putchw(putp,putf,w,0,va_arg(va, char*)); + break; + case '%' : + putf(putp,ch); + default: + break; + } + } + } + abort:; + } + + +void init_printf(void* putp,void (*putf) (void*,char)) + { + stdout_putf=putf; + stdout_putp=putp; + } + +void tfp_printf(char *fmt, ...) + { + va_list va; + va_start(va,fmt); + tfp_format(stdout_putp,stdout_putf,fmt,va); + va_end(va); + } + +static void putcp(void* p,char c) + { + *(*((char**)p))++ = c; + } + + + +void tfp_sprintf(char* s,char *fmt, ...) + { + va_list va; + va_start(va,fmt); + tfp_format(&s,putcp,fmt,va); + putcp(&s,0); + va_end(va); + } \ No newline at end of file diff --git a/lab6/src/sched.c b/lab6/src/sched.c new file mode 100644 index 000000000..d32548cde --- /dev/null +++ b/lab6/src/sched.c @@ -0,0 +1,152 @@ +#include "sched.h" +#include "memory.h" +#include "utils.h" +#include "printf.h" + +static Thread init_task = INIT_TASK; +//Thread *current_thread = &(init_task); +Thread *task[NR_TASKS] = {&(init_task), }; +int nr_tasks = 1; + + +extern void run_thread(void); +extern Thread *get_current(void); +extern void enable_irq(); +extern void disable_irq(); +extern switch_to(void *, void *); + + +int get_new_pid() { + Thread* p; + for (int i = 0; i < NR_TASKS; i++) { + p = task[i]; + if (p == NULL) { + return i; + } + } + return -1; +} + +Thread* current_thread() { + Thread *cur = get_current(); + if (!cur) + return &init_task; + return cur; +} + +void preempt_disable(void) { + current_thread()->preempt_count++; +} + +void preempt_enable(void) { + current_thread()->preempt_count--; +} + +int thread_create(void *func) { + Thread *p = malloc(sizeof(Thread)); + printf("thread_create %x\n", p); + p->priority = 1; + p->state = TASK_RUNNING; + p->counter = p->priority; + p->status = 0; + p->preempt_count = 1; //disable preemtion until schedule_tail + + p->cpu_context.x19 = (ulong)func; + p->cpu_context.lr = (ulong)run_thread; + //p->cpu_context.sp = (ulong)p + THREAD_SIZE - 16; + p->kernel_sp = (ulong)malloc(PAGE_SIZE) + PAGE_SIZE - 16; + p->user_sp = (ulong)malloc(PAGE_SIZE) + PAGE_SIZE - 16; + p->cpu_context.sp = p->kernel_sp; // kernel space + + int pid = get_new_pid(); + task[pid] = p; + p->pid = pid; + preempt_enable(); + return pid; +} + +void _schedule() { + preempt_disable(); + int next, c; + struct Thread* p; + while (1) { + c = -1; + next = 0; + for (int i = 0; i < NR_TASKS; i++) { // pick biggest c value + p = task[i]; + if (p && p->state == TASK_RUNNING && p->counter > c) { + c = p->counter; + next = i; + } + } + if (c) { + break; + } + for (int i = 0; i < NR_TASKS; i++) { + p = task[i]; + if (p) { + p->counter = (p->counter >> 1) + p->priority; + } + } + } + //debug("now thread", current_thread()); + //debug("next thread", task[next]); + if (current_thread() != task[next]) { + //printf("[scheduler] next pid: %d\n", next); + Thread *prev = current_thread(); + //current_thread = task[next]; + switch_to(prev, task[next]); + } + preempt_enable(); +} + +void schedule() { + current_thread()->counter = 0; + _schedule(); +} + +void kill_zombies() { + Thread* p; + for (int i = 1; i < NR_TASKS; i++) { // pick biggest c value + p = task[i]; + if (p && p->state == TASK_ZOMBIE) { + free((void *)(p->kernel_sp & ~(PAGE_SIZE-1))); + free((void *)(p->user_sp & ~(PAGE_SIZE-1))); + free(p); + task[i] = NULL; + } + } +} + +void idle() { + while(1) { + kill_zombies(); // reclaim threads marked as DEAD + schedule(); // switch to any other runnable thread + } +} + + +void timer_tick() { + current_thread()->counter--; + if (current_thread()->counter>0 || current_thread()->preempt_count > 0) { + return; + } + current_thread()->counter=0; + enable_irq(); + schedule(); + disable_irq(); +} + +void end_thread(void) { + current_thread()->state = TASK_ZOMBIE; + schedule(); +} + +void task_init(void) { + //Thread *p = current_thread(); + //asm volatile ("mrs %0, sp_el1":"=r"(p->kernel_sp)); + uint64_t init_task_addr = (uint64_t)&init_task; + asm volatile ("msr tpidr_el1, %0"::"r"(init_task_addr)); + uint64_t sp_el0 = 0; + asm volatile ("msr sp_el0, %0"::"r"(sp_el0)); +} \ No newline at end of file diff --git a/lab6/src/start.S b/lab6/src/start.S new file mode 100644 index 000000000..00e2bcea3 --- /dev/null +++ b/lab6/src/start.S @@ -0,0 +1,285 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ +#define __ASSEMBLY__ +#include "mmu.h" + +.section ".text.boot" + +.global _start + +_start: + bl from_el2_to_el1 + + // setup stack + adr x1, _start + mov sp, x1 + + bl set_tcr + bl set_mair + bl create_page_table + + // clear bss + adr x1, __bss_start + ldr w2, =__bss_size + bl memzero + + // mov sp to virtual address + ldr x1, =VA_START + add sp, sp, x1 + + // jump to C code, should not return + ldr x0, =main + br x0 + // for failsafe, halt this core too +1: wfe + b 1b + +memzero: + str xzr, [x1], #8 + sub w2, w2, #1 + cbnz w2, memzero + ret + +from_el2_to_el1: + mov x0, (1 << 31) // EL1 uses aarch64 + msr hcr_el2, x0 + mov x0, 0x5 // EL1h (SPSel = 1) with interrupt enabled + msr spsr_el2, x0 + msr elr_el2, lr + eret // return to EL1 + +.globl from_el1_to_el0 +from_el1_to_el0: + mov x0, 0 + msr spsr_el1, x0 + msr elr_el1, lr + mov x0, 0x60000 // user space stack + msr sp_el0, x0 + eret // return to EL0 + +// save general registers to stack +.macro save_all + sub sp, sp, 32 * 9 + stp x0, x1, [sp ,16 * 0] + stp x2, x3, [sp ,16 * 1] + stp x4, x5, [sp ,16 * 2] + stp x6, x7, [sp ,16 * 3] + stp x8, x9, [sp ,16 * 4] + stp x10, x11, [sp ,16 * 5] + stp x12, x13, [sp ,16 * 6] + stp x14, x15, [sp ,16 * 7] + stp x16, x17, [sp ,16 * 8] + stp x18, x19, [sp ,16 * 9] + stp x20, x21, [sp ,16 * 10] + stp x22, x23, [sp ,16 * 11] + stp x24, x25, [sp ,16 * 12] + stp x26, x27, [sp ,16 * 13] + stp x28, x29, [sp ,16 * 14] + + mrs x21, sp_el0 + mrs x22, elr_el1 + mrs x23, spsr_el1 + + stp x30, x21, [sp, #16 * 15] + stp x22, x23, [sp, #16 * 16] +.endm + +// load general registers from stack +.macro load_all + ldp x22, x23, [sp, #16 * 16] + ldp x30, x21, [sp, #16 * 15] + + msr sp_el0, x21 + msr elr_el1, x22 + msr spsr_el1, x23 + + ldp x0, x1, [sp ,16 * 0] + ldp x2, x3, [sp ,16 * 1] + ldp x4, x5, [sp ,16 * 2] + ldp x6, x7, [sp ,16 * 3] + ldp x8, x9, [sp ,16 * 4] + ldp x10, x11, [sp ,16 * 5] + ldp x12, x13, [sp ,16 * 6] + ldp x14, x15, [sp ,16 * 7] + ldp x16, x17, [sp ,16 * 8] + ldp x18, x19, [sp ,16 * 9] + ldp x20, x21, [sp ,16 * 10] + ldp x22, x23, [sp ,16 * 11] + ldp x24, x25, [sp ,16 * 12] + ldp x26, x27, [sp ,16 * 13] + ldp x28, x29, [sp ,16 * 14] + add sp, sp, 32 * 9 +.endm + +exception_handler_loop: + b exception_handler_loop + +exception_handler: + save_all + bl exception_handler_loop + load_all + eret + +sync_exception_handler: + save_all + mrs x0, esr_el1 // to decide is syscall or not + mrs x1, elr_el1 // the address return to + mov x2, sp // trapframe + bl sync_exc_router + load_all + eret + +irq_exception_handler_low: + save_all + mov x0, #0 + bl timer_interrupt + load_all + eret + +irq_exception_handler: + save_all + mov x0, #1 + bl timer_interrupt + load_all + eret + +exception_handler_lower_irq: + save_all + bl timer_interrupt + load_all + eret + +.align 11 // vector table should be aligned to 0x800 +.global exception_vector_table +exception_vector_table: + b exception_handler // branch to a handler function. + .align 7 // entry size is 0x80, .align will pad 0 + b exception_handler + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + + b sync_exception_handler + .align 7 + b irq_exception_handler + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + + b sync_exception_handler + .align 7 + b irq_exception_handler_low + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + + b exception_handler + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + +.global set_exception_vector_table +set_exception_vector_table: + adr x0, exception_vector_table + msr vbar_el1, x0 + ret + +.equ CORE0_TIMER_IRQ_CTRL, 0xffff000040000040 + +.global core_timer_enable +core_timer_enable: + mov x0, 1 + msr cntp_ctl_el0, x0 // enable + mrs x0, cntfrq_el0 + lsr x0, x0, #5 + msr cntp_tval_el0, x0 // set expired time + mov x0, 2 + ldr x1, =CORE0_TIMER_IRQ_CTRL + str w0, [x1] // unmask timer interrupt + ret + +.global switch_to +switch_to: + stp x19, x20, [x0, 16 * 0] + stp x21, x22, [x0, 16 * 1] + stp x23, x24, [x0, 16 * 2] + stp x25, x26, [x0, 16 * 3] + stp x27, x28, [x0, 16 * 4] + stp fp, lr, [x0, 16 * 5] + mov x9, sp + str x9, [x0, 16 * 6] + + ldp x19, x20, [x1, 16 * 0] + ldp x21, x22, [x1, 16 * 1] + ldp x23, x24, [x1, 16 * 2] + ldp x25, x26, [x1, 16 * 3] + ldp x27, x28, [x1, 16 * 4] + ldp fp, lr, [x1, 16 * 5] + ldr x9, [x1, 16 * 6] + mov sp, x9 + msr tpidr_el1, x1 + ret + +.global get_current +get_current: + mrs x0, tpidr_el1 + ret + +.globl delay +delay: + subs x0, x0, #1 + bne delay + ret + +.globl enable_irq +enable_irq: + msr DAIFClr, #2 // IRQ mask bit + ret + +.globl disable_irq +disable_irq: + msr DAIFSet, #2 + ret + +.globl run_thread +run_thread: + bl preempt_enable + blr x19 //should never return + bl end_thread + +.globl ret_from_fork +ret_from_fork: + load_all + eret diff --git a/lab6/src/sys.S b/lab6/src/sys.S new file mode 100644 index 000000000..ea8bab53b --- /dev/null +++ b/lab6/src/sys.S @@ -0,0 +1,50 @@ +#define __ASSEMBLY__ +#include "sys.h" + +.global getpid +getpid: + mov x8, SYS_GETPID + svc #0 + ret + +.global uartread +uartread: + mov x8, SYS_UART_READ + svc #0 + ret + +.global uartwrite +uartwrite: + mov x8, SYS_UART_WRITE + svc #0 + ret + +.global exec +exec: + mov x8, SYS_EXEC + svc #0 + ret // shouldn't go here + +.global fork +fork: + mov x8, SYS_FORK + svc #0 + ret + +.global exit +exit: + mov x8, SYS_EXIT + svc #0 + ret + +.global mbox_call +mbox_call: + mov x8, SYS_MBOX_CALL + svc #0 + ret + +.global kill +kill: + mov x8, SYS_KILL + svc #0 + ret \ No newline at end of file diff --git a/lab6/src/uart.c b/lab6/src/uart.c new file mode 100644 index 000000000..770db014e --- /dev/null +++ b/lab6/src/uart.c @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#include "gpio.h" + +/* Auxilary mini UART registers */ +#define AUX_ENABLE ((volatile unsigned int *)(MMIO_BASE + 0x00215004)) +#define AUX_MU_IO ((volatile unsigned int *)(MMIO_BASE + 0x00215040)) +#define AUX_MU_IER ((volatile unsigned int *)(MMIO_BASE + 0x00215044)) +#define AUX_MU_IIR ((volatile unsigned int *)(MMIO_BASE + 0x00215048)) +#define AUX_MU_LCR ((volatile unsigned int *)(MMIO_BASE + 0x0021504C)) +#define AUX_MU_MCR ((volatile unsigned int *)(MMIO_BASE + 0x00215050)) +#define AUX_MU_LSR ((volatile unsigned int *)(MMIO_BASE + 0x00215054)) +#define AUX_MU_MSR ((volatile unsigned int *)(MMIO_BASE + 0x00215058)) +#define AUX_MU_SCRATCH ((volatile unsigned int *)(MMIO_BASE + 0x0021505C)) +#define AUX_MU_CNTL ((volatile unsigned int *)(MMIO_BASE + 0x00215060)) +#define AUX_MU_STAT ((volatile unsigned int *)(MMIO_BASE + 0x00215064)) +#define AUX_MU_BAUD ((volatile unsigned int *)(MMIO_BASE + 0x00215068)) + +/** + * Set baud rate and characteristics (115200 8N1) and map to GPIO + */ +void uart_init() { + register unsigned int r; + + /* map UART1 to GPIO pins */ + r = *GPFSEL1; + r &= ~((7 << 12) | (7 << 15)); // gpio14, gpio15 + r |= (2 << 12) | (2 << 15); // alt5 + *GPFSEL1 = r; + *GPPUD = 0; // enable pins 14 and 15 + r = 150; + while (r--) { + asm volatile("nop"); + } + *GPPUDCLK0 = (1 << 14) | (1 << 15); + r = 150; + while (r--) { + asm volatile("nop"); + } + /* initialize UART */ + *AUX_ENABLE |= 1; // enable UART1, AUX mini uart + *AUX_MU_IER = 0; + *AUX_MU_CNTL = 0; + *AUX_MU_LCR = 3; // 8 bits + *AUX_MU_MCR = 0; + *AUX_MU_IER = 0; + *AUX_MU_IIR = 0xc6; // disable interrupts + *AUX_MU_BAUD = 270; // 115200 baud + *GPPUDCLK0 = 0; // flush GPIO setup + *AUX_MU_CNTL = 3; // enable Tx, Rx +} + +/** + * Send a character + */ +void uart_send(unsigned int c) { + /* wait until we can send */ + do { + asm volatile("nop"); + } while (!(*AUX_MU_LSR & 0x20)); // transmitter idle + /* write the character to the buffer */ + *AUX_MU_IO = c; +} + +/** + * Receive a character + */ +char uart_getc() { + char r; + /* wait until something is in the buffer */ + do { + asm volatile("nop"); + } while (!(*AUX_MU_LSR & 0x01)); // receiver overrun + /* read it and return */ + r = (char)(*AUX_MU_IO); + /* convert carrige return to newline */ + return r == '\r' ? '\n' : r; +} + +/** + * Receive a character without converting CR to LF + */ +char uart_getc_pure() { + char r; + /* wait until something is in the buffer */ + do { + asm volatile("nop"); + } while (!(*AUX_MU_LSR & 0x01)); // receiver overrun + /* read it and return */ + r = (char)(*AUX_MU_IO); + return r; +} +/** + * Display an int + */ +void uart_int(int i) { + if (i < 0) { + uart_send('-'); + i = (~i) + 1; + } + char c[10]; + if (i == 0) { + uart_send('0'); + return; + } + int digits = -1; + while (i != 0) { + c[++digits] = '0' + i % 10; + i /= 10; + } + for (; digits >= 0; --digits) { + uart_send(c[digits]); + } +} +/** + * Display an unsigned int + */ +void uart_uint(unsigned int i) { + char c[10]; + if (i == 0) { + uart_send('0'); + return; + } + int digits = -1; + while (i != 0) { + c[++digits] = '0' + i % 10; + i /= 10; + } + for (; digits >= 0; --digits) { + uart_send(c[digits]); + } +} + +/** + * Display an unsigned long + */ +void uart_ulong(unsigned long i) { + char c[20]; + if (i == 0) { + uart_send('0'); + return; + } + int digits = -1; + while (i != 0) { + c[++digits] = '0' + i % 10; + i /= 10; + } + for (; digits >= 0; --digits) { + uart_send(c[digits]); + } +} + +/** + * Display a string + */ +void uart_puts(char *s) { + while (*s) { + /* convert newline to carrige return + newline */ + if (*s == '\n') + uart_send('\r'); + uart_send(*s++); + } +} + +/** + * Display a binary value in hexadecimal + */ +void uart_hex(unsigned int d) { + unsigned int n; + int c; + for (c = 28; c >= 0; c -= 4) { + // get highest tetrad + n = (d >> c) & 0xF; + // 0-9 => '0'-'9', 10-15 => 'A'-'F' + n += n > 9 ? 0x37 : 0x30; + uart_send(n); + } +} + +void uart_hex_long(unsigned long d) { + unsigned long n; + int c; + for (c = 60; c >= 0; c -= 4) { + // get highest tetrad + n = (d >> c) & 0xF; + // 0-9 => '0'-'9', 10-15 => 'A'-'F' + n += n > 9 ? 0x37 : 0x30; + uart_send(n); + } +} + +// This function is required by printf function +void putc(void *p, char c) { + if (c == '\n') + uart_send('\r'); + uart_send(c); +} \ No newline at end of file diff --git a/lab6/src/utils.c b/lab6/src/utils.c new file mode 100644 index 000000000..ed116776b --- /dev/null +++ b/lab6/src/utils.c @@ -0,0 +1,122 @@ +#include "uart.h" +#include "utils.h" + +struct cpio_newc_header { + char c_magic[6]; + char c_ino[8]; + char c_mode[8]; + char c_uid[8]; + char c_gid[8]; + char c_nlink[8]; + char c_mtime[8]; + char c_filesize[8]; + char c_devmajor[8]; + char c_devminor[8]; + char c_rdevmajor[8]; + char c_rdevminor[8]; + char c_namesize[8]; + char c_check[8]; +}; + +void *get_user_program_address() { + struct cpio_newc_header *fs = (struct cpio_newc_header *)0x8000000; + char *current = (char *)0x8000000; + int is_file = 0; + while (1) { + fs = (struct cpio_newc_header *)current; + int name_size = hex_to_int(fs->c_namesize, 8); + int file_size = hex_to_int(fs->c_filesize, 8); + current += 110; // size of cpio_newc_header + if (strcmp(current, "user.img") == 0) + is_file = 1; + current += name_size; + while ((current - (char *)fs) % 4 != 0) + current++; + if (is_file) return (void *) current; + current += file_size; + while ((current - (char *)fs) % 4 != 0) + current++; + } + +} + +int strcmp(char *s1, char *s2) { + while (*s1 != '\0' && *s1 == *s2) { + s1++; + s2++; + } + return (*(unsigned char *)s1) - (*(unsigned char *)s2); +} + +int hex_to_int(char *p, int len) { + int val = 0; + int temp; + for (int i = 0; i < len; i++) { + temp = *(p + i); + if (temp >= 'A') { + temp = temp - 'A' + 10; + } else + temp -= '0'; + val *= 16; + val += temp; + } + return val; +} + +void shell_input(char *input) { + int i = 0; + char temp; + while (1) { + temp = uart_getc(); + if (temp == '\n') { + uart_puts("\n"); + input[i] = '\0'; + break; + } else + uart_send(temp); + + input[i] = temp; + i++; + } +} + +void* simple_malloc(void **now, int size) { + void *ret = *now; + *now = *(char **)now + size; + return ret; +} + +int log2(int x) { + int ret = 0; + while(x != 1) { + if (x & 1) { + x += 1; + } + x >>= 1; + ret++; + } + return ret; +} + +int pow2(int x) { + return (1 << x); +} + +unsigned long cstr_to_ulong(char *s) { + unsigned long ret = 0; + while (*s != '\0') { + ret *= 10; + ret += (*s - '0'); + s++; + } + return ret; +} + + +void debug(char *s, int n) { + if (!DEBUG) return; + uart_puts(s); + uart_puts(": "); + uart_int(n); + uart_puts("\n"); +} \ No newline at end of file From c1406165c822ac39ae44e2019cdc2cd83520fc09 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Sun, 15 May 2022 20:59:01 +0800 Subject: [PATCH 02/19] fix linker script --- lab6/include/sched.h | 5 ++++- lab6/kernel8.elf | Bin 48576 -> 48576 bytes lab6/kernel8.img | Bin 20120 -> 20120 bytes lab6/linker.ld | 2 +- lab6/obj/exception_c.o | Bin 13760 -> 13760 bytes lab6/src/exception.c | 10 +++++----- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lab6/include/sched.h b/lab6/include/sched.h index cee766faa..99bab14f6 100644 --- a/lab6/include/sched.h +++ b/lab6/include/sched.h @@ -2,6 +2,8 @@ #define _SCHED_H #include "typedef.h" +extern char pg_dir; + struct cpu_context { unsigned long x19; unsigned long x20; @@ -28,13 +30,14 @@ struct Thread { int status; uint64_t kernel_sp; uint64_t user_sp; + uint64_t pgd; }; typedef struct Thread Thread; #define INIT_TASK \ /*cpu_context*/ { {0,0,0,0,0,0,0,0,0,0,0,0,0}, \ -/* state etc */ 0,0,1,0,0,0,0xffff000000080000,0 \ +/* state etc */ 0,0,1,0,0,0,0xffff000000080000,0,&pg_dir \ } #define NR_TASKS 64 #define THREAD_SIZE 4096 diff --git a/lab6/kernel8.elf b/lab6/kernel8.elf index 64203e36b068de7a211e91d063511f8de790a7f2..c0ee7b2bda060fba0493a3913b1c1f41118535ee 100644 GIT binary patch delta 1080 zcmYjPUr19?96smHJ2y9PyJx%GP`5e6l!7+FKug7kNoGodV&X%nyVDsJ!x{`ycFPCr zq2@Y;Jdi^mn&&5Edl_(Hil{$*g#t71v3o>0OT=(m8Bp6 zLi#MaE0FK&c8$P7Isxoc0-hUkCF7*g@r&Hx%QE^dq@zk~Oa(A!W|I>@GEI{qTN`c4 z8gn&lS10*KFPPaVP-K0KqF)I|0bH?DL`WymH9Gp-{xx65l<~+#09W(;_~5WRX=|d| zbmLV{y=TKk{4sSpSC;^`50ous{9et3+$RQ^kZ*E7GmtePORn zA<@tCtYaiQ+#L2KnUSGAX^q8%E^K)y(q)6_4V9+yGNFuI05IZung{#QX}WrZgE6#1 zdq=sAUUY+^QC@bVHHu#5&FxA!J`UjYVQ#Y3)ytC$aotqy6^Z{SfSmUziBvL8k-H5` zs>jEa_f_tm?r?krz*DlZq`!}3T{t&c?36`dFdeZRwKQ6e+XXiOs2&(3d~ec^C9T-$ zAh7g5tPt3wZ%&?*%d1<&@_=YQoGzUcJ*CVO02U_)ai@qWl!atT4 Upr+qk{%D3l{HMpOYpbooKOkQ3!2kdN delta 1090 zcmZWoPe>F|9DZ-sS$AEXoSELP|8{4W#gY!~3I%B@5-X`G35iLEFlScRs2B`EP}waH z)}hwzRd%ovLi%T<%w^3(OA=ZXLE$Cx(y8*)u_Wxhea|&$4m0!P`+nc|`+aXFvngaY zg~ElUcScm5!q+sy$h>K^`Ow^of?Yco+tnCtB@r zio@M#ooY`@2_h(@I#7s)beEUSXoI3pi`iz4ZetIdpfl?az$?O5@Gjj~tdRU>d0-|9 z8`taJI9ue*&S*9HL{4`-6scJcTA`yEyc|~gE&>?!Jj;UJ=rpzN5k5Da_OirJ8;}pApF}D-#>rj9lHt|Z(+%9;@(6Wgg-)UFz55p@n z-=h`GmmEDViF!+9NKYl`VTUx#NWoAoZjT1)rQ~64e1z zw*L$TKZ$A(S#P6h56+C`yJZpBq*~WuSBSJkeVM0K73E_5c6? diff --git a/lab6/linker.ld b/lab6/linker.ld index e035f939a..d98b436a1 100644 --- a/lab6/linker.ld +++ b/lab6/linker.ld @@ -41,7 +41,7 @@ SECTIONS } . = ALIGN(0x1000); pg_dir = .; - .data.pgd : { . += (2 * (1 << 12)); } + .data.pgd : { . += (3 * (1 << 12)); } . = ALIGN(0x1000); _end = .; diff --git a/lab6/obj/exception_c.o b/lab6/obj/exception_c.o index 032887a3f3ab99e2f54fbb3de77b45993fb71db6..eb8cec72b62e45c16d13d4b5789c2578209cd98a 100644 GIT binary patch delta 1142 zcmZuwL1+^}6rI_0la?gg-6Y$XrrS+P3I^0z@Q}6|T2UG`&cNwL_D{A_{D<9r@4x@&&HUNcLTlmW zRDj(Nf+RXb1(dG%=?p>vXNcPnTPto_$C3s2pB8j^A&3{Vk zP#VK*FaMV8nr_Wk32k*@ue(I)TmgaViZ)MpJxZK_pv^B{k4+PMl=VuD(5)!XNOlA5 zyo!Ezp{27@C{0yng$xbXcEs9?L}gDyMitprm-X43qQQgkFUfU?{T>O2RfKCITSnMa zmcX23Pa%9FU=iVlT4!cBNp&_F?pJjemTfVX~3{d#2J0CpDrNCi*#_YM=1s z`W&ItT0aa#vaJZarINwD}r1^fS?ieqeHLD!r?QrCqA|$5W@{OF+Sm#Nu=gi!HK`E7@|leiSpBiNczI zLkMRCJlQ^k*$SbN_D$8<*KU(W*zfKg826hczKm)Y$^k}V(ZW7bfI^D%K#qN+3Aw?=8v`DT3b(+qo?i4X1%fEFSTZL;|3 zJ}to~fj{W{$OJpi?!e{eA;Vw9gF=c^MIp@!UIIP@{5vj!7~aFLBTdHGcs5R_nU;+^ OR<`J;7oDwK!2cJ&kF53p delta 1128 zcmZ8gL1+^}6rI_0l9VLd>~7PTCfjXjJp|NP5R7RJMvz7=*n?;h!D!N&(jrT3rD!4T zLF%opgZ2`IBGN+S93Ktj>}KGjZ)nF)gyqDaHu63~6bI3rZf7l7HPxJ~61v;ILLIn3WnxTj5fY{bv6yGGp1H*gl=h0M6&9*)m!a{ z3r%%qe3sC6Lc}x)(jehC!cnSmGps8p*%p$aFnM`XTqyoZ|uZT6?ctVBz8F||r*)c&r2_7CI&kOG#3tfRPe zzt@HTB=|E2{AK>3KmPJ}e_MK8co{q}$0#u2U67Kx[0] = ret; } +void sys_kill(Trapframe *trapframe) { + int pid = trapframe->x[0]; + task[pid]->state = TASK_ZOMBIE; +} + void timer_interrupt(int i) { unsigned long cntfrq_el0; asm volatile ("mrs %0, cntfrq_el0":"=r" (cntfrq_el0)); @@ -195,8 +200,3 @@ void timer_interrupt(int i) { asm volatile ("msr cntp_tval_el0, %0" : : "r"(cntfrq_el0)); timer_tick(); } - -void sys_kill(Trapframe *trapframe) { - int pid = trapframe->x[0]; - task[pid]->state = TASK_ZOMBIE; -} \ No newline at end of file From b6ea813040b3d482e1708c020cca14bb4ab8dd61 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Thu, 19 May 2022 13:04:49 +0800 Subject: [PATCH 03/19] exec --- lab6/Makefile | 2 +- lab6/include/memory.h | 2 +- lab6/include/mmu.h | 24 +++++++++++++++ lab6/include/printf.h | 2 +- lab6/include/sched.h | 3 +- lab6/initramfs.cpio | Bin 247296 -> 248320 bytes lab6/kernel8.elf | Bin 48576 -> 52248 bytes lab6/kernel8.img | Bin 20120 -> 21616 bytes lab6/obj/exception_c.o | Bin 13760 -> 14680 bytes lab6/obj/main_c.o | Bin 9432 -> 7200 bytes lab6/obj/mbox_c.o | Bin 4008 -> 4056 bytes lab6/obj/memory_c.o | Bin 17728 -> 17848 bytes lab6/obj/mmu_c.o | Bin 0 -> 7096 bytes lab6/obj/printf_c.o | Bin 9768 -> 11368 bytes lab6/obj/sched_c.o | Bin 11136 -> 11584 bytes lab6/obj/sched_s.o | Bin 0 -> 848 bytes lab6/obj/start_s.o | Bin 8824 -> 8768 bytes lab6/obj/uart_c.o | Bin 7872 -> 7872 bytes lab6/src/exception.c | 31 +++++++++++-------- lab6/src/main.c | 36 +++++++++++----------- lab6/src/memory.c | 2 ++ lab6/src/mmu.S | 2 +- lab6/src/mmu.c | 67 +++++++++++++++++++++++++++++++++++++++++ lab6/src/sched.S | 31 +++++++++++++++++++ lab6/src/sched.c | 11 +++++-- lab6/src/start.S | 32 ++++---------------- 26 files changed, 181 insertions(+), 64 deletions(-) create mode 100644 lab6/obj/mmu_c.o create mode 100644 lab6/obj/sched_s.o create mode 100644 lab6/src/mmu.c create mode 100644 lab6/src/sched.S diff --git a/lab6/Makefile b/lab6/Makefile index 5b199e3b1..31e91c451 100644 --- a/lab6/Makefile +++ b/lab6/Makefile @@ -58,7 +58,7 @@ run: qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none cpio: - qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -initrd initramfs.cpio + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -initrd initramfs.cpio debug: qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -S -s -initrd initramfs.cpio diff --git a/lab6/include/memory.h b/lab6/include/memory.h index 6dc6b509a..89676eaa1 100644 --- a/lab6/include/memory.h +++ b/lab6/include/memory.h @@ -2,7 +2,7 @@ #define MEMORY_H #define MEMORY_BASE 0xFFFF000000000000 -#define CPIO_SIZE 247296 +#define CPIO_SIZE 248320 #define PAGE_SIZE 0x1000UL // 4KB #define MAX_PAGES 0x40000 // total 0x40000000 #define LOG2_MAX_PAGES 18 diff --git a/lab6/include/mmu.h b/lab6/include/mmu.h index 82a420e81..a9e4f3fbc 100644 --- a/lab6/include/mmu.h +++ b/lab6/include/mmu.h @@ -18,14 +18,38 @@ // identity paging #define PD_TABLE 0b11 +#define PD_ENTRY 0b11 #define PD_BLOCK 0b01 #define PD_ACCESS (1 << 10) +#define PD_USER_ACCESS (0b01 << 6) #define BOOT_PGD_ATTR PD_TABLE #define BOOT_PUD_ATTR (PD_ACCESS | (MAIR_IDX_DEVICE_nGnRnE << 2) | PD_BLOCK) +#define PGD_INIT (PD_ACCESS | PD_USER_ACCESS | (MAIR_IDX_NORMAL_NOCACHE << 2) | PD_BLOCK) +#define PTE_INIT (PD_ACCESS | PD_USER_ACCESS | (MAIR_IDX_NORMAL_NOCACHE << 2) | PD_ENTRY) #define VA_START 0xFFFF000000000000 #define VA_MASK 0x0000FFFFFFFFFFFF #define LOW_MEMORY 0x80000 +#define PD_MASK 0x1FFUL // 9 bit +#define PGF_MASK 0xFFFFFFFFF000 + +// user space constants +#define USER_PC 0x0000000000000000 +#define USER_SP 0x0000FFFFFFFFF000 +#define USER_STACK_LOW 0x0000FFFFFFFFB000 +#define USER_STACK_SIZE 0x4000 + +#ifndef __ASSEMBLY__ +#include "typedef.h" +// page table & entry +typedef unsigned long pte; +typedef unsigned long pagetable; +void mappages(pagetable *pg_table, uint64_t va, uint64_t size, uint64_t pa); +pte *walk(pagetable *pg_table, uint64_t va, int alloc); +uint64_t vir_to_phy(uint64_t vir); +uint64_t phy_to_vir(uint64_t phy); +uint64_t to_pfn(uint64_t addr); +#endif #endif \ No newline at end of file diff --git a/lab6/include/printf.h b/lab6/include/printf.h index 7b53b8421..8f5deb26f 100644 --- a/lab6/include/printf.h +++ b/lab6/include/printf.h @@ -68,7 +68,7 @@ regs Kusti, 23.10.2004 #ifndef __TFP_PRINTF__ #define __TFP_PRINTF__ - +#define PRINTF_LONG_SUPPORT #include void init_printf(void* putp,void (*putf) (void*,char)); diff --git a/lab6/include/sched.h b/lab6/include/sched.h index 99bab14f6..3883961c9 100644 --- a/lab6/include/sched.h +++ b/lab6/include/sched.h @@ -31,13 +31,12 @@ struct Thread { uint64_t kernel_sp; uint64_t user_sp; uint64_t pgd; - }; typedef struct Thread Thread; #define INIT_TASK \ /*cpu_context*/ { {0,0,0,0,0,0,0,0,0,0,0,0,0}, \ -/* state etc */ 0,0,1,0,0,0,0xffff000000080000,0,&pg_dir \ +/* state etc */ 0,0,1,0,0,0,0xffff000000080000,0,0 \ } #define NR_TASKS 64 #define THREAD_SIZE 4096 diff --git a/lab6/initramfs.cpio b/lab6/initramfs.cpio index 0676fb1584617bc4d73624b3b212a12133e97d8e..6ab461cbc789ab02661097693d69232226ae3658 100644 GIT binary patch delta 2001 zcmd^9UuauZ82|3Q$(p4m*|M~``NMLzQrSA#lC-3~^P#tCR+R}#$dig~*3?qBlum1_ z%-Nex=x_sfJcSAalMNrVC@nSd3*=t)F-@fVBYNXl}G%{{T9AvQ<5PxS4WqtRF*-q$Uk7>X|y zZVK&O51T|X=1awTquo6W-1m>csW_t^Obi;_4<06&*xRto4aU&uf-QDSD_63Y*zEhm#Q$xSUz7j8?IoU8&)E6 z$JH!aVmN+z%fhkqoxpb+VvI^CLGl7LI{Y^4@PpXmH;fkljH!zNb|qe7R+Una{D5FT zechSkOF??id4rci#mJDyl?gBU&FfQ!IHE>ZOa3d?N+Ef zft|wv+{UlRvgU`H=2vQnBkX=*BA}POclnuo`OLmYxih)3e0DN-T>8^U8D?oJJ3cWv ze$<)IXQzf=eh9_P()8FX(^AaB%>E4~POtbn=%+qum-*SFTfS2XlNlhJ%OQW~Yfh#R zM`zA_GyK^1FTI+dVs=ySg=E`8vW>$(|9P@a2(Egow*=;f_pG^eYiaVP@Gc(re>(o} K`JeumtN%O17Sh82 delta 1109 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 diff --git a/lab6/kernel8.img b/lab6/kernel8.img index b1e7a5c80a6edf9899323802c62e959f04134bf9..14658e431df55de37a955bb7b4d71f2d93197a8c 100644 GIT binary patch delta 5211 zcmbVQ4RBP|6+ZXvZW2f=2^-vySoUrB34$cSkc1?_z9hz^5-Nl+wO}WUqDTcLm{BQe zR%;cCKU{9gpIU=jr5P1U+Ugdnu{vWZ6hjooX-9pV*y(h%8bVc839sLI?=5CBPCH|U zaPK|m-1C3VJukbS5QF2!hp{*uX zqTs0(-E-2itU&O7IveuRlGlDyw@_#mDe6n@MP+DSVJRv0`*e!-_3=(Ti~m=2d%b!_ z+Dac?qZ7qcTjun!xA~|eqJ>Yb=BvxMXJxkkwjzy)EXyFmKg$~4bokf99+GB&5^+Bz z`o~dXAe|ECI3q#l!jjH4zHL@f%nDO%22plAY{bA|kfNnB^&;vp!_k;H*7mmPHxfG0 zR*j-faSwHw0V6RLrkQ!*m83~G+7lrVnVX}1Si8(TBO!R6+I&7F( zDn9|t-cy65!k~luX1fSJz@r}|L#&Ekxs=B2j8%$co-(>J$u*> zFzx3I)2HBE4t2_1pBZKH_ZigQVU|Z@GX2)vJBj`NqWr+6PEYJL85t2rv*z0n?O|35Ceg&DHT;AU}`p*Sq;B`1O{r>t5! zVWvXqRCw*Mu^ngG;~52?xA@>U!jH9W_cEe;Rqhulvj(ZNOzs$q3Sl|%4HM}Y26eWsrGV0H#{Wm}Ik3eo1xI934o zqjrK5ofekWY?ibGQBH|T?5=Oir1skh{~bDOyuBP+a=^{Ga@QCHyw(l4Q6W2UHo<(i z7i*9bX3$7nI*f3kml195Qw&G%;KZEFaP-X=xFQ;i#D`pFxI2J0#w91vqfL*uYYoEv zj7u}%Hxlg{7{#qEYS5=#-$t1N?3p93SWpEfZ=P%`8G+(v;vikNxkx^skinxsP2W=VDq9=?u7o~4FuqQ^su5e(x0GsiZwKMsiiUud= zIL}^i4HO0&2tLJ>_=N>U3*4yaX)<0Ajr9lA_*vs8zGS0}*zhLD*5OTmw1c}(&7YNv zAi&fWv!c%CgIPcP(Y2uG^tGMOtcsifw-9|qc%hn^AI5~ycvfu!f<78= z-CY`E+ zYVJ;?=iasBM#>_LKR_7q`g zs7)FSfz5NXLlft~ZNk{yx03b_VG12ez8-}tKHI5&`84gpRFzv&m)}eJJh=m`=9s@hXBDZd4TP;7?X^hjJaVwysY&668b)!#~Tg~QqMeD&YCS9r5TTR z(Cma7o^ubR==0^cRCQlzp%zb32TSv{cT?1<(n{?}iW*;bOKuF6iFXg|=>SFM%cCh^ ziE-w+6t$;pPH?_F#DJ<%G6If_W$NE$Rpm##m;px&;5YG&B4U=k9BCh7V(;ywbN9%X zmhxHkW|0wF1A4;bgaUfot~_YJ>kQPwYO7_=mnZlU!+E)rN(V?^AYVpt*nBf<)Jx^d z#G&qs=2naEFOb)RI4Ruw&BDRhNDM$Yw+(*rK1Ib!m=&mvX}jhKPeCX9sT$JkqVU}`yT^+s%~PkmB3aq0iE-d5m4#C!nsjuO7E z_c#x5z8xPzb|P_3V01UH#uNnjdY@WemA`Ct5)CziByL`d7MHZwKf>PZ+c!NIsCHAtUzA7jB$D6HU@YN#32LN$c6jjj)pnTst~R-VP+sXSQ8EBsU~4nj~*k zC+1yzG0K(XO{2(Gso{Ao`OU6_?8^}$uk}!e&Ywp6(U1;N>>8iCXMV0$hcL|#m7tV_ ztOtp?AMWO11!T2gVS>~=}b zCW8MUE&HJsXNYZKr$>H;-snsR$J}w~75l~HCe9PWKlx5@#2wu$KjD7byS<70of}^G z%-Z=D9&ae?3o``t%;n4Dg&akk7(D}{M=IT|XFc!H zmJ4+}d(v3EGTGK9QDNPohO#%b-wIl@T~wIu)fK@5qE#?|9)9q-0VBE2fD@RLk(qb6 zbf##H_^COFwQ&m8cSI|Bob}jbtjB;4I%^}Jw~1DLtg{}=$NCWH^X#>>wUGf4(Q0No z>#-14M5Bk{9awd09s`}tJD?!oQ3z7roaPDfS|JBKqAO{21Da!=iceTA9#-oD!R*6U9Y1DhHz!6 zG6I(gjjw6Xo>z|q-WRv1bvfmlct<^(b7}Sg>dAr}=W`T!g^r!2269$q@URC_e<0b%&MXV$(ZCjEH`(b|tMmioyK-Y7;{0{W!vOp^7~qOC8*-kk@|+|+=Vb7wX(xIA zLD+MWKU9=nA8A;;a`g?B`qWjreUE5ybDeJB`N3Re|9tP3+iuvu) z^)1cSHH~$Zx~n|q#ziIe{@7jfxmn{(df J;+0&O^Iu$@f>Qth delta 4276 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 diff --git a/lab6/obj/main_c.o b/lab6/obj/main_c.o index 324202fe0a621b44ad3168cf790710dc3c2aeefc..46130fd2838c406b4cf41553eb7cbda15584cdef 100644 GIT binary patch delta 2294 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 LPlhzrt8V`vu%Guw diff --git a/lab6/obj/mbox_c.o b/lab6/obj/mbox_c.o index 5511c8d195745851d4ee144a009a07bde22b044c..6b97e81693a01d5e3e7dcda345569f0e53804543 100644 GIT binary patch delta 615 zcmZ8eJxjw-6utK)u`f-NiVm%V_=#U2R#4*?jhUo__z$$;pn~p|u;ubJ^V$E?&Jf{^5BW)-gKqXY_ zlbQyKHEfI+Lq?{SB>}49;zXv_bCns?7M2!g8@&THh2EXE!LW;5-h*$n!fi}ZFHh8s z%KHc~1c-`$<|}}4x)JVFsLJkhsMqOJxSJKODRxNgQInqNJq*O(=5qG5V*U{7D|*ut zoi7z`IrUvJzxIyxX~qyK8XM44;(JJ(QzmBPI~8IM=IAEo(2mK8n}c{ruIaGqDD9eQ ro&5g^&`9^DjUJ)p;0w8;zEZ(*SVxp@tu&4i#vS}1SJY)H#M^%Xd=pyk delta 621 zcmZ{gKS;w+5XRrVHtmaPQf!AdlUPNopxB|tDwrZ7b`mE?3x%Q}O2t7z&{c4-98{4y zDh>{YI*6c?gShARFI7cO^d5UVhddPynfNQ@u@%fiZFOU`H*KDpXzdP zn=qt_-#?!H00L=n<!#U*=yk+cV7*)oAtNUT7M>%@mO8XISPk$y0Bk2b7~ zC@G~|&xBhcA&P5ld} zwy?+|Jr7N;`{Qd<|D^IL&r6Y^N+`4khX2_-D3CJv|! v&($G$`{(k6X!xNTu#XANgljDDe1n!|(svmf+9<>^5j3HS1)kGr1-rii(;Q%P diff --git a/lab6/obj/memory_c.o b/lab6/obj/memory_c.o index 8bd8f275dc0eab09b72c72ab62af49532b2f9f7e..cb06246b6dff3c474d90b01a0da2468578673819 100644 GIT binary patch delta 2633 zcmZ`*U2IfE6rOY2(p~Isce`6|Z|in@>5>+*(4Q@~Mbh0ZCAJZ<{5-U#gra~o0bFnm z4Uzzn2ZF?OJylz>Xq%XT$OFyxVNH;qiV12HsWyfp(Khjc2aWB65u!29+&PyFHQa}D z=bZ1H^PM>}bLU<^4cT{KpjvB+jjj3?wAgUwFX+zGzRtz1`7b{`TNC@7F*eAK#*j@W zf0)Z*7iWF3hr*T_&rj#&@)65)x=sUxGe5bLQ15c3fw6pW2;?atU}lMUiO0bq@j!Zt zj|!~eT|D6_h6()86X=>K+o&<7rTPl@9N5iZqFSoG((_AaACJ&dN2Pj`)P9f1<9&_6 zEw^+?@&X+B!s-$NE?|K-z~w4$C0xYK-il*m#i9T$m5`~%N$qFMZ$%u=4^gQ?E#XCp z2h#87Fy^*~hl^!x?L`*E#UKqDxQ|SG#3k$L@g|ao7`#;|l4_|=hQE9DV{hA}(s`Ji z_eu3Ep}jsk|8^Qk{7ismz^!tYJ07(;OSMCKGhZNC?~c;-7I`13RnK-=dN1jbq@{L| z8kLoAmt?(#&(%VxYU^tJO-UIH;PW@eN$+G2n&h^h{{xIUXe1GAZ z^0RJhqs85w=azot)J|r8EdO4E4=x{;BqTmiZj;nVNBR775gCB zecUeg+W=uhcrdI(8mG9tfTLl(;}UrmljjI|URE-%Ae(rNlf9AqTMI*27Gbq+cpOp{ z^^_7KUYoFPwcgQ5EwH(=5Gwk%Tvi%j`G2gu_87D4tR=1_#(7l#6Y4yv*wvkL%3?et7+nL3&kA%! z%5b*c;T>8uweqdcYuKOaX_`VFMI6Vu79B#Fhb>k7 zM+(hYqqCR31AIfr8nu1a^@5jU)%I{cRt*U>;!&8vZZ03-Fqa!~hRYjhv_`c=3%=Ca z0t-0Y8g-hwr2Gu$S{q>mjSW$l#BMHE;_!y3wyj)TP&mJ#8oJPEi$WH=+oH}yP=?Lp WXdADIZi0Vtj%)ozw4`17$Cj=C(gd5<&1Bt*t#qRq{g6Rnt#+eA9jz9r zqtX`rpmmIfGqr=N9f~V5ur-1a6f+SS=!c~YHbLfueNb@N$KJonx6>Rq50a^5@V z_d9>ydFS4j^cy@g&lehuOmuDUcihMDzKgE;0 zt;n^+87t%thHIx3{Kg~lB9{Xpx%g5R?~1J3n{d%x#xwAl+n>l(bQ_Er$2F>xw z=NUg!B7+*qeg>{mF*9c;RphscJf_q|LWevQmJQI2!sq?;1ZY)HIk?s4^j5t`^X+;E z%lBK!M^*WQ^^YekeTekXq@^ZEjjGBARI(EfcYX+NmHPQf*etE`oT9SFu@2R{Ff@At z(Xe0T>rny2dsVs^sgKEYdCBw)>0L5kUh-30hjX6VstCoV7as9HR8$9KJ$@d8-#vlK zKD&A5sTUYOQbNzBsy_DJKh&Rnu0oi_Y{ad+i@Da!cs*Ftze*|vvtFRUj zzI6;;$~b%Au(Gf*?4evYEc7Z2s$xV%~+w&pVDtr!_eHl&f@E#a$ z6}$nGC}Wl!vE&qFTZC^~^U~kxtH3elYZ|IqLtyoTx-mmwY$JZp0ZXW*>m4fE7|R7*-iW~m~A2$*~aUzW^d5mP7m;q;C(RBCVc%G zN1uuTxY#Co6NK7zwo=}~ZM;S`yFN=}R>pCeF*vDl^o&zvx1UjVPOfPf4hh$+?ga-z z6|fv~;E6C77BCema_NyifVHr|&+xsF@LksZR6t9vLI6EiLhe96f}PDxCF-!wae{vD2h$ZqAURO paFn+|9AzscQN|#9IO^=FQXV(K*WK>iL+AUSaJ(B20!Vh({|Cm*Vq*XR diff --git a/lab6/obj/mmu_c.o b/lab6/obj/mmu_c.o new file mode 100644 index 0000000000000000000000000000000000000000..ecccb7bf1d33c8437115cdadbf1915d52aafa3d5 GIT binary patch literal 7096 zcmbVQZ)_CT5ud&Di_e@n+nB#Lf7U4wAl#inZZO7<&jCU(ZshW(LM@Rw`_}e}^WNod z4Tg{uRr!DlQEQ4?RMCn`ZIwn*Rpm=@g<4ecA*%S$hPKLwHa(}`s;UJkis}|bXLe`K z&yTYdtO(;9>7HJRG=J-UBm_dtqi9!1CGN)C{_R8?R}+u9kZ* z%vg85d*$ZToDFa(1Q!m^hT)y^D)c9PD{_fVG&R?THsy;KKEVE+a%*Z1b0xcZKE%jR z$MiAz06b|^ro3vPsf>A2j^#b6nO=ZXm;U?s=mtCdr$?{ddHZ&F=+95gcLU5+a>W`f zh{bczv6DDIiqX%tD2J_WP*`^az=}dU#>ZMw?AczNqka4PR2Q7n z*M%9l|N6aIjAvtg{Q1?Su574>2Yn$pTCS!KYIK$Eo1UM{MaR}+t^nWo05Phoe|=2% z$l&d(Nxet+!^E|Ef2MeRFTPB5qVWcRSKs~g@zDzw*6wrF2kV73w$7)%L-Vt-MshzN z?}a~(cwPz>JO@IFRl5-iM`}so z`-YM}q-s>w^&lKlqHifXUCsz4iM<=SfD?T)sDnbT^~u|?^3+Ls`JZ6L&~0- zbv+1L*P>@s7hjN3U1uO3j}$Q7x&whU7zA7*`Bf6S6;MMgi#vd%Q_)^yZQ#8$MpX$- z7yM+JtWB}zXgJmyYqFNrHm*X=N?Z$F(LK@K(SyynE;d3m`aD|T+CWWgUZYqO!L^aF zde?~VnKcKSi7d7HdoQf9kfK&;ej!{l5d|J}fUNr&Mdjan1{E8T#}QI<;= z5(MGV9Uz9z3u3``oH#xu*f4Xg=}(3R!#I{J3_B32vHllZ3KljL@Ulw95y-kDxyg(J zFflQi7$KMj<9-Nr2puU2-erR32)pzH)04)&{cwo0|B&GX8w7%3Dk zN=OwAFY8uold7p(J(EyTUK*9i9Uo1X&blMx#k`xJEX60?Gg&ti z_Y*In675D##Yb}K(s;a3%zMs=m(9B{kuDT)moGs&lPLn_I_d%;!HnJfnIYPgk;<6@ zTwcjwRh7oGqaKvT^F_~}OU^m%)c_enObkP)^7kjuR*qVf9vXtrG60kVePq({)$@x`1(%v z^EX`9hl+s#9`L!2Ska1@|}DMdMaZf(2Y*V;2%-82qD6#7ZBA%D!H~Xb=t#oCR2b zH#~s_`8WFa!c>MqR>ML~82sD50Hh;snKoa4oghZ9`PEq3*k0`9px(TQeFxir$a|>2 zUJ%1~YCrCM1AlQ5o-eWeZNr|o?2Q@NI5q!ddZUG*LJ@b2(O^@V#Fwq1ac63XwiNwo zJ)HpzD-67w@m9o_@tC?38jgotrM<}`;g?#=^CSF%UuJug z|Eh-5b1Cf_4}@Rpew}gQ7yJg}CjXBO9-HO2xfdS6-(}q7xvAlLp0^k`^SsTt@JpU| zG#vg!L;o2uW++kem)5&q)XI$zd_+5=h&;O4auGi;7gJ0_K7lU8$ zvc{wH|5L;94Y$(nYq)Tb@)Hf$=evdX4|APt*KpmwgK@Jyos66H>DGAk{P$_NUZ0l? zewo97!7uor#-sCJGk9d3TsL?Gzp)69oNytmpMHAPbHxd#vFvM21|H+O%i0rrIeGAP z-f#5&%_;cuR>sL*KOMU@oZ|Mg+-KmQviubTU(fk`&A|W7@+kL`kDN!Z8}|QT`7HzQ zVE$_ckDPbEG3@EwqxQR?!}sN&4sxzNU|i~ke-ZfYA@^c`pJiH?)WlxSs&)fUu-t3l zvfsUI;If~-!nnj0Ue~af{qB;1&j#ti6@!Oi_=#aJ`Ty3y#r|&wF7x@9!7uxHJuk9K z{!FxvajBcU0_p2NB0;flFZq9v*2XmW!*xe zbanziM6maYK|d~|qLWJ}JZH*-L?-Q}Au(JkL86!s1YetRh9}2{vhHXeZTxY1c(~}C zMl*6|sF-%?`$xxeS=SL4j0cI4{KSNVpKJ*iKb#Wy;THElr`X9E9~v#DCmf!|=kIKE zrCTreO_)+VF#i$o{~Qw|>|607EQOce8vXx%0RF=cwAWG`Srf7!Z)V*5B6-OKn4Fg> zOW^;LL7b-fXZ5H5G>B7QV?-|gdr8omNm*sn_@$%Un5@PFLkAP zn6b&_EKnf{cf`RpPDH|b>s8?7(BN!@^SD#ZZbD7ejZ6NDQ_T<7^}#NO6J{196Sr z*abCI>pT_F5V1N=-J~QX3aXGB1&C3KBia&@R6?;TP$)%$pf$7=ZK_5nYAgSU-7|M) zEa#52duG1xJ7><^IWwA*op-k%U9K%(R%nPCWiUGvf~nhq!h_LALYb+=A&3?mVXD}e znVKof%qCqI-Y63O1As4Y&&}sn0t6M8;M_8pnjvkGw3_RqH?oJ=F9FzRMIM;rp~A)W zEKr#1W=Y(}5^;`uV3zCS0QVXg-+)qJAahlPtszZwHEW)*7#{Q#CZ5nW|ldj zKD<$k>jK6b<6Q<8vksOW5#LC*yVIW zW)^!(mX%C={LTD$l3X6fo{}b}aX0PPbNF7#EjEBhmZUXyb@Go(F0vA!_P&mXjkq@K zo&1gQ7v?#ybC9}fz2rYdgjV=z*#TfLSNy~p^aGe2KCJ;% zp2n1SDcg)4-U9m*e&G$%|Np!->?)eRU7E*}0grW3el&A>MRK@#R;h^t{CxJDkni(Grg4<=S zrJB32$U=w|(H3+}xJT-F?pk4wm_L#h>Gb+Wc0)IdWW_prtl*Ij5qx{u0I+I9P>0HT zfz|kh+rg-a4scd>%6j{TfhB!HJUqFh^b}iDy^=XfzwcS^Y4t1%S1|vQOx5_NFnKi5 zkJ6#$vi{ZIuov$oDkEKTd&b;?I4A9SH>cTGxUc;AbcE@~4&9&BJ-5Br9E$Y-|}oix8o^x>x<7z>8KFrWcZ+2sZ}$4 z(u{@MWC?tayJbtuJ4nT6$W6X!I#^y+$O?iqV4%jT_~_EK@KG7YN|dk$iJuf3xKONX zB<^%jhuWz150ECym{+u`ZfSXLBJ-7pYWhRG}qluLqGYK%c4+c_hE@o z%i>rk-5-;<(<6Z665l8B>mGcfDlIl~ zg=izI#NS1mt+l;__oAWjb@>rnWcF%ZhcHi=%xbQ0AB>JAIY>p}dT$X`u*&Kc^GreQO z-;(-&E)GOmb(tsSrKu8?=Np#V@E0h~WmdF>bjKXs>e-r8;#xHB97Ii43x;%c&RR} zt*b{Zwb6LVdQJj-j9XG^V+((8QERZG9ZRLOr^EaeB{EE+d-BmB-35Hwi oTg!-Vw}p7iRhd%1I`HQ*g)f)F0pLP z$Oy}*XPJpp!=iC4GKXun%tf^fNt{mIh9xnPm>Avunu!UX``)<|?@eCMJ-_oi zAMf0c*Tu)DIwoS;VkBKtmbu7}*|a|yYD2&(r!5Hcri7&wDfi^#hY`fwq_&8 zhjIn1OURB=l$ZGsvsp45K$+!3Jzh(82z>(e6_(7Fpd3ejktI8X-h+1Cl371W#)d8k z{18eX>pIRD{GvY!!%jO4=ehV9IFM&Jp1_LUgzNeyf%BY+wIJ4q*ds8m*YW{@X`Utc zS)b=W!DsnNt#=`FGk=zAb9OlAGPL!2=Bn!oFL2wLIrzJ2_@eMWo(5Y{Q}7kWM?J5h zK}&CA%zqMRM>WPuj>6WWD&7cVMQMH>!tS7P-X=&r#Ucpb61RN%NxkbLbh*2=e{68d zo#0I{@4h>n#e^%jzdXQr(hzgZV6l_+S!nPy@GQLGS(6zkKEdHmUl0q0`s$L<9OekC;Jr**IpH26l~p#blPV94O3&>S+VrmW=5>{?r4 z&wH--3)&&y#`yg8?+S6xpgqgr^-ziSD}%$KilALY#<5oXv=zD^LYBx7&Rh!Fc*;zS zY8)SpaVGU{)Wx_1AA#?qFv9}GQIC(n?YJspOk09ApcMEF;W@(ZA$*t90?cx7bEU#J zI@=K{MxP04vD^|H2%n@@H(9Q1GvPlHK1uj9gikwRwmb<-<@cwiiQ>ibX``9s8N&Sv z{<*@ZYS{&aFYzc%WPFLotVxQ=1kzBaI8fHIsQG1ntIQ7JSX5~3 zvDW-iy5}z2VJy~|&q7x2TXy&+)~I*m*H4TSpvRNC?zXf#xDoO~cRZ@ys(`)mR=xRu zhHLSt{v08#pw}d|m;voIt@<(A*(YItO;UeMEDDYqGupM9s5a~q{|(Fn6H$Gb>`m}M zBALGq|7wZx7lW}xqyH=&(X+IDy=V%;_lbl)SZeavpcyt?8`bL~7IMZyVy=GyJ=jMi diff --git a/lab6/obj/sched_c.o b/lab6/obj/sched_c.o index 6e2f4f9ff90d2178ef618e57c915def14ce11403..b4d3eab90cd99be510e2b80b4b2db021c07cfcf5 100644 GIT binary patch delta 4081 zcmZ`+e{5S<6~6a6FY)WMoj6YN?4(KT#!cL;&94=lvNlPp{!zmQ1x-pD6+DwJ$QkU9Ldz8QOj|nAlAumPXiS+>Mvwrt1H>fQADz01PAf`KCCcce4l26BG;z*- z_nDVBc4fbJzwdnKocsH|H#>NFXf7dU+luY?cnG%e=i-cg`%T8!v-Ds0u%E1%1NZp> zcAxI-0RE9*S>;(CXM#OSXw6{6&f&kf-Z}dVHk0|Vq}=XF2)NT)1uwUj!=$zeZncJ2 z=CnKftmcK;it55*8Dsdv;^lPp(ZyNTEUTmhU4`b~g*OlP5|Y-esPNuJpv`peV!~TR zbp$xZ-_kgt*T$C$@kK`q3#7Z{rtruQ`Vy__f! zt{tGe1tR5S$XcLYf(Z*WNRYF@W(o3IZhVA^MhRvtOOpgAEzoSxxXfB0D#59OmK#H- zm_&1|qD&i~%riN%B5wW%^&X*7gLLmEx^cboEH+8^5TIhbfsp<_3f|BBUa|+s#0~vd z8?+Yd)2LG_0`{L(O7S__E~<9X1q)x;jT3IA{ef(tD9%{$yn;DaC6&*XoDq%kmUiC_iI0@=8wCRO9)Q)5VhIEo@6D$N2On>a8f|Y$tX`X+qnsu^Cl4 zj6AjCD@vYcCCOt-a#Bf-Sdv09SL!|6tu$5x#^ltBB6|A0v=Zvb%zNbYQI$$nspbE` zz$Q_=C-R~kgDf@nLBBOz*m7K*e7|mWB(Eke*-;vwI5}hC3)Y;r{~t?O3R?6xV9BT* zJcJu4G(0`Ucw9}&42wubctax(5r>5@P>Uj;n7{*;Sq@#jaT@%-#==hK34G3Y$k=71 zLj9557}gVKhS6tua21z@xF=v3mYs+2tnuTXw&lGB?q4KI{zOzLZ`@kmI)@E+LM6t< zS$Ad>S?sC7c`8KFeKD2_b)v>k(iAcQr?@{NP+i%<`y+PFwn&gyR}6%o-xr|(RUPb; zw&(U?r-JaY&n#3seJxM4l4l4Ll{!XgY79;S#%iq!iRzs0ZIM)HLkLrIbeBSeopKVx zvcJr$5=LOr-y_z_;DfR{o`JvnALb_X2A&B-J2j(2(>pZLsnzd+*8@MS=+Zo&*Xldr z8;^Yw{Q_W1PVFdG}qrzb~Gq-p&PXERff3@(=E#?m9> zQ}A~1dyuX^*CChj-ayy+@(Y^S_vagQQfCJ zxA(zuc%{yS<+`14sjh}!AQX8CgH$ulZmPW^gCX}SS@{*ZcK=jq9>rZmB`U9s{Q>Xf zn^(Mj9{ovr-B8vrZUid!k@Od=lh<~|+ehE~GUJDIjg?_*NOMYQ?1QsX@yl@C{Lzl% z<5TJU(R42RB%97m<&?`x>Tm^!mjx|(VgCbgQJACUMF>xW) zo7@XuZZP>NSwAD|w;+bh9m(7!23~LQ!R-bguY%xalh?q~W-}63!%jVDaYRi>&34l8 z0oaSm{SIY=LwN+&G0zBGMdc~!b%wlBzjf%_9QtdY!oT||{F;n;lVWy9)l^bzTOBdu z4t}eH-wC|Ye)s9k2J`l_oRwk%}r%K~DzzajPp2o41qKxp@1HvIT<8W~9qy zT~%&-U~jXT8gyChC&P$~|ChqYT>L{S8o(0fT5?%0D*R)(iq@Yg#PO~sS9)Iq9yJT= z4y$vuzo&S+*MC&_oKDKs$|Ix8f@lPuZ!utY)go;@e9O_D0;{3Ir<9 z9=H-UQ~O=v>{DgX<@J5l%&)oh_DOXNVllHYe zU2(o-(d>rB7nnUN_Hlg2~V3y7*tK1k0{C*Hn*x@6z8Qo|eKtVQGuW{|#5Sm?^(n8+NjnRnQv6 z+r6=OW}8d@j?(u)cZ(T3?6STO$68FtwRri{@MOzh`Ax{g&4@kncU40*j6q|Phhp4J z*$ZO3ifmi$W%RI%x0mCDi(g*(Al}LO8pK+Az4FzOu|>$VCiSTN>S1gFmRghImm0l~ z;D>C2Uxr9qznE=?p|(B*=i2)9H|5tHV;5n)Eve5pTTNbtSR$z(SI5uKA(Kdo9RYYD z(I*aWg?AEt`d8%#5o4ne+m;lwTVZHhpZ=PB`^6AQny|Vp%3p))+xo@rYT1OY_5?n) s4!8G<`K|Cmd!KH9ha80U_N0Cp->;}dFkLeYJP_7b)sx_Nu-@AIU*_Ng82|tP delta 3718 zcmZ`+YiL~67T$YLCOOkHGf8HeoS8gllC+(qZJN|-5{pTCDb>M(4JfUp+SWF8O4Bf= zQ;iUu1Qa5OWL&k@OX`b&f(Wfq@m{#s6z_#9BEG-}DhU*<^+AOC`XjEj&pM|kN8Ge~ z?{9tIT6^v1nJny`+&z;~3u{UpzseZ2$kX#*%A5=jN^!do;?$xkexJ_;G77qaWiS&= z&A%C}Q^muS$%hu$nzEKS4? z3ArO|haIO3ZmuSoD&?HK#klP+`p`~U+{*HTa3u#=vX3Qqup}?sd9<;_PT+t^yINEw z^b8w#6hsa2a--fp>QedMZZP$aFmNp)xiR^OUV|JZ+ZmxSxN$K$kn*OGJ&^)$T)Vpn z&ggR1-qJOiu_)p-N<-NcdIe;-W_K@M{n(+CV?s9bri_b(P9eS`$vtGlB4;V1)qmN* zTWne{U5$ARj)xnIaT$o3=8fi7v(J>cM1hD17&gqtdrf?l+JtHLn*lt&LFA%duADhT zh>BVdhmTk#df^^#@mLk+yh_S!oW?QJA{*aiHshj`G>fK)S3Hm;c@(xr>gy{z#X!;- zd0nzv#wrFAr~i?}vj_J@tikF|d5w2j8YPAy-PusUxG6~>#A>@kq8hjuY3!^G`ck#L zQM2(CaT5@aZdP+;kPg<$A-Frb6QBB*qmQe)O>lGNvw>h;7yMB9wrqv-RacsioE$wQ z?j0`dA02*RKOK+!*zoZ2d}06a=)rqNhT*O1=io@}QCNC^{pTeRzJ`7^->zy3-; z8V$H_=Xme*9b#VHKL191uaq?7M{jkllV9?r96BAM_@YQp!;8|k3 zPhn7E6L_Ynq;xIBi`bIAm+f_7?LToSH+=XcF3n_e-~3`SC*?Gh>aFAqPa}@4zNR_|epTTDvgeqs z$F`msYA(W0$S(ek?SjqqCZxqHr4?Ht&c~5IT(3(qsqxoKImPylH z#tT7l(ry&I93Hzj&lH@;(K8-4p9K7L@abQ8SOM? ztH=AYCu)nw{u_-c4Jb8PGNJ1X)sZgVAd0gNjyG9JuNS>YREW*M*``eqFFOuH&6b>i zqs_ZvSIU5k&3XOSlE)>uFJ)!Fr7jkQ{`CEDJ}tj!>oq$=5kMUkM<2E!-v19%R~b^VT|V!*(VuEYN8io%Z#;TBo(0~eKWux4yL|fdf`SOCusDIhhN2Os zTC8jvvosm%I(N3m=QYj4_WShCJ1_)GEmm=lk9A&;W4>r#akMd?-g%2o`|N|f&TshQ z+{SbHk8LjsXBy69_kqvhAs+Zs-vG{T{OHra!+MJoaN>W)_8V8&@dwsE4sh2B05m(sZ3n;Z&*&lrD3p~tK-!RTyt>Dw; zr29VWWAIa(mF)AeU-MYoA-#rP+rBm5$OTBRwUW+$TxCTNl~8}9Nl4^ z!?n|AcMj=@&t8~6zjl+9bFj3o*WgFJ3euUL&}Gi_6dcU-sEHtb)8SkuBPZeW%z#>M zgu3>A1b4O%gr3lUG6?Z7Jm20EGMem^r(p?EEk8klZk!K5K=&8~Q_w f_*;dF0ncy1wD}VM3{%18CpIQRzqQ%)|H<$t)jqI9 diff --git a/lab6/obj/sched_s.o b/lab6/obj/sched_s.o new file mode 100644 index 0000000000000000000000000000000000000000..4731b402643f298c22853c9f8e5fb68e4b618b3b GIT binary patch literal 848 zcmb<-^>JfjWMqH=MuzPS2p&w7fnfrYpaWRgfq|WYjX^koVWnsU<4W-arj?Qz%qyh} zSXRnbu&#W`%rKGDfZ?ZcfWu1D2*;J?2~I05Gn`ji7r3mnt#DnbY2fhFo{?c<;{}PU z2bklp&9`R0%Ag=|Rlb?yDu{jGo*68TZ~-QZ8LLYf7?>HDFckwun1K)-K)i+IIj8~_ zAT5B!d_JhS2f9Hj6%57YnI*{?@g?~Tr3ER8C8_ZR=_w2hdc~EwC5cHux}*p~XTVq` zsTCy*dO)R#40=h$#pp(o!T*Pu*Kd2pg0JufKUvqKpKQWc7cEdgksMR1|!2p&G+p33=9kc4_g={fb;_@vF zKNMLQ0vQyFbWr$E!$7Pczo5;oRgMt{u&k7= zU|so=nPDQQ0mDz@0Ed;P5soX(6P#9BW;n03E^t|CTj9D=)4<`UJtM=!#tRZxH|t2m zFbdi*paPl6jgsP$7GOaZh6Yqg2II*afwEpu**8FcAcK_24}r2(P}vY>WH|#sC?!65fs_Q}w#f^n#2NR4$%|m}E{L2gA$_1e z1QgN?EDRL_sJ10Q#T(GX)1cx#XyS!X@hNEHwNUXnXyP4UafZq1(t?cBCnrjab1s6a zTrs&&MwvY~HMc6YD1Y)t8PUlrWOh!@luhI;F3&7U&WJC`pL|j_R+Rb(aKCwIY%!F!zE?QAHA80#y$Z zS3?qq#TFA#TpUSUKydRa`7%Z(1;NQmie{V>rZ5{H5DPK>fJL|w~w84@BB{#<#2ICD^{7Asw3q^Aua4=n>N^}qHCg7VF6TfBCzIT_KME3$5 z(`q!&z|gl&9!>r1%$9}u@5E?quuBsR>{XErP64AVS9Bss$@dxBmwCr*0Nxi$x+05H z{CY<{ip@Q02qn8*%ekTS^C!6^y$+=>xrm|m-9jqhy+ z1f|xLktFANTn~(7Syj}knhjEzb~bW1TLF4>sRf3NmAWT#0M;bUMd?IV;evk1_`xze p5Col*pu9wxQPrEIp2TFVevf!tA7}jZ<%l882&zA==qZzQe*v$MLm~hG delta 460 zcmX|+u}T9$5Qb-OZ|`=q5>1Ze3?T$1B3K9(f+j|YjRq@g(-}f5PSlQu$`pP zHxQ4Ag6q8r0IHi^+P>datT8E=)iYHyK@c> zdG=!V{6Hv%Tg;=sSQW0FNnkvQ*P>x8Hr$}m9(igx8;$k$;u3! z-r$U;FahR0l_kc_wOq33=N~CVuNHmF6&9ILl{3k2uVBhPy6;71Ta}R=s|8x2n&wLt z=ePhatGcGwbu(~g0o-ZO8bDM~HZ@Pj*;HP$Wz)!og;iRG#V9sv>+f?X<_u}qG9*Y- X=!>XSeRG!!vrkDgp*s*ix[0]; char *program_pos; - cpio_newc_header *fs = (cpio_newc_header *)0x8000000; - char *current = (char *)0x8000000; + cpio_newc_header *fs = (cpio_newc_header *)0xffff000008000000; + char *current = (char *)fs; int name_size; int file_size; while (1) { @@ -126,16 +127,23 @@ void sys_exec(Trapframe *trapframe) { current++; } } - char *new_program_pos = (char *)malloc(file_size); + printf("program pos: %x\n", program_pos); + printf("file size: %d\n", file_size); + uint64_t new_program_va = (uint64_t)malloc(file_size); + uint64_t new_program_pa = vir_to_phy(new_program_va); + uint64_t user_stack_va = (uint64_t)malloc(USER_STACK_SIZE); + uint64_t user_stack_pa = vir_to_phy(user_stack_va); + mappages(current_thread()->pgd, USER_PC, file_size, new_program_pa); // map user program's code + mappages(current_thread()->pgd, USER_STACK_LOW, USER_STACK_SIZE, user_stack_pa); // map user program's stack for (int i = 0; i < file_size; i++) { - *(new_program_pos+i) = *(program_pos+i); + *((char *)new_program_va+i) = *(program_pos+i); } - printf("program pos : %x\n", new_program_pos); preempt_enable(); - Thread *cur = current_thread(); - asm volatile("msr sp_el0, %0" : : "r"(cur->user_sp)); - asm volatile("msr elr_el1, %0": : "r"(new_program_pos)); + asm volatile("msr sp_el0, %0" : : "r"(USER_SP)); + asm volatile("msr elr_el1, %0": : "r"(USER_PC)); asm volatile("msr spsr_el1, %0" : : "r"(0x0)); + update_pgd(current_thread()->pgd); + printf("go!\n"); asm volatile("eret"); trapframe->x[0] = 0; } @@ -152,11 +160,8 @@ void sys_fork(Trapframe *trapframe) { printf("child: %x\n", child); - // copy kernel stack and user stack - uint64_t kstack_offset = (char *)parent->kernel_sp - (char *)trapframe; - uint64_t ustack_offset = (char *)parent->user_sp - (char *)trapframe->sp_el0; - // copy kernel stack (including trapframe) + uint64_t kstack_offset = (char *)parent->kernel_sp - (char *)trapframe; for (uint64_t i = 1; i <= kstack_offset; i++) { *((char *)(child->kernel_sp - i)) = *((char *)(parent->kernel_sp - i)); } @@ -169,7 +174,7 @@ void sys_fork(Trapframe *trapframe) { child->cpu_context.sp = child->kernel_sp - kstack_offset; Trapframe *child_trapframe = (Trapframe *)child->cpu_context.sp; - child_trapframe->sp_el0 = child->user_sp - ustack_offset; + child_trapframe->sp_el0 = trapframe->sp_el0; printf("child sp: %x\n", child_trapframe->sp_el0); trapframe->x[0] = child->pid; diff --git a/lab6/src/main.c b/lab6/src/main.c index 4493803e7..15db56a9c 100644 --- a/lab6/src/main.c +++ b/lab6/src/main.c @@ -65,11 +65,11 @@ void foo(){ void main() { //asm volatile ("ldr x0, =pg_dir"); - asm volatile ("mov x0, #0"); - asm volatile ("msr ttbr0_el1, x0"); - asm volatile ("tlbi vmalle1is"); // invalidate all TLB entries - asm volatile ("dsb ish"); // ensure completion of TLB invalidatation - asm volatile ("isb"); // clear pipeline") + // asm volatile ("mov x0, #0"); + // asm volatile ("msr ttbr0_el1, x0"); + // asm volatile ("tlbi vmalle1is"); // invalidate all TLB entries + // asm volatile ("dsb ish"); // ensure completion of TLB invalidatation + // asm volatile ("isb"); // clear pipeline") uart_init(); init_printf(NULL, putc); memory_init(); @@ -77,11 +77,11 @@ void main() { core_timer_enable(); cpu_timer_register_enable(); set_exception_vector_table(); - while (1) { - char c = uart_getc(); - uart_send(c); - if (c == 's') break; - } + // while (1) { + // char c = uart_getc(); + // uart_send(c); + // if (c == 's') break; + // } printf("%s", "\nHello from Raspberry pi!\n"); // for(int i = 0; i < N; ++i) { // N should > 2 // thread_create(foo); @@ -93,10 +93,11 @@ void main() { // thread_create(foo); // } // fork_test(); - // int ret; - // if ((ret = fork()) == 0) - // exec("syscall.img", 0x0); - // idle(); + int ret; + if ((ret = fork()) == 0) + exec("vm.img", 0x0); + idle(); + /* char input[1024]; while (1) { uart_send('\r'); @@ -106,17 +107,17 @@ void main() { uart_puts("running...\n"); } else if (strcmp(input, "m") == 0) { shell_input(input); - int size = (int)cstr_to_ulong(input); + size_t size = cstr_to_ulong(input); void *ptr = malloc(size); uart_puts("Allocation finished: "); - uart_hex((uint)ptr); + uart_hex_long((ulong)ptr); uart_puts("\n"); } else if (strcmp(input, "d") == 0) { shell_input(input); void *ptr = (void *)(ulong)hex_to_int(input, 8); free(ptr); uart_puts("Free finished: "); - uart_hex((uint)ptr); + uart_hex_long((ulong)ptr); uart_puts("\n"); } else if (strcmp(input, "pm") == 0) { print_freelists(); @@ -125,4 +126,5 @@ void main() { uart_puts("Error input!\n"); } } + */ } diff --git a/lab6/src/memory.c b/lab6/src/memory.c index d34059a4c..b17566f2b 100644 --- a/lab6/src/memory.c +++ b/lab6/src/memory.c @@ -8,6 +8,7 @@ Freelist *heads; Node *nodes; int *frame_array; blocklist memory_blocks; +extern void memzero(void *, size_t); extern char _end; @@ -121,6 +122,7 @@ void *malloc(size_t size) { int needed_order = log2((size+PAGE_SIZE-1)/PAGE_SIZE); void *ptr = (void *)(MEMORY_BASE + allocate_page(heads, nodes, frame_array, needed_order, -1) * PAGE_SIZE); //print_freelists(); + memzero(ptr, pow2(needed_order)*PAGE_SIZE); printf("[Malloc] %x\n", ptr); return ptr; } diff --git a/lab6/src/mmu.S b/lab6/src/mmu.S index 34246f105..a81466ed1 100644 --- a/lab6/src/mmu.S +++ b/lab6/src/mmu.S @@ -19,7 +19,7 @@ set_mair: .global create_page_table create_page_table: ldr x0, =pg_dir // PGD's page frame at 0x0 - and x0, x0, #VA_MASK + and x0, x0, #VA_MASK // ttbr put physical address add x1, x0, 0x1000 // PUD's page frame at 0x1000 ldr x2, =BOOT_PGD_ATTR diff --git a/lab6/src/mmu.c b/lab6/src/mmu.c new file mode 100644 index 000000000..6e4644ab4 --- /dev/null +++ b/lab6/src/mmu.c @@ -0,0 +1,67 @@ +#include "mmu.h" +#include "typedef.h" +#include "memory.h" +#include "printf.h" +#include "uart.h" + +extern void memzero(void *, size_t); + +void mappages(pagetable *pg_table, uint64_t va, size_t size, uint64_t pa) { //user va 轉 pa + int pages = (size+(PAGE_SIZE-1)) / PAGE_SIZE; + for (int i = 0; i < pages; i++) { + printf("Page: %d ", i); + pte *now_pte = walk(pg_table, va + PAGE_SIZE*i, 0); + *now_pte = (pa+PAGE_SIZE*i) | PTE_INIT; + printf("PTE @:"); + uart_hex_long(now_pte); + printf("\n"); + printf("Insert:"); + uart_hex_long(*now_pte); + printf("\n"); + } + return; + // walk() size/PAGE_SIZE次 +} + +pte *walk(pagetable *pg_table, uint64_t va, int alloc) { + int shift, index; + pg_table = (pagetable *)phy_to_vir((uint64_t)pg_table); + printf("Start:"); + uart_hex_long(pg_table); + printf("\n"); + for (int level = 3; level > 0; level--) { //PGD, PUD, PMD + shift = 12 + 9 * level; + index = (va & (PD_MASK << shift)) >> shift; + printf("%d\n", index); + if (pg_table[index] % 4 == 3) { // is entry + pg_table = (pagetable *)to_pfn(phy_to_vir(pg_table[index])); + printf("PG_TABLE: "); + uart_hex_long(pg_table); + printf("\n"); + } else { + pg_table[index] = (to_pfn(vir_to_phy((uint64_t)malloc(PAGE_SIZE))) | PD_TABLE); + pg_table = (pagetable *)(to_pfn(phy_to_vir(pg_table[index]))); + printf("PG_TABLE: "); + uart_hex_long(pg_table); + printf("\n"); + } + } + // PTE + shift = 12; + index = (va & (PD_MASK << shift)) >> shift; + + printf("%d\n", index); + return ((pte *)((uint64_t)pg_table + index*8)); +} + +uint64_t vir_to_phy(uint64_t vir) { + return (vir & VA_MASK); +} + +uint64_t phy_to_vir(uint64_t phy) { // for kernel address + return (phy | VA_START); +} + +uint64_t to_pfn(uint64_t addr) { // to page frame + return ((addr >> 12) << 12); +} \ No newline at end of file diff --git a/lab6/src/sched.S b/lab6/src/sched.S new file mode 100644 index 000000000..0fd500176 --- /dev/null +++ b/lab6/src/sched.S @@ -0,0 +1,31 @@ + +.global switch_to +switch_to: + stp x19, x20, [x0, 16 * 0] + stp x21, x22, [x0, 16 * 1] + stp x23, x24, [x0, 16 * 2] + stp x25, x26, [x0, 16 * 3] + stp x27, x28, [x0, 16 * 4] + stp fp, lr, [x0, 16 * 5] + mov x9, sp + str x9, [x0, 16 * 6] + + ldp x19, x20, [x1, 16 * 0] + ldp x21, x22, [x1, 16 * 1] + ldp x23, x24, [x1, 16 * 2] + ldp x25, x26, [x1, 16 * 3] + ldp x27, x28, [x1, 16 * 4] + ldp fp, lr, [x1, 16 * 5] + ldr x9, [x1, 16 * 6] + mov sp, x9 + msr tpidr_el1, x1 + ret + +.global update_pgd +update_pgd: + dsb ish // ensure write has completed + msr ttbr0_el1, x0 // switch translation based address. + tlbi vmalle1is // invalidate all TLB entries + dsb ish // ensure completion of TLB invalidatation + isb // clear pipeline + ret \ No newline at end of file diff --git a/lab6/src/sched.c b/lab6/src/sched.c index d32548cde..a6e6fad6e 100644 --- a/lab6/src/sched.c +++ b/lab6/src/sched.c @@ -2,18 +2,23 @@ #include "memory.h" #include "utils.h" #include "printf.h" +#include "mmu.h" +#include "typedef.h" +#include "uart.h" static Thread init_task = INIT_TASK; //Thread *current_thread = &(init_task); Thread *task[NR_TASKS] = {&(init_task), }; int nr_tasks = 1; +extern char pg_dir; extern void run_thread(void); extern Thread *get_current(void); extern void enable_irq(); extern void disable_irq(); -extern switch_to(void *, void *); +extern void switch_to(void *, void *); +extern void update_pgd(uint64_t); int get_new_pid() { @@ -56,6 +61,8 @@ int thread_create(void *func) { //p->cpu_context.sp = (ulong)p + THREAD_SIZE - 16; p->kernel_sp = (ulong)malloc(PAGE_SIZE) + PAGE_SIZE - 16; p->user_sp = (ulong)malloc(PAGE_SIZE) + PAGE_SIZE - 16; + p->pgd = vir_to_phy((uint64_t)malloc(PAGE_SIZE)); + uart_hex_long(p->pgd); p->cpu_context.sp = p->kernel_sp; // kernel space int pid = get_new_pid(); @@ -95,6 +102,7 @@ void _schedule() { //printf("[scheduler] next pid: %d\n", next); Thread *prev = current_thread(); //current_thread = task[next]; + update_pgd(task[next]->pgd); switch_to(prev, task[next]); } preempt_enable(); @@ -143,7 +151,6 @@ void end_thread(void) { } void task_init(void) { - //Thread *p = current_thread(); //asm volatile ("mrs %0, sp_el1":"=r"(p->kernel_sp)); uint64_t init_task_addr = (uint64_t)&init_task; asm volatile ("msr tpidr_el1, %0"::"r"(init_task_addr)); diff --git a/lab6/src/start.S b/lab6/src/start.S index 00e2bcea3..6a50319a0 100644 --- a/lab6/src/start.S +++ b/lab6/src/start.S @@ -41,8 +41,8 @@ _start: bl create_page_table // clear bss - adr x1, __bss_start - ldr w2, =__bss_size + adr x0, __bss_start + ldr w1, =__bss_size bl memzero // mov sp to virtual address @@ -56,10 +56,11 @@ _start: 1: wfe b 1b +.global memzero memzero: - str xzr, [x1], #8 - sub w2, w2, #1 - cbnz w2, memzero + str xzr, [x0], #8 + sub w1, w1, #1 + cbnz w1, memzero ret from_el2_to_el1: @@ -230,27 +231,6 @@ core_timer_enable: str w0, [x1] // unmask timer interrupt ret -.global switch_to -switch_to: - stp x19, x20, [x0, 16 * 0] - stp x21, x22, [x0, 16 * 1] - stp x23, x24, [x0, 16 * 2] - stp x25, x26, [x0, 16 * 3] - stp x27, x28, [x0, 16 * 4] - stp fp, lr, [x0, 16 * 5] - mov x9, sp - str x9, [x0, 16 * 6] - - ldp x19, x20, [x1, 16 * 0] - ldp x21, x22, [x1, 16 * 1] - ldp x23, x24, [x1, 16 * 2] - ldp x25, x26, [x1, 16 * 3] - ldp x27, x28, [x1, 16 * 4] - ldp fp, lr, [x1, 16 * 5] - ldr x9, [x1, 16 * 6] - mov sp, x9 - msr tpidr_el1, x1 - ret .global get_current get_current: From 5bc123337c2c536d4158d7abeac7dcc867f595a8 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Tue, 24 May 2022 18:07:40 +0800 Subject: [PATCH 04/19] lab6 not finished --- lab6/Makefile | 4 +-- lab6/include/mmu.h | 9 ++++- lab6/kernel8.elf | Bin 52248 -> 53600 bytes lab6/kernel8.img | Bin 21616 -> 22224 bytes lab6/obj/exception_c.o | Bin 14680 -> 14808 bytes lab6/obj/mbox_c.o | Bin 4056 -> 4576 bytes lab6/obj/memory_c.o | Bin 17848 -> 17744 bytes lab6/obj/mmu_c.o | Bin 7096 -> 8400 bytes lab6/obj/sched_c.o | Bin 11584 -> 11632 bytes lab6/src/exception.c | 24 +++++++------ lab6/src/mbox.c | 8 +++-- lab6/src/memory.c | 2 +- lab6/src/mmu.c | 74 ++++++++++++++++++++++++++++++----------- lab6/src/sched.c | 4 +-- 14 files changed, 87 insertions(+), 38 deletions(-) diff --git a/lab6/Makefile b/lab6/Makefile index 31e91c451..edab984e9 100644 --- a/lab6/Makefile +++ b/lab6/Makefile @@ -58,8 +58,8 @@ run: qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none cpio: - qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -initrd initramfs.cpio + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -initrd initramfs.cpio debug: - qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -S -s -initrd initramfs.cpio + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -S -s -initrd initramfs.cpio diff --git a/lab6/include/mmu.h b/lab6/include/mmu.h index a9e4f3fbc..1174b54c4 100644 --- a/lab6/include/mmu.h +++ b/lab6/include/mmu.h @@ -26,7 +26,7 @@ #define BOOT_PUD_ATTR (PD_ACCESS | (MAIR_IDX_DEVICE_nGnRnE << 2) | PD_BLOCK) #define PGD_INIT (PD_ACCESS | PD_USER_ACCESS | (MAIR_IDX_NORMAL_NOCACHE << 2) | PD_BLOCK) -#define PTE_INIT (PD_ACCESS | PD_USER_ACCESS | (MAIR_IDX_NORMAL_NOCACHE << 2) | PD_ENTRY) +#define PTE_INIT (PD_ACCESS | PD_USER_ACCESS | (MAIR_IDX_DEVICE_nGnRnE << 2) | PD_ENTRY) #define VA_START 0xFFFF000000000000 #define VA_MASK 0x0000FFFFFFFFFFFF @@ -34,6 +34,11 @@ #define PD_MASK 0x1FFUL // 9 bit #define PGF_MASK 0xFFFFFFFFF000 +#define PAGE_MASK 0xfffffffffffff000 // va2phy_user +#define PGD_SHIFT (12 + 3*9) +#define PUD_SHIFT (12 + 2*9) +#define PMD_SHIFT (12 + 9) + // user space constants #define USER_PC 0x0000000000000000 #define USER_SP 0x0000FFFFFFFFF000 @@ -47,9 +52,11 @@ typedef unsigned long pte; typedef unsigned long pagetable; void mappages(pagetable *pg_table, uint64_t va, uint64_t size, uint64_t pa); pte *walk(pagetable *pg_table, uint64_t va, int alloc); +void copypages(pagetable *parent, pagetable *child, int level); uint64_t vir_to_phy(uint64_t vir); uint64_t phy_to_vir(uint64_t phy); uint64_t to_pfn(uint64_t addr); +unsigned long va2phy_user(unsigned long va); #endif #endif \ No newline at end of file diff --git a/lab6/kernel8.elf b/lab6/kernel8.elf index 23a5e04c73ca7ef4358eaae4f1736b581d0e1453..0d4a6f6ca85b225f35796d1e1112363e37dd4536 100644 GIT binary patch delta 16303 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 z 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 Y+Zv7t%o#>cl-MfX7SQ8t+fds718DLUZ2$lO diff --git a/lab6/kernel8.img b/lab6/kernel8.img index 14658e431df55de37a955bb7b4d71f2d93197a8c..3997ef51ca59d61efa2d6df54a74d1c1a821a5da 100644 GIT binary patch delta 4392 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 C*MElq delta 3759 zcmaJ^du&tJ8UN0W0|COYV@C<(VVeZYS%C{O)vP2xwX) z>zwnw-`~y9du*hiO>-0V#uEu=h=?;c^`_vLir>K7$EWRJEFd_GDT(poJI<9Nsywa? zTh~e!R(@_?V-CmC^a<+no&m*r4jFnVqOp&*pVcR+hM#Dk-V+(dc|^}q4Mt>`j01D|jdV$`8XkpuO_)BH zUjfX#(>#93#uKT=q%kxXC0rWdAeSB@O&X&IRng%}RrdW`JnfoUwOyK$WvlYd<3o}q zOEs>sd#VNj>!e7#6!EZl(-m~aYi+O8dHlD)igT{KutH(IHloqU^Jn9b;DbZbpjK#D zGFD6HJpPWY<&R^u{1mWUM2u+9@Z005cMf<$q9miHyd1Zx2PC{?OXwdXVUM(AXqrd) z)lKpJjMDq8d`9B>Gjc`0r!_W``OUb(=sbRKA_^dxAYUy%Am2gTwP-DWRZPfBD7Q&W z%zu?#6|d)qSX_LW-^@M{dEOv9EuQdpJTYz(BGy8hUZfgy4wb|r?M%X&0jmM*1mk** z6=Bv{hr4Qg4Mkp}Er*H1W)h=y{C9T~eel^6FH;Rk^SN;OK5EqK_@N1~syP|(0Pn?H zZ;oiMJ8*hYMPAh?8BO%biX!S677~t>$}|>?ihTdf{Ec@KeLs_tYE_L3Zq-mg7EkQW zh$sGX{kwO>_xy|4+v2o8C-a9k(IarcG%OO}E5$W`LAO4Ij2*!0MI=+ZpL|UQmv6Xk zQhJ(;VaX=pLMQ+cT;((Mfutrh? zXtjW(L7Q+Lyk-UvyrfJSU{f>npgjl8ccm40s#J}z?zSGLU@)3Q2s7IaI8N!4^xKSw z9^g0A5DyujovOxmt3t*DMwqlH3&ZP6`LlSrpqzPxRuE#dg;7wac$!2_;X?LtY*%5v zk~>7cdY*}_s|p&^OWI_!buehsnnY~o52SG$D$XutOqVl&wTl#qFYvnZL&P zf{+b_xU4v)TCg|A!XC0*fEC&GG)#wxl_LwO(EVdR+r>Tf4WQd$RnlniS8#sE3*$T zMo0>(unM&URYRCtVJT~pH1dADG%ORv`ykwO07Lr@61fVzGGX`Z_=9OjNW!~FizX7{ zQt3=-io0xX!OJqJV3jpbA8kL-W4~X-X{!;N%9b=v06XhaHNS(FF^EaUoA5?`Z0TYY zX7at=dSAvE8O8XJ>fSICeHw6Y2%{{AT^E_<#WJ6v^6KtFWDQR0&2rsE+NZ&IyDDYX zSQRL7>CtxgSX}lPoDywMAB!uta0ygkS+W8_uVC=Uy%9}MVMpjz_gNygPmGkil%*(*@O7;8>qLi#b)2&$ocb~B0E@h9!b(KrY|kR6Ww;q~+@(;j!>$1P z&F=odv|}udAA69c(JmV%emwgp<1pibJSG|{ir7nHUBw~*eDnE1al9gj?GhhXWU=+) zVuiP%16vINFV#C#4FP#ruf*6)i96Cmw4SaAMOn}OF#l`CCamOgqz)y<2njE%51Zsk{A3Ct( zF|6oLh|`_6vl}FN1xfZHSwg8YHS%tjjD1IPe_2!2yb-h*gaSo>*6bg6b?64v%K<6X z>ka%fxw`OPX=VKw`4;dKC}>lrvq?;uvx1$Bt(&uewZXOpd=2Q6x*h*pH)LbyRj8Wm ze?7%<IiLx_0Q_O|_|AJu}^jGj)fDFs1)FWTZeB!+$HS3;G)W{_LQG7)J z@vJyrThOpRsS>7niEZk_>`MCY9^=0!c}GWO;x1ij6t21~_P!{od$P+eaJkdxCPN(! z@dK8(*bc;BlM#?1QpxpB60Q>8o4j`te=$izs`mN6>@(Eri{0O@AI01_ zN!sJU>p1n3)`&bj9+ivjpsylhp|}<(^b9cG0w(>a*+nkN*epuwb68~(T@7@WOt#H8 zT_T(jg%<)rtv&5Ji*CIjj@Ntha-l9?l45?oC8gptXDdDiv&BE^iQ~gh?by##@{3yoBF?SpMzhKD`DtBJGrA<-}@%f_o;X#SktigrWI(G+k{ez z3=e|Jhc6-CVwFSPonCtje>@UK7srW(5B?8?o+e;ENvrwkuq zym`gV)-vW5(-+s4!KDzsfD2qg={>Odji6yn-oeYV6Fz zr&-{{#F_N?e%x)U(@558nU+STiq=J&qDHB-I9=M^z4x3k zC+#Hr?)m+m@B5H_ZRFbMs~$SDQ1PFXJVMAc*%^qN!#}%f>NO71naxRd_GnRt*PZ9XCU50$iHqq_;O#Y6xA5!=5Dy` zWodGARs)xLEzJD9NG&M^hC2zl6Q*RJkrI=6dUttRXvbv}34g;#)okZJrrQnD%bXXn zKrDZHg0K0^WHu8fb45dMBCyDKF!YGvSx|#_y38Nm-4KXJcc%TGR=S1qw6AWKfpnj#1Dy9WqewsXc53FR8<@7QSy ze3|)>DJ=z@S*4-I6zS;Kg~DutWE+~ZseIyNii(-eeUQ+eMeUu!?OYa5*%TQT;u*_H zW@CyB3GpY$b_sFb8fFezg1IEb7W5a{B653yh(pLeT;vZDdd?nZk|{F5+QMPlok(nk zwa0+w7ByK$w~?4RGLHrKZs43Lg0cHhoXGDRCA2@JUou#h3LA6)SuA4^%h)H_=TK}H z;`gu&Y{Bpl#5|@@z7R@O*-S`=kv}iEFr>GaFN6pa6z#c~2jR5{)eD6y5u1@&=bHewo;`IltY)w0Hz%tWht!2h-VB0QAFRK;C z!$jwyHMOAd)V7eXdZ6qiTuG)b{_IkoG5^m>;kGs zKgr%t*}>MKCwF(+X0|eu4tP6vx8ul>@tOg`&!5&#EO-tXog1~;C+NnaC$uV;rn$7D zak)5z3+o>EQQme<`?^-(h8uYWCc7K7{I9i^?A2;&w4xeK^J%u1we%XTjF?g=gZR{_ zZQ~PjD5ULswCozqGIONbpE6 zyj$?yXq!Gy(}#ooy<@>=hd^_5K#${bIPLh|HsdyJw+_EyJ(XoTd*dT3E6&9}*V%^; z;~Cg)?Rq2g)P}D@hUu9bAN@t@5DKRXOX$O}TikZn_h!@sHy+tmQL*CVX z2Imq=rr5pXV=6khQ8&>bEI*{vW5)Lj#`i1mqEn}{d>y^u+(S!-2PQkmj&(jiI6}IQ z4NvkKM#*?^WUO(0NF4rA1sKdRvlf2DwKaR7=`Wai9#Lh#6u|H3; ztx96wf@Q{DM7Dw1%A3QL-iJGkT|qXVv3$A2DKMGEYI1F z440eL6Ym@N*3OvCjK6qL__)U2Wtpm+d z=jg);$BkYJFEPvXo`V-A&`RpHQrtG5a$L{yO6G zuw1Q&E-9?Ex~|~=Mym%3{vzTT_$tVX8c@%s;PRXo2pkS<$_Z^!bYu=sDEL#@y=KH^ z2jr{wZAD-Dc}~IK!G2B(Jd`-GUm!817*t~5*A@Iz#DA*bm(kDLh|5Gj#YgAEb^4DJ zl8y$~RRaugcbx$tvNAJVsnJ8Z=vMYVhI>-0;1>|zrr@7p^t}px2lWpt_!h*!Bk;BU zc`@A=6a)Su@$rg+SK=X=MO^mj9+vyAqThu6|Flm3n}m!ZaZ@pneKO&TDm(N!CX|D? z3_OQ^{LtamcWqNxc?b3@-ei`-tS`1m^i zMT9h>#Y>8T6>>KF*)NLY9v!+ipLWaJo`Qk-6VJCT8|^&cuG1Ym6;{5IUD1xZPMYCy zi)b@x@T*6EOK-#E7Qdz5_{&HLz~UBv#*#;QDp{{-J-<^Kaha7io zxw$!ZLUMR_q1&6a5mF)?>4jV|iP0`6LQ?~Ly0D|@D0r6%jQ-AZl>f4@t??5JdDkmg zTXLxUz$BsP-GZ?t<1WMfH}2bZURAWwcGu3g6>W+)=a`Akd1TluiXXGY7oa2~ICasS@gh-xEjcM=PB?x5LAKPUH&cmroJ;raJ+MEjddxWGoj!{|xDv*~tA?EeU9@7&P@MgUY4;ek|rqEM~Mo zkhbKAT+bMqv*qK{gpO->3=(UZKr$wMC$aEBX-=WpFU{xH7W%xiBLQo%B_oo4!JzLo z_4{a_iB}qHPBPKeOCYZkjbC(@#b0vDK0i)Kaoz-w#d$~IUml;mR@HMN90pBI0VWU5 zUY~hP_8%T6bf{ENwj|cEuP_1ru%A|g%_Arp{B@L#L*nARCoRQ3OYub^2ZN^mYAN&)tU*RMUz)z-?IV6|e<)Weo{ zwUz(`&Xa6Sbx;P!h{y1BS;6zdhCx$?=QpX#n*bB~BqLod(i}naVYA0$2MBfJVVEnQ znudc^hUTo*Vq=#fojeT{>32%LO6#Z_UYZ58l)7NKl>yqN+npT++X})3JKdeSV097a z;mJ~sZ*jG*>w}AEC%t^awX1}%e&WC*4`^xn53X5S=6sNC^fBgR&co)zK0aL5U0?Aa zbG5RfKE@tnO}p8~0BZ-Q0BiD#=bb**7GO>vb8q6mD*JNW{Rm?L)=6wRc0b!8rU2U_ zCtXZFwnc8;7V zJXv5Hm%I<~&j@eu+(&(Ux5ukT@IVnh(GUX9Zc6O*h{>6F|8L zB{8_hVl1Rr)@wF8!3Vq=eVRu%YUzZxkMe)|!s#0S8#%O^uheLI1l_AZO)SwIz1+W9 z)BBKh11lcSBHhmiHft?|t7752SYvJ#zB=b~d=YZKh-^FLY_MVod6_Q*JCAG#Sn~o3 zr{lb|R@2`?)?ClK7=MO$1N-w;x~tc7l^+B)gSV|5Yq^NAH~6VqjW^d->st^J(+u1S zF+^Vi{E50A+RT4Z*Q!5;r@mCu#0GpJJQs0VKTJR3(fXd2bAX9)L{65^UBu0om>K&K z|4V(4M!BOQs1Lv`6XSh3S+UpnK!c_`kiD+38~Aq{dh{L0R-lfVe}OMUtd3~2!jALO zMos?!(On9=op(2C^v`@>W6##xsJa(>VCKJp_Nap2Cj3%kfWE|OQ;+^zO#ExbiSlTZ zrtd`bV}-rJlTF^z0xZlF{5wD2qzzOdx)Emz3L^XhZrzuZsNduAA64+T5#PtVw`lR0 z!rqVTeoet&MLdPLsosm~X~o~nb5X%R#yl$$Z?JZJ4vEi|fH2y2P6JvzA3j~gFy%{7 z-jBH1GE=@q!3VJ6?Mfc=HS&n!Z{``6I6oFBjX$aQd?J@bzN6qZsP(df-$eWk1s}pn zPb;|ik`-e~;tf{ux9|mU6$8wsMDXf=#{EGpZbvVZ{THV5Ag;EoLBaP(brM$aE4X1_ zQ}CZ6J|^+FwZk_s(Toys3j>ZQcn#vODtIFna7w`o(0_3a4j(s-*x2)H2tsyXz#kDe zJCwnGexdkxpl~ks*Yux3d;{WZI(k1;y-gwhjl#Q>L@7)Z;~zF_JD*lqvrk8rY~~q# zOTkT*bG)TR)2}G(L0rRi9&OR$S%o!oI`Dp(C8aUSymw{`=5cRp75`#veVc-t`FBYC z-XR%4f!!Ej3SfRRq9mF^|ECn(^nX^tP2tmP@>dbki4o_NfMTB98lro-zh2{+tqXqh zO#$B?#$YguZ8JMk%}=#z`a=pkk6FKw{;+kJ=C}K0@a0_I@xVLu8qYoua%^@;@B$CF zh4M@4q?MP?zung6_|*7b7oQDFZ6W$BUuo;2mAoa?<#^lp&LyOuKNAYkUcLy}=jAf^ z5YL7}wwTVhwr{7e^MmbObb&9z{|H}c?{ZW^-C`W);c&=t#w)Gw@n^yzI>{Hqwf_UI C)=C5b diff --git a/lab6/obj/mbox_c.o b/lab6/obj/mbox_c.o index 6b97e81693a01d5e3e7dcda345569f0e53804543..cb80b331560ab3b332c360f74436e009835710ba 100644 GIT binary patch literal 4576 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 VnVR`pPP#|uGIjHmWVp>c`4=5G*p&bP diff --git a/lab6/obj/memory_c.o b/lab6/obj/memory_c.o index cb06246b6dff3c474d90b01a0da2468578673819..e15e750fa041f3bfdc05a7fd6cf4b6452ebaef5f 100644 GIT binary patch delta 1843 zcmZ`)T}TvB6rQtg?W~zO{@upJH2*^US#@DoiDoyA5`1t$NWoA^r66Lp6?_O*!3QfJ zTu+2Tg+i2+56SdkP*mVUZ@J+^L6Ff~7$`&qNpxrDT(}JEJbV|v@0{} z1#>4|o5osAl?OU7;)$Evp3;Mull>iv&A-`iU7+GCtrDiqZ`v<66r&bqMO&Fl>e)SH zpFinTvT*cxAv`iquw7Tift*gWu;`2%FO)21t1ccI&hEOO`M~R%H2;-+a6uH4WyiVy zUfFN`J(qJ8P~2YI@+#Qp7Os^s_+laY%2mk6mhv5ad~ht*A03ZfS4PH$hn3h!v_Cp_ zyh>+-S}=QKuS za#*2=5b?rU@a@DOBy|8ITpg0sd`X?ase0Bi zO{(bg4MoflFZvYxEb-1hSMX~+i?2$x7l`Gy$Ra}x(x#B8D8X0V) z>K5ZvBa4@2*`sjYY#;Gri@P*2Kk;Jff)5h!+~O&RkIE-xJt3Q~QG}5Y+S3?yVYrFu z-445>WY>dQ6N~qy$sKTHl~UFa@uCO8Uryr_lX&?`PS|{|BBmwUx?#1YPfBU>jhsek zW-x=JJZ3gc%n~j)vG7AuMWa6Y0V`>;o)Itl3F2}y!)UXrucyg)i3#4z8=UepeIrfG zN2{00&!jqg*_N~LqW_rJx>MG(gM+;KfXBr1h@b(ha6Z>Cd=tJ1Pgbwe^+AH%EsL+y+Kl^Ef;j0uh^COIZiYcssS?2ISa+ZKQz lCfW>mib;+tYV8IzVT2>+Id)+(h1yvILKxwggNd`%{{cXy=^Ow6 delta 1975 zcmZ`)O=ufO6yCR0V#$?_6gwSn0+g&LtjY$eN%^}bf+axg&h*ohG zFumA;6heD({6wpRQ+y~mra4$_4?2W4p*f`BgI#>+AFTzw7!t4!ZByu>GrMofu%HFK zS-$Um?|bt`ySx1fG(UyqxIS(*UU{htzQ?Jq#bB$?`bX2WW&XQuZ*|2E_q_Y|Y`Ofw zrT2!07rHfk+Vd2W_Ak8;br`@q;bExR--ZA3>B%0P8hqi{AKhFiuAsa4XblAg4ePef z4s_qyL!qYR3ccD_1YxnBKHo14FK#g4>Q{7}P2 zk{R_bSA3KgIm~axcEz=dtt6YhOKcypYYwMr_dF_zZxVi-=MPh^SiUAa$MK^I-o)?- zTMYSKNT`k}>^a(?bZ-(jNx1A;;^zq$bz(}L3xo^zBMN@e#c_QkY+P1y`jnijxHH0x zio*6QY!zXYE#4wl_(m1BM!4*Mo47jRvVV!MDs|NUn}mC(ci+YF^U<*Ji2iQUYmdAh zV>HEZDCG}(&twrH-)2dpIEWe z7ilVD*%h4_NqU^UXEKKAG@G!9m8ZdnE^+~NDWEoU3pJB#Ahn$;u<0OMyqCSQ){)F6(ti9YpSHo)= z26ddxvczhKoK3>z*`BdeCndUj5AXzhc+P*R(^VSi<%j3}SY` zd>J5#X)70)q4y7ejI5kqc0OtNz>3rDN;<17oJkH>L P(F`n@ZiR2KVGaHV0Dk|z diff --git a/lab6/obj/mmu_c.o b/lab6/obj/mmu_c.o index ecccb7bf1d33c8437115cdadbf1915d52aafa3d5..68031435463ffdc5691f6ef08aabf8d508b57323 100644 GIT binary patch literal 8400 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 delta 1258 zcmZ`&Ur19?7{BLkH+NI#w$!_;*SYy;-RZTt2u4s%#RnHXDC{A`5Wz@lmeq=ag6%$e~X56t&y3|R$Hh?(aseIn!}7cA&j^SNY*uwUjw1yi$ah-d=# z4^N^~kSsrr9Hv?RLKF*D2uZatY5y*XL8eAY8rM-Z_8hu_X3v zZrJfs!%qf3WK8h-pt*VEvIRLHs$7A++G=$XJ6r-1wuuW5>c(*ee%2}|PcXEE*TfUE z5QiXmDGI_n90{Lb{8Pq%qFEbEbz6&cHB-Ma-eCL?%aCeR z(5m^c@vDe3aJOj~|ANm=L1cj397Jw7*&I|$XLCg?)Q_u1>0{5Ff((_$B~cfhZxrJJzFnw4191f;N9I`IZ($tbA?WU*R0)A9e*jJf3x zB2)mU9zhE*poftc(t1REDbd?s&~=mpIS@ffhz25ZuB=$y1+#%L`Uq=SnFF~kf^I_; zV+W)$_QM*+3m~`CJdCd(O>wO~BJQ|oX|JJ+yDm6uoWT{+Mns-qm$e^07-2c*F7Bj) Qvm-38`irYKkd+$$0VMU^?EnA( diff --git a/lab6/src/exception.c b/lab6/src/exception.c index 508c66b0b..1e6d0eec2 100644 --- a/lab6/src/exception.c +++ b/lab6/src/exception.c @@ -14,6 +14,7 @@ extern void end_thread(void); extern void ret_from_fork(void); extern Thread *task[]; extern void delay(int); +extern void update_pgd(uint64_t); void sync_exc_router(uint64_t esr_el1, uint64_t elr_el1, Trapframe *trapframe) { int ec = (esr_el1 >> 26) & 0b111111; @@ -133,8 +134,10 @@ void sys_exec(Trapframe *trapframe) { uint64_t new_program_pa = vir_to_phy(new_program_va); uint64_t user_stack_va = (uint64_t)malloc(USER_STACK_SIZE); uint64_t user_stack_pa = vir_to_phy(user_stack_va); - mappages(current_thread()->pgd, USER_PC, file_size, new_program_pa); // map user program's code - mappages(current_thread()->pgd, USER_STACK_LOW, USER_STACK_SIZE, user_stack_pa); // map user program's stack + mappages((pagetable *)current_thread()->pgd, USER_PC, file_size, new_program_pa); // map user program's code + mappages((pagetable *)current_thread()->pgd, USER_STACK_LOW, USER_STACK_SIZE, user_stack_pa); // map user program's stack + mappages((pagetable *)current_thread()->pgd, 0x3c000000, 0x3000000, 0x3c000000); // map user program's mbox + for (int i = 0; i < file_size; i++) { *((char *)new_program_va+i) = *(program_pos+i); } @@ -149,36 +152,35 @@ void sys_exec(Trapframe *trapframe) { } void sys_fork(Trapframe *trapframe) { + preempt_disable(); Thread *parent = current_thread(); /* - ret_from_fork 會把 child_trapframe load to register, + ret_from_fork 會把 child_trapframe load 到 register, 這樣跑 child thread 時就會用到 child_trapframe 更改的 sp */ int newpid = thread_create(ret_from_fork); Thread *child = task[newpid]; - printf("child: %x\n", child); + printf("child pid: %x\n", newpid); // copy kernel stack (including trapframe) uint64_t kstack_offset = (char *)parent->kernel_sp - (char *)trapframe; for (uint64_t i = 1; i <= kstack_offset; i++) { *((char *)(child->kernel_sp - i)) = *((char *)(parent->kernel_sp - i)); } - - // copy user stack - for (uint64_t i = 1; i <= ustack_offset; i++) { - *((char *)(child->user_sp - i)) = *((char *)(parent->user_sp - i)); - } - child->cpu_context.sp = child->kernel_sp - kstack_offset; + // copy all user program & stack + printf("Parent PGD: %x, User PGD: %x\n", parent->pgd, child->pgd); + if (parent->pgd != 0) copypages(phy_to_vir(parent->pgd), phy_to_vir(child->pgd), 0); + Trapframe *child_trapframe = (Trapframe *)child->cpu_context.sp; child_trapframe->sp_el0 = trapframe->sp_el0; - printf("child sp: %x\n", child_trapframe->sp_el0); trapframe->x[0] = child->pid; child_trapframe->x[0] = 0; + preempt_enable(); } void sys_exit(Trapframe *trapframe) { diff --git a/lab6/src/mbox.c b/lab6/src/mbox.c index 4d9dbce85..01a8df697 100644 --- a/lab6/src/mbox.c +++ b/lab6/src/mbox.c @@ -25,6 +25,7 @@ #include "gpio.h" #include "printf.h" +#include "mmu.h" /* mailbox message buffer */ //volatile unsigned int __attribute__((aligned(16))) mbox[36]; @@ -53,8 +54,10 @@ * Make a mailbox call. Returns 0 on failure, non-zero on success */ int mboxc_mbox_call(unsigned char ch, unsigned int *mbox) { + unsigned long ka_mbox = va2phy_user((unsigned long)mbox) + ((unsigned long)mbox&0xFFF); + printf("mbox kernel addr location: 0x%x\n", ka_mbox); /* 28 bits (MSB) for value, 4 bits for channel type */ - unsigned int r = (((unsigned int)((unsigned long)mbox) & ~0xF) | (ch & 0xF)); + unsigned int r = (((unsigned int)((unsigned long)ka_mbox) & ~0xF) | (ch & 0xF)); /* wait until we can write to the mailbox */ do { @@ -71,7 +74,8 @@ int mboxc_mbox_call(unsigned char ch, unsigned int *mbox) { /* is it a response to our message? */ if (r == *MBOX_READ) /* is it a valid successful response? */ - return mbox[1] == MBOX_RESPONSE; + return 1; + //return ((unsigned int *)phy_to_vir(ka_mbox))[1] == MBOX_RESPONSE; } return 0; } diff --git a/lab6/src/memory.c b/lab6/src/memory.c index b17566f2b..9a1b0de08 100644 --- a/lab6/src/memory.c +++ b/lab6/src/memory.c @@ -123,7 +123,7 @@ void *malloc(size_t size) { void *ptr = (void *)(MEMORY_BASE + allocate_page(heads, nodes, frame_array, needed_order, -1) * PAGE_SIZE); //print_freelists(); memzero(ptr, pow2(needed_order)*PAGE_SIZE); - printf("[Malloc] %x\n", ptr); + //printf("[Malloc] %x\n", ptr); return ptr; } else { diff --git a/lab6/src/mmu.c b/lab6/src/mmu.c index 6e4644ab4..98925979b 100644 --- a/lab6/src/mmu.c +++ b/lab6/src/mmu.c @@ -9,15 +9,15 @@ extern void memzero(void *, size_t); void mappages(pagetable *pg_table, uint64_t va, size_t size, uint64_t pa) { //user va 轉 pa int pages = (size+(PAGE_SIZE-1)) / PAGE_SIZE; for (int i = 0; i < pages; i++) { - printf("Page: %d ", i); + // printf("Page: %d ", i); pte *now_pte = walk(pg_table, va + PAGE_SIZE*i, 0); *now_pte = (pa+PAGE_SIZE*i) | PTE_INIT; - printf("PTE @:"); - uart_hex_long(now_pte); - printf("\n"); - printf("Insert:"); - uart_hex_long(*now_pte); - printf("\n"); + // printf("PTE @:"); + // uart_hex_long(now_pte); + // printf("\n"); + // printf("Insert:"); + // uart_hex_long(*now_pte); + // printf("\n"); } return; // walk() size/PAGE_SIZE次 @@ -26,34 +26,58 @@ void mappages(pagetable *pg_table, uint64_t va, size_t size, uint64_t pa) { //us pte *walk(pagetable *pg_table, uint64_t va, int alloc) { int shift, index; pg_table = (pagetable *)phy_to_vir((uint64_t)pg_table); - printf("Start:"); - uart_hex_long(pg_table); - printf("\n"); + // printf("Start:"); + // uart_hex_long(pg_table); + // printf("\n"); for (int level = 3; level > 0; level--) { //PGD, PUD, PMD shift = 12 + 9 * level; index = (va & (PD_MASK << shift)) >> shift; - printf("%d\n", index); + // printf("%d\n", index); if (pg_table[index] % 4 == 3) { // is entry pg_table = (pagetable *)to_pfn(phy_to_vir(pg_table[index])); - printf("PG_TABLE: "); - uart_hex_long(pg_table); - printf("\n"); + // printf("PG_TABLE: "); + // uart_hex_long(pg_table); + // printf("\n"); } else { pg_table[index] = (to_pfn(vir_to_phy((uint64_t)malloc(PAGE_SIZE))) | PD_TABLE); pg_table = (pagetable *)(to_pfn(phy_to_vir(pg_table[index]))); - printf("PG_TABLE: "); - uart_hex_long(pg_table); - printf("\n"); + // printf("PG_TABLE: "); + // uart_hex_long(pg_table); + // printf("\n"); } } // PTE shift = 12; index = (va & (PD_MASK << shift)) >> shift; - - printf("%d\n", index); return ((pte *)((uint64_t)pg_table + index*8)); } +void copypages(pagetable *parent, pagetable *child, int level) { + if (level == 3) { + for (int i = 0; i < 512; i++) { + if (phy_to_vir(parent[i])) { + pte *parent_page = (pte *)(phy_to_vir(to_pfn(parent[i]))); + child[i] = (vir_to_phy((uint64_t)malloc(PAGE_SIZE)) | PTE_INIT); + pte *child_page = (pte *)(phy_to_vir(to_pfn(child[i]))); + for (int s = 0; s < PAGE_SIZE; s++) { + ((char *)child_page)[s] = ((char *)parent_page)[s]; + } + } + } + return; + } + printf("level: %d\n", level); + for (int i = 0; i < 512; i++) { + if (parent[i]) { + pagetable *parent_next_level = (pagetable *)(phy_to_vir(to_pfn(parent[i]))); + child[i] = (vir_to_phy((uint64_t)malloc(PAGE_SIZE)) | PD_TABLE); + pagetable *child_next_level = (pagetable *)(phy_to_vir(to_pfn(child[i]))); + copypages(parent_next_level, child_next_level, level+1); + } + } +} + + uint64_t vir_to_phy(uint64_t vir) { return (vir & VA_MASK); } @@ -64,4 +88,16 @@ uint64_t phy_to_vir(uint64_t phy) { // for kernel address uint64_t to_pfn(uint64_t addr) { // to page frame return ((addr >> 12) << 12); +} + +unsigned long va2phy_user(unsigned long va) { // user + printf("translate va: 0x%x\n", va); + unsigned long pgd; + asm volatile("mrs %0, ttbr0_el1\n\t": "=r" (pgd) :: "memory"); + unsigned long pud = ((unsigned long*)(pgd+VA_START))[va>>PGD_SHIFT&(512-1)]&PAGE_MASK; + unsigned long pmd = ((unsigned long*)(pud+VA_START))[va>>PUD_SHIFT&(512-1)]&PAGE_MASK; + unsigned long pte = ((unsigned long*)(pmd+VA_START))[va>>PMD_SHIFT&(512-1)]&PAGE_MASK; + unsigned long phys = ((unsigned long*)(pte+VA_START))[va>>12&(512-1)]&PAGE_MASK; + printf("0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", pgd, pud, pmd, pte, phys); + return phys; } \ No newline at end of file diff --git a/lab6/src/sched.c b/lab6/src/sched.c index a6e6fad6e..b31e8291b 100644 --- a/lab6/src/sched.c +++ b/lab6/src/sched.c @@ -62,7 +62,7 @@ int thread_create(void *func) { p->kernel_sp = (ulong)malloc(PAGE_SIZE) + PAGE_SIZE - 16; p->user_sp = (ulong)malloc(PAGE_SIZE) + PAGE_SIZE - 16; p->pgd = vir_to_phy((uint64_t)malloc(PAGE_SIZE)); - uart_hex_long(p->pgd); + // uart_hex_long(p->pgd); p->cpu_context.sp = p->kernel_sp; // kernel space int pid = get_new_pid(); @@ -99,7 +99,7 @@ void _schedule() { //debug("now thread", current_thread()); //debug("next thread", task[next]); if (current_thread() != task[next]) { - //printf("[scheduler] next pid: %d\n", next); + printf("[scheduler] next pid: %d\n", next); Thread *prev = current_thread(); //current_thread = task[next]; update_pgd(task[next]->pgd); From 385ebcff28fb22b3f89c1cc90d3c9fce859b3cf3 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Fri, 3 Jun 2022 04:04:15 +0800 Subject: [PATCH 05/19] left ../ --- lab7/Makefile | 65 ++++++++ lab7/include/exception.h | 52 +++++++ lab7/include/freelist.h | 27 ++++ lab7/include/gpio.h | 45 ++++++ lab7/include/mbox.h | 48 ++++++ lab7/include/memory.h | 37 +++++ lab7/include/printf.h | 84 +++++++++++ lab7/include/sched.h | 60 ++++++++ lab7/include/shell.h | 2 + lab7/include/sys.h | 62 ++++++++ lab7/include/tmpfs.h | 29 ++++ lab7/include/typedef.h | 9 ++ lab7/include/uart.h | 36 +++++ lab7/include/utils.h | 18 +++ lab7/include/vfs.h | 70 +++++++++ lab7/initramfs.cpio | Bin 0 -> 404992 bytes lab7/kernel8.elf | Bin 0 -> 36864 bytes lab7/kernel8.img | Bin 0 -> 27296 bytes lab7/linker.ld | 45 ++++++ lab7/obj/exception_c.o | Bin 0 -> 9056 bytes lab7/obj/freelist_c.o | Bin 0 -> 3184 bytes lab7/obj/main_c.o | Bin 0 -> 4744 bytes lab7/obj/mbox_c.o | Bin 0 -> 1856 bytes lab7/obj/memory_c.o | Bin 0 -> 10296 bytes lab7/obj/printf_c.o | Bin 0 -> 5832 bytes lab7/obj/sched_c.o | Bin 0 -> 6576 bytes lab7/obj/shell_c.o | Bin 0 -> 5376 bytes lab7/obj/start_s.o | Bin 0 -> 8672 bytes lab7/obj/sys_s.o | Bin 0 -> 1312 bytes lab7/obj/tmpfs_c.o | Bin 0 -> 6000 bytes lab7/obj/uart_c.o | Bin 0 -> 4128 bytes lab7/obj/utils_c.o | Bin 0 -> 3824 bytes lab7/obj/vfs_c.o | Bin 0 -> 7744 bytes lab7/src/exception.c | 316 +++++++++++++++++++++++++++++++++++++++ lab7/src/freelist.c | 70 +++++++++ lab7/src/main.c | 99 ++++++++++++ lab7/src/mbox.c | 112 ++++++++++++++ lab7/src/memory.c | 241 +++++++++++++++++++++++++++++ lab7/src/printf.c | 228 ++++++++++++++++++++++++++++ lab7/src/sched.c | 156 +++++++++++++++++++ lab7/src/shell.c | 76 ++++++++++ lab7/src/start.S | 277 ++++++++++++++++++++++++++++++++++ lab7/src/sys.S | 92 ++++++++++++ lab7/src/tmpfs.c | 148 ++++++++++++++++++ lab7/src/uart.c | 220 +++++++++++++++++++++++++++ lab7/src/utils.c | 137 +++++++++++++++++ lab7/src/vfs.c | 221 +++++++++++++++++++++++++++ 47 files changed, 3082 insertions(+) create mode 100644 lab7/Makefile create mode 100644 lab7/include/exception.h create mode 100644 lab7/include/freelist.h create mode 100644 lab7/include/gpio.h create mode 100644 lab7/include/mbox.h create mode 100644 lab7/include/memory.h create mode 100644 lab7/include/printf.h create mode 100644 lab7/include/sched.h create mode 100644 lab7/include/shell.h create mode 100644 lab7/include/sys.h create mode 100644 lab7/include/tmpfs.h create mode 100644 lab7/include/typedef.h create mode 100644 lab7/include/uart.h create mode 100644 lab7/include/utils.h create mode 100644 lab7/include/vfs.h create mode 100644 lab7/initramfs.cpio create mode 100644 lab7/kernel8.elf create mode 100644 lab7/kernel8.img create mode 100644 lab7/linker.ld create mode 100644 lab7/obj/exception_c.o create mode 100644 lab7/obj/freelist_c.o create mode 100644 lab7/obj/main_c.o create mode 100644 lab7/obj/mbox_c.o create mode 100644 lab7/obj/memory_c.o create mode 100644 lab7/obj/printf_c.o create mode 100644 lab7/obj/sched_c.o create mode 100644 lab7/obj/shell_c.o create mode 100644 lab7/obj/start_s.o create mode 100644 lab7/obj/sys_s.o create mode 100644 lab7/obj/tmpfs_c.o create mode 100644 lab7/obj/uart_c.o create mode 100644 lab7/obj/utils_c.o create mode 100644 lab7/obj/vfs_c.o create mode 100644 lab7/src/exception.c create mode 100644 lab7/src/freelist.c create mode 100644 lab7/src/main.c create mode 100644 lab7/src/mbox.c create mode 100644 lab7/src/memory.c create mode 100644 lab7/src/printf.c create mode 100644 lab7/src/sched.c create mode 100644 lab7/src/shell.c create mode 100644 lab7/src/start.S create mode 100644 lab7/src/sys.S create mode 100644 lab7/src/tmpfs.c create mode 100644 lab7/src/uart.c create mode 100644 lab7/src/utils.c create mode 100644 lab7/src/vfs.c diff --git a/lab7/Makefile b/lab7/Makefile new file mode 100644 index 000000000..4a9505873 --- /dev/null +++ b/lab7/Makefile @@ -0,0 +1,65 @@ +# +# Copyright (C) 2018 bzt (bztsrc@github) +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, copy, +# modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +# + +ARMGNU ?= aarch64-linux-gnu + +SRC_DIR = src +BUILD_DIR = obj + +C_FILES = $(wildcard $(SRC_DIR)/*.c) +ASM_FILES = $(wildcard $(SRC_DIR)/*.S) +OBJ_FILES = $(C_FILES:$(SRC_DIR)/%.c=$(BUILD_DIR)/%_c.o) +OBJ_FILES += $(ASM_FILES:$(SRC_DIR)/%.S=$(BUILD_DIR)/%_s.o) +DEP_FILES = $(OBJ_FILES:%.o=%.d) +-include $(DEP_FILES) + +CFLAGS = -Wall -ffreestanding -nostdlib -nostartfiles -Iinclude -mgeneral-regs-only +ASMFLAGS = -Iinclude + +all: clean kernel8.img + +$(BUILD_DIR)/%_c.o: $(SRC_DIR)/%.c + $(ARMGNU)-gcc $(CFLAGS) -c $< -o $@ + +$(BUILD_DIR)/%_s.o: $(SRC_DIR)/%.S + $(ARMGNU)-gcc $(ASMFLAGS) -c $< -o $@ + +kernel8.img: $(OBJ_FILES) + aarch64-linux-gnu-ld -nostdlib -nostartfiles $(OBJ_FILES) -T linker.ld -o kernel8.elf + aarch64-linux-gnu-objcopy -O binary kernel8.elf kernel8.img + +clean: + rm kernel8.elf *.o >/dev/null 2>/dev/null || true + rm -rf $(BUILD_DIR)/* || true + +run: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none + +cpio: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -initrd initramfs.cpio + +debug: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -S -s + diff --git a/lab7/include/exception.h b/lab7/include/exception.h new file mode 100644 index 000000000..d614f7434 --- /dev/null +++ b/lab7/include/exception.h @@ -0,0 +1,52 @@ +#ifndef _EXCEPTION_H +#define _EXCEPTION_H + +#include "typedef.h" + +// save_all, load_all 的 register 用 struct 包起來,方便操作 +typedef struct Trapframe { + uint64_t x[31]; // general register from x0 ~ x30 + uint64_t sp_el0; + uint64_t elr_el1; + uint64_t spsr_el1; +} Trapframe; + +typedef struct cpio_newc_header { + char c_magic[6]; + char c_ino[8]; + char c_mode[8]; + char c_uid[8]; + char c_gid[8]; + char c_nlink[8]; + char c_mtime[8]; + char c_filesize[8]; + char c_devmajor[8]; + char c_devminor[8]; + char c_rdevmajor[8]; + char c_rdevminor[8]; + char c_namesize[8]; + char c_check[8]; +} cpio_newc_header; + +extern void enable_irq(); +extern void disable_irq(); +void sync_exception_router(uint64_t esr_el1, uint64_t elr_el1, Trapframe *trapframe); +void syscall(uint64_t syscall_num, Trapframe* trapframe); +void sys_getpid(Trapframe *trapframe); +void sys_uart_read(Trapframe *trapframe); +void sys_uart_write(Trapframe *trapframe); +void sys_exec(Trapframe *trapframe); +void sys_fork(Trapframe *trapframe); +void sys_exit(Trapframe *trapframe); +void sys_mbox_call(Trapframe *trapframe); +void sys_kill(Trapframe *trapframe); +void sys_open(Trapframe *trapframe); +void sys_close(Trapframe *trapframe); +void sys_write(Trapframe *trapframe); +void sys_read(Trapframe *trapframe); +void sys_mkdir(Trapframe *trapframe); +void sys_mount(Trapframe *trapframe); +void sys_chdir(Trapframe *trapframe); + + +#endif /* _EXCEPTION_H */ \ No newline at end of file diff --git a/lab7/include/freelist.h b/lab7/include/freelist.h new file mode 100644 index 000000000..665a1fd79 --- /dev/null +++ b/lab7/include/freelist.h @@ -0,0 +1,27 @@ +#ifndef FREELISTS_H +#define FREELISTS_H + +#define BELONG_LEFT -1 +#define ALLOCATED -2 +#define RESERVED -3 + +struct Node { + struct Node *next; + struct Node *prev; + int index; +}; + +struct Freelist { + struct Node *head; +}; + +typedef struct Node Node; +typedef struct Freelist Freelist; + +void freelist_init(Freelist *, Node *); +void freelist_push(Freelist *, Node *, int); +void freelist_remove(Freelist *, Node *, int); +void freelist_print(int, Freelist *); +void print_freelists(); + +#endif diff --git a/lab7/include/gpio.h b/lab7/include/gpio.h new file mode 100644 index 000000000..52fa671d0 --- /dev/null +++ b/lab7/include/gpio.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#define MMIO_BASE 0x3F000000 + +#define GPFSEL0 ((volatile unsigned int*)(MMIO_BASE+0x00200000)) +#define GPFSEL1 ((volatile unsigned int*)(MMIO_BASE+0x00200004)) +#define GPFSEL2 ((volatile unsigned int*)(MMIO_BASE+0x00200008)) +#define GPFSEL3 ((volatile unsigned int*)(MMIO_BASE+0x0020000C)) +#define GPFSEL4 ((volatile unsigned int*)(MMIO_BASE+0x00200010)) +#define GPFSEL5 ((volatile unsigned int*)(MMIO_BASE+0x00200014)) +#define GPSET0 ((volatile unsigned int*)(MMIO_BASE+0x0020001C)) +#define GPSET1 ((volatile unsigned int*)(MMIO_BASE+0x00200020)) +#define GPCLR0 ((volatile unsigned int*)(MMIO_BASE+0x00200028)) +#define GPLEV0 ((volatile unsigned int*)(MMIO_BASE+0x00200034)) +#define GPLEV1 ((volatile unsigned int*)(MMIO_BASE+0x00200038)) +#define GPEDS0 ((volatile unsigned int*)(MMIO_BASE+0x00200040)) +#define GPEDS1 ((volatile unsigned int*)(MMIO_BASE+0x00200044)) +#define GPHEN0 ((volatile unsigned int*)(MMIO_BASE+0x00200064)) +#define GPHEN1 ((volatile unsigned int*)(MMIO_BASE+0x00200068)) +#define GPPUD ((volatile unsigned int*)(MMIO_BASE+0x00200094)) +#define GPPUDCLK0 ((volatile unsigned int*)(MMIO_BASE+0x00200098)) +#define GPPUDCLK1 ((volatile unsigned int*)(MMIO_BASE+0x0020009C)) diff --git a/lab7/include/mbox.h b/lab7/include/mbox.h new file mode 100644 index 000000000..87bf5fb8c --- /dev/null +++ b/lab7/include/mbox.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +/* a properly aligned buffer */ +//extern volatile unsigned int mbox[36]; + +#define MBOX_REQUEST 0 + +/* channels */ +#define MBOX_CH_POWER 0 +#define MBOX_CH_FB 1 +#define MBOX_CH_VUART 2 +#define MBOX_CH_VCHIQ 3 +#define MBOX_CH_LEDS 4 +#define MBOX_CH_BTNS 5 +#define MBOX_CH_TOUCH 6 +#define MBOX_CH_COUNT 7 +#define MBOX_CH_PROP 8 + +/* tags */ +#define MBOX_TAG_GETSERIAL 0x10004 +#define MBOX_TAG_LAST 0 + +int mboxc_mbox_call(unsigned char ch, unsigned int *mbox); +int get_board_revision(); +int get_arm_memory(); diff --git a/lab7/include/memory.h b/lab7/include/memory.h new file mode 100644 index 000000000..1d327fef6 --- /dev/null +++ b/lab7/include/memory.h @@ -0,0 +1,37 @@ +#ifndef MEMORY_H +#define MEMORY_H + +#define MEMORY_BASE 0x0 +#define CPIO_SIZE 247296 +#define PAGE_SIZE 0x1000 // 4KB +#define MAX_PAGES 0x40000 // total 0x40000000 +#define LOG2_MAX_PAGES 18 +#define LOG2_MAX_PAGES_PLUS_1 19 +#define NULL 0 +#include "freelist.h" +#include "typedef.h" + +struct block_meta { + int size; + short free; + short pagetail; + struct block_meta *next; +}; + +struct blocklist { + struct block_meta *head; +}; + +typedef struct block_meta block_meta; +typedef struct blocklist blocklist; +#define BLOCK_SIZE (sizeof(block_meta)) + +void memory_init(void); +int find_allocate_list(Freelist *, int); +int allocate_page(Freelist *, Node *, int *, int, int); +void free_page(Freelist *, Node *, int *, int); +void *malloc(size_t); +void free(void *); +void reserve_memory(ulong start, ulong end); +void print_memory(); +#endif diff --git a/lab7/include/printf.h b/lab7/include/printf.h new file mode 100644 index 000000000..7b53b8421 --- /dev/null +++ b/lab7/include/printf.h @@ -0,0 +1,84 @@ +/* +File: printf.h +Copyright (C) 2004 Kustaa Nyholm +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +This library is really just two files: 'printf.h' and 'printf.c'. +They provide a simple and small (+200 loc) printf functionality to +be used in embedded systems. +I've found them so usefull in debugging that I do not bother with a +debugger at all. +They are distributed in source form, so to use them, just compile them +into your project. +Two printf variants are provided: printf and sprintf. +The formats supported by this implementation are: 'd' 'u' 'c' 's' 'x' 'X'. +Zero padding and field width are also supported. +If the library is compiled with 'PRINTF_SUPPORT_LONG' defined then the +long specifier is also +supported. Note that this will pull in some long math routines (pun intended!) +and thus make your executable noticably longer. +The memory foot print of course depends on the target cpu, compiler and +compiler options, but a rough guestimate (based on a H8S target) is about +1.4 kB for code and some twenty 'int's and 'char's, say 60 bytes of stack space. +Not too bad. Your milage may vary. By hacking the source code you can +get rid of some hunred bytes, I'm sure, but personally I feel the balance of +functionality and flexibility versus code size is close to optimal for +many embedded systems. +To use the printf you need to supply your own character output function, +something like : + void putc ( void* p, char c) + { + while (!SERIAL_PORT_EMPTY) ; + SERIAL_PORT_TX_REGISTER = c; + } +Before you can call printf you need to initialize it to use your +character output function with something like: + init_printf(NULL,putc); +Notice the 'NULL' in 'init_printf' and the parameter 'void* p' in 'putc', +the NULL (or any pointer) you pass into the 'init_printf' will eventually be +passed to your 'putc' routine. This allows you to pass some storage space (or +anything really) to the character output function, if necessary. +This is not often needed but it was implemented like that because it made +implementing the sprintf function so neat (look at the source code). +The code is re-entrant, except for the 'init_printf' function, so it +is safe to call it from interupts too, although this may result in mixed output. +If you rely on re-entrancy, take care that your 'putc' function is re-entrant! +The printf and sprintf functions are actually macros that translate to +'tfp_printf' and 'tfp_sprintf'. This makes it possible +to use them along with 'stdio.h' printf's in a single source file. +You just need to undef the names before you include the 'stdio.h'. +Note that these are not function like macros, so if you have variables +or struct members with these names, things will explode in your face. +Without variadic macros this is the best we can do to wrap these +fucnction. If it is a problem just give up the macros and use the +functions directly or rename them. +For further details see source code. +regs Kusti, 23.10.2004 +*/ + + +#ifndef __TFP_PRINTF__ +#define __TFP_PRINTF__ + +#include + +void init_printf(void* putp,void (*putf) (void*,char)); + +void tfp_printf(char *fmt, ...); +void tfp_sprintf(char* s,char *fmt, ...); + +void tfp_format(void* putp,void (*putf) (void*,char),char *fmt, va_list va); + +#define printf tfp_printf +#define sprintf tfp_sprintf + +#endif \ No newline at end of file diff --git a/lab7/include/sched.h b/lab7/include/sched.h new file mode 100644 index 000000000..eac3e053d --- /dev/null +++ b/lab7/include/sched.h @@ -0,0 +1,60 @@ +#ifndef _SCHED_H +#define _SCHED_H +#include "typedef.h" +#include "vfs.h" + +struct cpu_context { + unsigned long x19; + unsigned long x20; + unsigned long x21; + unsigned long x22; + unsigned long x23; + unsigned long x24; + unsigned long x25; + unsigned long x26; + unsigned long x27; + unsigned long x28; + unsigned long fp; + unsigned long lr; + unsigned long sp; +}; + +struct Thread { + struct cpu_context cpu_context; + int state; + int counter; + int priority; + int preempt_count; + int pid; + int status; + uint64_t kernel_sp; + uint64_t user_sp; + struct vnode *pwd; + struct file *fd_table[MAX_FD_NUM]; +}; + +typedef struct Thread Thread; +#define INIT_TASK \ +/*cpu_context*/ { {0,0,0,0,0,0,0,0,0,0,0,0,0}, \ +/* state etc */ 0,0,1,0,0,0,0x80000,0,0,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} \ +} +#define NR_TASKS 64 +#define THREAD_SIZE 4096 + +#define TASK_RUNNING 0 +#define TASK_ZOMBIE 1 + +Thread *current_thread(); +int thread_create(void *func); +void preempt_disable(void); +void preempt_enable(void); +void _schedule(); +void schedule(); + +void idle(); +void timer_tick(); +void kill_zombies(); +void task_init(void); + + +#endif //_SCHED_H \ No newline at end of file diff --git a/lab7/include/shell.h b/lab7/include/shell.h new file mode 100644 index 000000000..b89f34fb4 --- /dev/null +++ b/lab7/include/shell.h @@ -0,0 +1,2 @@ +void shell(void); +void shell_input(char *input); \ No newline at end of file diff --git a/lab7/include/sys.h b/lab7/include/sys.h new file mode 100644 index 000000000..eaad7f615 --- /dev/null +++ b/lab7/include/sys.h @@ -0,0 +1,62 @@ +#ifndef _SYS_H +#define _SYS_H + +#define SYS_GETPID 0 +#define SYS_UART_READ 1 +#define SYS_UART_WRITE 2 +#define SYS_EXEC 3 +#define SYS_FORK 4 +#define SYS_EXIT 5 +#define SYS_MBOX_CALL 6 +#define SYS_KILL 7 + +#define SYS_OPEN 11 +#define SYS_CLOSE 12 +#define SYS_WRITE 13 +#define SYS_READ 14 +#define SYS_MKDIR 15 +#define SYS_MOUNT 16 +#define SYS_CHDIR 17 + +#endif + +#ifndef __ASSEMBLY__ + +#include "typedef.h" + +/* Function in sys.S */ +extern int getpid(); +extern size_t uartread(char buf[], size_t size); +extern size_t uartwrite(const char buf[], size_t size); +extern int exec(const char *name, char *const argv[]); +extern int fork(); +extern void exit(int status); +extern int mbox_call(unsigned char ch, unsigned int *mbox); +extern void kill(int pid); + +// syscall number : 11 +extern int open(const char *pathname, int flags); + +// syscall number : 12 +extern int close(int fd); + +// syscall number : 13 +// remember to return read size or error code +extern long write(int fd, const void *buf, unsigned long count); + +// syscall number : 14 +// remember to return read size or error code +extern long read(int fd, void *buf, unsigned long count); + +// syscall number : 15 +// you can ignore mode, since there is no access control +extern int mkdir(const char *pathname, unsigned mode); + +// syscall number : 16 +// you can ignore arguments other than target (where to mount) and filesystem (fs name) +extern int mount(const char *src, const char *target, const char *filesystem, unsigned long flags, const void *data); + +// syscall number : 17 +extern int chdir(const char *path); + +#endif \ No newline at end of file diff --git a/lab7/include/tmpfs.h b/lab7/include/tmpfs.h new file mode 100644 index 000000000..d6211494d --- /dev/null +++ b/lab7/include/tmpfs.h @@ -0,0 +1,29 @@ +#ifndef _TMPFS_H +#define _TMPFS_H + +#include "vfs.h" + +#define EOF (-1) + +struct tmpfs_internal { + int type; + char name[MAX_COMPONENT_NAME_LEN]; + struct tmpfs_internal *parent; + struct tmpfs_internal *child[MAX_ENTRIES]; + struct vnode *vnode; + int size; + void *data; +}; + +extern struct mount *rootfs; + +int tmpfs_register(); +int tmpfs_setup_mount(struct filesystem* fs, struct mount* mount); +struct vnode* tmpfs_create_vnode(struct tmpfs_internal* tmpfs_node); + +int tmpfs_lookup(struct vnode* dir, struct vnode** target, const char* component_name); +int tmpfs_create(struct vnode* dir, struct vnode** target, const char* component_name); +int tmpfs_write(struct file* file, const void* buf, size_t len); +int tmpfs_read(struct file* file, void* buf, size_t len); +int tmpfs_mkdir(struct vnode* dir, struct vnode** target, const char* component_name); +#endif \ No newline at end of file diff --git a/lab7/include/typedef.h b/lab7/include/typedef.h new file mode 100644 index 000000000..ff8d6ad69 --- /dev/null +++ b/lab7/include/typedef.h @@ -0,0 +1,9 @@ +#ifndef _TYPEDEF_H +#define _TYPEDEF_H + +#define uint unsigned int +#define ulong unsigned long +#define uint64_t unsigned long +#define size_t unsigned long +//#define DEBUG 0 +#endif /* _TYPEDEF_H */ \ No newline at end of file diff --git a/lab7/include/uart.h b/lab7/include/uart.h new file mode 100644 index 000000000..7217f4bba --- /dev/null +++ b/lab7/include/uart.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +void uart_init(); +void uart_send(unsigned int c); +char uart_getc(); +char uart_getc_pure(); +void uart_int(int i); +void uart_uint(unsigned int i); +void uart_ulong(unsigned long i); +void uart_puts(char *s); +void uart_hex(unsigned int d); +void uart_hex_long(unsigned long d); +void putc(void *p, char c); diff --git a/lab7/include/utils.h b/lab7/include/utils.h new file mode 100644 index 000000000..5bfe11bd2 --- /dev/null +++ b/lab7/include/utils.h @@ -0,0 +1,18 @@ +#ifndef UTILS_H +#define UTILS_H + +#define DEBUG 0 +int strcmp(const char *s1, const char *s2); +void strcpy(char *dest, const char *src); +int hex_to_int(char *p, int size); +void *get_user_program_address(); +int log2(int x); +int pow2(int x); +unsigned long cstr_to_ulong(char *s); +void* simple_malloc(void **now, int size); +void debug(char *, int); +unsigned long get_timestamp(); +void assert(int e); + +int strlen(char *str); +#endif \ No newline at end of file diff --git a/lab7/include/vfs.h b/lab7/include/vfs.h new file mode 100644 index 000000000..f0aafcd06 --- /dev/null +++ b/lab7/include/vfs.h @@ -0,0 +1,70 @@ +#ifndef _VFS_H +#define _VFS_H + +#include "typedef.h" + +#define O_CREAT 00000100 + +#define REGULAR_FILE 0 +#define DIRECTORY 1 + +#define MAX_PATHNAME_LEN 256 +#define MAX_FILESIZE 4096 +#define MAX_COMPONENT_NAME_LEN 16 // 15+'\0' +#define MAX_ENTRIES 16 +#define MAX_FD_NUM 16 + +struct mount { + struct vnode *root; + struct filesystem *fs; +}; + +struct vnode { + struct mount *mount; + struct vnode_operations *v_ops; + struct file_operations *f_ops; + void *internal; +}; + +// file handle +struct file { + struct vnode *vnode; + size_t f_pos; // RW position of this file handle + struct file_operations *f_ops; + int flags; +}; + +struct filesystem { + const char *name; + int (*setup_mount)(struct filesystem *fs, struct mount *mount); +}; + +struct file_operations { + int (*write)(struct file *file, const void *buf, size_t len); + int (*read)(struct file *file, void *buf, size_t len); + int (*open)(struct vnode *file_node, struct file **target); + int (*close)(struct file *file); + //long lseek64(struct file *file, long offset, int whence); +}; + +struct vnode_operations { + int (*lookup)(struct vnode *dir_node, struct vnode **target, + const char *component_name); + int (*create)(struct vnode *dir_node, struct vnode **target, + const char *component_name); + int (*mkdir)(struct vnode *dir_node, struct vnode **target, + const char *component_name); +}; + +extern struct mount *rootfs; +void rootfs_init(void); +int register_filesystem(struct filesystem *fs); + +int vfs_open(const char *pathname, int flags, struct file **target); +int vfs_close(struct file *file); +int vfs_write(struct file *file, const void *buf, size_t len); +int vfs_read(struct file *file, void *buf, size_t len); +int vfs_mkdir(const char *pathname); +int vfs_mount(const char *target, const char *filesystem); +int vfs_lookup(const char *pathname, struct vnode **target); +#endif diff --git a/lab7/initramfs.cpio b/lab7/initramfs.cpio new file mode 100644 index 0000000000000000000000000000000000000000..7fc95c0a66c0f7ba35dd7b405710756a454f2680 GIT binary patch literal 404992 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 literal 0 HcmV?d00001 diff --git a/lab7/kernel8.elf b/lab7/kernel8.elf new file mode 100644 index 0000000000000000000000000000000000000000..44685fa7dcca51c1836bfaa0efccfee9d77202bd GIT binary patch literal 36864 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 XZwMH!$BbDe?aTC5Zh{ literal 0 HcmV?d00001 diff --git a/lab7/linker.ld b/lab7/linker.ld new file mode 100644 index 000000000..58657923b --- /dev/null +++ b/lab7/linker.ld @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +SECTIONS +{ + . = 0x80000; + .text : { KEEP(*(.text.boot)) *(.text .text.* .gnu.linkonce.t*) } + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r*) } + PROVIDE(_data = .); + .data : { *(.data .data.* .gnu.linkonce.d*) } + .bss (NOLOAD) : { + . = ALIGN(16); + __bss_start = .; + *(.bss .bss.*) + *(COMMON) + __bss_end = .; + } + . = ALIGN(16); + _end = .; + + /DISCARD/ : { *(.comment) *(.gnu*) *(.note*) *(.eh_frame*) } +} +__bss_size = (__bss_end - __bss_start)>>3; diff --git a/lab7/obj/exception_c.o b/lab7/obj/exception_c.o new file mode 100644 index 0000000000000000000000000000000000000000..5af9564477a966d28497c7824c89951fddc353ce GIT binary patch literal 9056 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 MB~ir=hVI7y0~KGlga7~l literal 0 HcmV?d00001 diff --git a/lab7/obj/main_c.o b/lab7/obj/main_c.o new file mode 100644 index 0000000000000000000000000000000000000000..597262439fab0e8e596826382aeb7a24092890b9 GIT binary patch literal 4744 zcmb`KU2GIp6vxkYi>DVvs%2*ig$5K7_)X^N6SvYqbEvKw}HwllM) zl?0mj;)5oI^nnKp`UvL0WA7*|<-{8Dio%^ii_^kux{4ep?xtqx5;>(t3(imuk6{M?c znyvSzxdveM{p12e?+gdAGp@)($%}GKbi;UYp*8}z2Gsu~#lSTaW3j}wItQ_^uXYKl z%c=j;R2A+X{eBMnjoj#$V*ZzKzRH>g)Ta5P57iTEVf>Z9DGtos#I@D;fc9$P$knsq zUVSb0s+NFi7seAliAEo|c48P-h4T{m;usMV{Q|5f`e1w`#w6`f|C=THZ?Td9xA#MRii2{1BWtF0kz*ch=rzuze5GsgN%2TB2C^RDL`>0G{$A-)Ye`i*qS4=ZKg#mYp#;gt=lbbx24 zol@pMIEW|!#W80BwL=kPWy`fozLB$Cn-jvgA`Ow+NY1sbj1gv3&laF#$SxEdBkMXv zW7zV_W47x~V&?0@>A-p~4CqaIX{%63=8J~_cJJ7+&DgMStWxqT#@6KK!KIHKvX7#Is#l~SgFic><_XHl5<<^ z53)`8@E&8eZuBE;#&<^WJrVr12tE?Q@pLwgJC2;@bwh5!D7MKe_%zG&C~_LVrG-Yx z^MvKw_%s{;UIaf8!B0o7s0w=Z_Kmw+Q}w1iur(p=jkx$u#s$Kwk#Z zQ@8zA6xc*XfA>m*LymZdaR8WE;{aH*y%cs zpY_7JZ+VBqTH0}KnX=4O$YGM{P}s9e8Srv=YhrRX%4aYxz-D~NdhvYGZ;0&$Sy_c# z{k55rKcaE^eUOok@<|1B-pPoo`&tfhL)>Y}IWFI~^wK2bxXe$6xFPOYg{yHdD_ouL zEy?w`w24f9%y^Cx5dp|A;t`VrvHh| z|1V9S`8`EP)o+*gC#}D_&YcQ>RBBUUDxA+I@tu-Ck2;SLkTxXw7LD&!bROrySdJ*X zSK<2=PTwJH2NnJVLo7!Xj^E>T%P73FP62WX$N#g`%~!ZlrvUFt&gbWf?3pU#H~rp~AZr{*~mM=O40fR&vgh`DI1tDMjas!k<<+@5M6Q zUpYkd@_oykzf1U@WX|tx7N8Q!L^qHzZ4rZzp%Zx^JWBTj|3%fZXg{D(hNBdNuqnW}pf#!IF0f37hl>?S{HI z*lrbc@eiGKV&)tDP*I*@*(p&IQEY3jrOt^XkU zlBPCIV1IsJ;1FS)Key?7l>7%6$a1w@C_X>j&G~crB6e_{$53hN3oSeKv2P$JrsvQ8 z)6$O%J^x|sXtsY-^3ooaj?wHJSgY+!*?Q2i;q`KOGZ&?-0R&9QY?S V6w~KVcYibgK;~~LzEsuy{{fZNA>#l5 literal 0 HcmV?d00001 diff --git a/lab7/obj/mbox_c.o b/lab7/obj/mbox_c.o new file mode 100644 index 0000000000000000000000000000000000000000..95b25e244b6af9bfb91ea3f99427fc9f2bd4d07e GIT binary patch literal 1856 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

tSEtnkNOH z=i#RW=lC~R*UaCG3ZJj=7I~F${DH`p2=4eD-X^%u-=Xj?D*kSTYrFem@FRjde_Y); zF1Yi@;jbtjz1}f}e@Xd+?`hN6|9J}EAh@&JCNloO;^yo+{Bgyj?G_ZS<8VOXIu5T0 z?(D9$=IDgr&aT5>S3KJ8X@%?cu9kb=@plRTTEQK^!#f1`_jj+twg1Os@bfWvha@rc z>-cOE-1+J1_~U{*KOO#r;?Z&FR=Di@SU{D7NPd?()Im3j}8#{614|f#81pn+5mdzeMTl zIJYT%jjvGpI?neieT{Droc(Mpdx`H@#iQ@9g5s&b<@>|M=Y((#3-03M@V$bw-9Xvh zr|^Xef5GEFDY63|zrznI9?gGT;X1EQ3hwXADZ%}Hc}wZ*_@7q#8b71-b^OmMeT`od zoa3X<#m5TQ{@2NO3F~XTEe2mLxWC@Dg8S>;p!D^+HYt6LKcV#Xy1JCU#`^?k|8>3E zr*IvI^NL^RA^!gW)BN*(S#X!1rzL+r7To2h!>>ZC zV zc%1)7JRXN1kKsAt@i_lq_jnxsMhuTTo71o!d4)Iob-&#u#3$zW*aK-<^9$;rqW4f@=GBMlOpnnaKOcbKQKmf9#KMo2ML>eeaTu;p>c3$)C@! idH&u3qO0=b+^0NH&0jzN=2vb0!Dc%ttLAdopZ_02Dkjwc literal 0 HcmV?d00001 diff --git a/lab7/obj/printf_c.o b/lab7/obj/printf_c.o new file mode 100644 index 0000000000000000000000000000000000000000..6f104b6056a4549a3dee2646fad6759e757f26a8 GIT binary patch literal 5832 zcmcIoYiwLc6+ULsF;R*m0z=ZH4c~f<(k3vDrugBJ6cy%O>$- z?R67yAS=NS9zlv}r9iQ08y$+ecfGe`Vjn}%CC#GUA{99 z@6E(%B1lGB&&)UHea@V@$?4Dcd?8?2q=!Y%PxhJ_-qSh1utj=RWCjkKV|)#$oh-Wr)5?xH4B;BootvWl_N^HTjcr-uR$m9fWliT zb*F`OgTx1zW?iN)$hy~O`U02<`y6C!+DP@eO2^wAq&fDBC{RtnB1AD4`Y1>nT==SW zwEU-(a6u1!v2eux2Vyg~WcR;ToPGXc(WW_JcQtt~`~l5}ZEOeDu1&%xx7zV6=*ofS z@rq0z@(|$2h;efc zco)&J4-o(DoGafM$KS=CbAb3a^NbvXkb`|L>%`t=x&LbpkbBO}t;~USqa3i^oCEm9 zxY95{o^5*vel$6rLtU@&Iqq6-4ltyE;aoR>FYJ_GuYoO^gbV5QtTIWMLX5p! zwYwG$jbh-P{Z(&0L`B|Bb$MQC{p+}?k9j^m9 zdIh%J?ifJlq6-^DZP zZ{s+uARc+!YO@09MRsuUrDEw^%Wa4UY{=fE4Q+uN#Ozl%|J-e`5qBiZu@SwCTfd|K#n8)w?hb|JFgL*+a!UbiKZb9$>v%ey^DJ3i^9-_K)&g zir;a3=OORtw{#Xi+yVKXt?u!C$L|~Smfzps$@drUQ*Iaf{e$GKbdgu+Chzhd^4{G? z-h2D;zI`_^=WbT>7M{_Iw_#qFsdv9d*-}4cwH~fVy{^DIkGCE@du|};Ttxj}90?vr!M6f@yA0png>Ub{H@92)#IxV0in321XM16V{eu1IaqKVbnA1MEIJ1!Vzpj37 zy(0Vp9nqfd?gt`U4-U?Zr)MIu=+0>S{T(x6*YTYl?a}s~(T;m1F39oiBZl>@J_?@v zlohH8<3pbaeNBv3D5iLAdtgs3%A2TN!gQGDcx_}pxL_ZA`>k5uGT#ASVBk%ae0wF| zh(PJOeE1#|Bg22=wRK;IMAmnn_ZUy{pLne^U$syfMj5w~twGzx8+MV4H(%E5>K}4|Mk^-5V8tUgGDi`NoBYVJV#X9#ZE! z<$2vc#g|a{FC>1}ny+8jFrmMzLHe+?#t}XpltAOq#>ra4h9q;W2VnW|Dn;-K zF<(pnNky;e^!#Z-f2}=Rfd_ncin;-Iufp|S)D5tx!ZS*gs25;u3V#wGxjZy|C)O-K zs9etQA;vEJ82_HaMV$b9P~q*$H5YpxyYXZC3-|{G50N{$L^RPkjUnSxDeA;H0)3?k ziM>r+Y*&xH*w#aDojMZr2<*!WU*-g1h#JIz!YT+|pJOiqoC zr-!3QXgYm#VkX@`Ig=iy)}y}dB(>r+( z8cU{WbbJ(IgjfOlmeXoY^t!UU0eSRS(VGgt+rZy9=yhHF%b?fz0p+KbuknP!wS0{q zHt0DtJO&JUiQ+*}cnEghtwGE^HFCpxxfFH198fsx_2Y*WZpzuHWL7A8wOy?{jqCf7 zFz7Sj<8fS0r0MnjIAh@Yeq1nceLr3{aD6`t2CnP0O6k{nb)7~GT-T{%;5u%H3|!YQ zMW??xmQD_0PEW~sM6afXjwhq(p_6Hf9!;i`6djzNrs$E0v9Y0XVB-_%q3E739lU=! zojh`kqJn&Aq{zOi+K+~_#o zfi3INb*$gt&nVpN^uIOqN@-GtUh{k(ek{}Ee^&A9_n&EbX#H|W)PV)trQdyxYkrpR zA1cj)hw%sS)0m&GaFh1$SN!TZSQYWU;-55xoA!SZ9Nd?jRZh9sTQBE`;^+8tH`n|+ z{(NleX3j%+>&2`NxqWf}F!@=o8GGh?S_S@L-uQ;$4sn^R#Xq9{-}x&(US68~{{?HL B7PbHY literal 0 HcmV?d00001 diff --git a/lab7/obj/sched_c.o b/lab7/obj/sched_c.o new file mode 100644 index 0000000000000000000000000000000000000000..7970f91b93387ad0d6f7a4834347cbe72c1f590d GIT binary patch literal 6576 zcmeHLO>9(E6h5z01OaKwk5oZsYO7#?VQLz!CWhC5P_-dIhFBAmVcL0RCY`^|yuwJU zR97rmQ0+4HTyYFLoS#J~EN7~=vB8WMjpB_x{Y0t|~z(lVZN@43_K?Yy`!8W!I0 zdhh+tIp6uYKkp4Ep6uCEXIY?{1@FPaOrZeR*DZ`~F|?rpRzYPKd{b$F;wpf(2%pAh ze5PTn2!-fu$p__<&o27`ZbSjXr3SmW4E3modT1)49gY2SFtq(vB@8gO8u`YjeUb0y zM?QLU-Us8zH-UO()Dt`}BaiY^C%MY=BcD!5n~$qDmTMPV(1+zh(I4=AH$U=;m(GF3 zIv)xi@(ZnF--;O4LwRPsT~@v&W|v!F?4Xs!JW%G3%ihY`Vs0fFACf>yO87osAm`FM?T{^$r@0ev@WHsP^|302f6Om*Bbf6T5D@mvcy`KA&zScFceku zq+OiZY8Q6`41Oi|Lm3bwZt`71e(J^EKtD95z46XmC0s%~;_C82xY7zm+-&%d_gm}Y z7y_D4Yt&jp`v-7cS^!qiSgcJe`$E1Fj>%VQz7qbtQdv)XhH}5^gSV=Fc1S-FfZuH7 zCwXawsy*&|md~I~X$7qX)ea`){!?{b*rR^j9}9A|Kjpp;;JzyPp}0xU)6aRLPvXaV z+&El^wI*Lw>v|ZPp}c91djr09UzIW9c(*Z^vB~p_ynfmbey#`lrLj1dSbK_J=CJsj z5&tc$*ZjyrUKXw?p1lK9W0KPv)7mAuW`Jjt=D*9cJfZ3!bWxwqwe+WIvcOHXrP>7W ztdYL1M|TloBB#<)tkF`tJa(y>))6txpU;NUvG9CU_>O|EW|5=1e^BQ?ZFmRJC@crqyKC3ufh~vnhSTnF;IUvwFtojWSj^gA zdN>pebp+cVk~l`!$Prq{4?=xmleJ-`UtH+TjQ3LCwW=|U9~K*N7-GCb;(;^uXMNB7 z{1Zy0d_T+Eq`dJ=-C1j|CeQwj{4~q!X@hsI3Z1#*?2;3j{dt!6YVx|URG|1Su{=OM z#!deBX!h4xeoo3o{6|<$FS15HSTt7l#Jh#@=QaG0#@o&EEtfv-H7I zZ6=43XE9DvAA8Y_r2cZTS9M(K<0+`oe6aW~Z$iB$JuiIeQM(79CiJZGR~5V;@zq-W z#rZ%i$hew|^MTkC_%z~UwxMFk=LN^lF|PKx!sCozW_@u!aC{V>TKq41;3qxs z*F5mo5vMq>@KTC%huAp}{Wn-Y#9J$Xb87G6Lp=K#Cwpq|<5MgCX~aqYChLpyh}aj5 zFRRA^HgO)Yzl2XMo*z8$Ul1q$81sm8i`XBGpJH5`SHvLSA9rHGerSt9BAsv}ZZtm# zZ3Rf@#4ry>95<47jzzMG81xV4a!wkR#O*9Z3_&*MIH{}~i6!#UzNAx~J83cf%Y6>1 zXfm1U2X`PF$>tJicK~w3X~mk$WZZ!~L_}o6NR>a9aQovCHv@x-WHNF*lj=)2c^E*C zkcgpzn@BkrZlZq>q`OEWHv}As7(3~hqNfBSlqzKpbT3d_gZn_Qvl_26@WVnIU<2Z6 z?Ff==l1ION3an2&IzFNCtl=?r7d`N68s5xf>aO#c;@5A7n~alR9iL^K;-|YnH5=#D z9>pGie^uLV#ybr>%sBDr@u>HKiJxSB;@?nZ2ROwz@$2{`%{tHp}tM=Fu#Q7)))ebgLcrVYx z2ClwOTmwJP^9cjL%<~Hdeg*wgQ*z~3eJ9+MVoAsCCgQ3&?s^AHp$&1n?G*K;(9U`A^6XHqGA z@k213ah>4aeTTN^-6+0prIizp4CJCIhjaZWT>yAx|ArgrWJUd5jA~VT8dKYc57~!kqP3^l zp6a7FmA~qrMWGt&dPh~DI#@$D$(R{`f$hf(a+CH5+SjUIFV`=?_EbOmu2S}@ek3-1 yBLuVZhaF7u!rp}#ePf#Tq-L%?LNG}N*ydzc{cEIyzwK(<7x*KGepl(uwEq)#>*vt` literal 0 HcmV?d00001 diff --git a/lab7/obj/shell_c.o b/lab7/obj/shell_c.o new file mode 100644 index 0000000000000000000000000000000000000000..2b98ef33f4387d1e4231eea00e4aa8309fe8a5a6 GIT binary patch literal 5376 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 literal 0 HcmV?d00001 diff --git a/lab7/obj/uart_c.o b/lab7/obj/uart_c.o new file mode 100644 index 0000000000000000000000000000000000000000..f88c90f1ccad28bd84d1bf207ff57be5d3c13260 GIT binary patch literal 4128 zcmbtWOKenC82<0vmJTqqFyn&IhPfq;L6D&(U9?EjTdR^Nq7Eg|gjj}lpjBGvJdz3% zxI`C3+*DnN2&r-5BP@&|(Mix0b)_t{Rl@?!9YbQ`N*;?6TkH3qN9S@nV-Wu4o_o&s zzaQsLk3YWSiI8QHCW}6&@=2pa&WiHh6#AiJ6rs&#-H)7-#v-|6#M6V?s zn#g2Bw4uzSq8F8NaiZdM)Jukl9*8^k&%Pbo5UZi*fRCP-pYNrZl(XoaBx3nbS&v?y za^Ty7Z@q6O+QNEXSn}8(Map|`sobZ?6ZUCYfEUzJa+g*sxfN3GQnNa%ID_`JP0s6P zUH8nS-S^9U5B=yjP?0fD`69$i)EMQQUCvqgEj74Bj-6$pH?H*;>(U}!w&{0Kr{Cpv z#@lIhFHtY=xz4WTCGW?c)}1^0<;Qb2jr(yb`f<0&@qY(D6SZCvWAQd)zD-XB`6s}q zC6eEUSctr+znO{-_9d3T{6=!}^7)KYaL&-|-sw;w6mtsk*rNnHc4!0T*6tz-EvK>g zu64lNCW@9eyT#@jT2+D_nxs`BVE$&WSbCMl*9|%y97hRuFTt)=Xg<>nyUnmmunWI; z#8>)zzBi0mw7xUAw?pItAB4H&Sbgj{*FXQ6@0~mP%}3mqO0@{)x+#!r6ZXF&ris(1 zliulK#w|>UT&;q=%eO6+qa||eMtsg)3zKK8*`8_S^$FcNHce!mqM75<$m@HNSC{G?bQgNp zh2DK2dxtx)V9S9mVq1YY-q$%PorQkEuILx+V(tU|`d0PptA(5*h?(=ko#~9Pr_mJ8 zFz$%xJ8-Lp#!K+Ye2ocN%s@A0fbSzeb4R~kGz*^XC3$8r=$I+YA^POBOs>HPGwN?d zY#R|<3ylu({lvZC`$>40fMYh7Yng=^TzTgVzBCu~Z_FZM_Ua7($Or!4rHK2cA45N5 z=w}OESN^Az|EUsi_&=p({-6JHZA*Rl2K7~_D=@YhtQ&3b>DlV6-@PwClFK`tiS|V6 zrnbB|wH@2inrLlLv^^wos1mIdD<&qQ;UVAyME}>O@~n zrcHGwB+fR~F2cEI(STnuH^6v~7}sYPXD0ma2z)?=DrN@Q!wSEk@NGCVJ%Wer{H1U) zGr%5G_$)3RlkWLW>{dVLK-c{D{KCs-$8D zSRtRv`|!?XGUU~h|{9VTXjM5L@5w`QG(tqACuIs0LJ&8@F`hTH5R$-;j z_2*w7tR literal 0 HcmV?d00001 diff --git a/lab7/obj/utils_c.o b/lab7/obj/utils_c.o new file mode 100644 index 0000000000000000000000000000000000000000..5916736e31637c8979130d3d5149069cff99cc0b GIT binary patch literal 3824 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 26) & 0b111111; + int iss = esr_el1 & 0x1FFFFFF; + if (ec == 0b010101) { // is system call + uint64_t syscall_num = trapframe->x[8]; + //printf("[SYSCALL] %d\n", syscall_num); + syscall(syscall_num, trapframe); + } + else { + printf("Exception return address 0x%x\n", elr_el1); + printf("Exception class (EC) 0x%x\n", ec); + printf("Instruction specific syndrome (ISS) 0x%x\n", iss); + while(1){ + ; + } + } +} + +void syscall(uint64_t syscall_num, Trapframe* trapframe) { + switch (syscall_num) { + case SYS_GETPID: + sys_getpid(trapframe); + break; + + case SYS_UART_READ: + sys_uart_read(trapframe); + break; + + case SYS_UART_WRITE: + sys_uart_write(trapframe); + break; + + case SYS_EXEC: + sys_exec(trapframe); + break; + + case SYS_FORK: + sys_fork(trapframe); + break; + + case SYS_EXIT: + sys_exit(trapframe); + break; + + case SYS_MBOX_CALL: + sys_mbox_call(trapframe); + break; + case SYS_KILL: + sys_kill(trapframe); + break; + + case SYS_OPEN: + sys_open(trapframe); + break; + + case SYS_CLOSE: + sys_close(trapframe); + break; + + case SYS_WRITE: + sys_write(trapframe); + break; + + case SYS_READ: + sys_read(trapframe); + break; + + case SYS_MKDIR: + sys_mkdir(trapframe); + break; + + case SYS_MOUNT: + sys_mount(trapframe); + break; + + case SYS_CHDIR: + sys_chdir(trapframe); + break; + } + return; +} + +void sys_getpid(Trapframe *trapframe) { + trapframe->x[0] = current_thread()->pid; +} + +void sys_uart_read(Trapframe *trapframe) { + char *buf = (char *)trapframe->x[0]; + size_t size = (size_t)trapframe->x[1]; + enable_irq(); // 避免卡在 read 裡 + for (int i = 0; i < size; i++) { + *(buf + i) = uart_getc(); + } + disable_irq(); + trapframe->x[0] = size; +} + +void sys_uart_write(Trapframe *trapframe) { + const char *buf = (const char *)trapframe->x[0]; + size_t size = (size_t)trapframe->x[1]; + enable_irq(); + for (int i = 0; i < size; i++) { + uart_send(*(buf + i)); + } + disable_irq(); + trapframe->x[0] = size; +} + +void sys_exec(Trapframe *trapframe) { + preempt_disable(); + char *input = (char *)trapframe->x[0]; + char *program_pos; + cpio_newc_header *fs = (cpio_newc_header *)0x8000000; + char *current = (char *)0x8000000; + int name_size; + int file_size; + while (1) { + fs = (cpio_newc_header *)current; + name_size = hex_to_int(fs->c_namesize, 8); + file_size = hex_to_int(fs->c_filesize, 8); + current += 110; + if (strcmp(current, "TRAILER!!!") == 0) { + uart_puts("No such file!\n"); + break; + } + if (strcmp(current, input) == 0) { + current += name_size; + while ((current - (char *)fs) % 4 != 0) + current++; + program_pos = (char *)current; + break; + } else { + current += name_size; + while ((current - (char *)fs) % 4 != 0) + current++; + current += file_size; + while ((current - (char *)fs) % 4 != 0) + current++; + } + } + char *new_program_pos = (char *)malloc(file_size); + for (int i = 0; i < file_size; i++) { + *(new_program_pos+i) = *(program_pos+i); + } + printf("program pos : %x\n", new_program_pos); + Thread *cur = current_thread(); + preempt_enable(); + asm volatile("msr sp_el0, %0" : : "r"(cur->user_sp)); + asm volatile("msr elr_el1, %0": : "r"(new_program_pos)); + asm volatile("msr spsr_el1, %0" : : "r"(0x0)); + asm volatile("eret"); + trapframe->x[0] = 0; +} + +void sys_fork(Trapframe *trapframe) { + Thread *parent = current_thread(); + /* + ret_from_fork 會把 child_trapframe load to register, + 這樣跑 child thread 時就會用到 child_trapframe 更改的 sp + */ + int newpid = thread_create(ret_from_fork); + + Thread *child = task[newpid]; + + printf("child: %x\n", child); + + // copy kernel stack and user stack + uint64_t kstack_offset = (char *)parent->kernel_sp - (char *)trapframe; + uint64_t ustack_offset = (char *)parent->user_sp - (char *)trapframe->sp_el0; + + // copy kernel stack (including trapframe) + for (uint64_t i = 1; i <= kstack_offset; i++) { + *((char *)(child->kernel_sp - i)) = *((char *)(parent->kernel_sp - i)); + } + + // copy user stack + for (uint64_t i = 1; i <= ustack_offset; i++) { + *((char *)(child->user_sp - i)) = *((char *)(parent->user_sp - i)); + } + + child->cpu_context.sp = child->kernel_sp - kstack_offset; + + Trapframe *child_trapframe = (Trapframe *)child->cpu_context.sp; + child_trapframe->sp_el0 = child->user_sp - ustack_offset; + printf("child sp: %x\n", child_trapframe->sp_el0); + + trapframe->x[0] = child->pid; + child_trapframe->x[0] = 0; +} + +void sys_exit(Trapframe *trapframe) { + current_thread()->status = trapframe->x[0]; + end_thread(); +} + +void sys_mbox_call(Trapframe *trapframe) { + unsigned char ch = (unsigned char)trapframe->x[0]; + unsigned int *mbox = (unsigned int *)trapframe->x[1]; + int ret = mboxc_mbox_call(ch, mbox); // defined in mbox.c + trapframe->x[0] = ret; +} + +void sys_kill(Trapframe *trapframe) { + int pid = trapframe->x[0]; + task[pid]->state = TASK_ZOMBIE; +} + +void sys_open(Trapframe *trapframe) { + char *path = trapframe->x[0]; + int flags = trapframe->x[1]; + struct file *handle; + int ret = vfs_open(path, flags, &handle); + if (ret < 0) { + trapframe->x[0] = -1; + return; + } + for (int i = 0; i < MAX_FD_NUM; i++) { + if (!current_thread()->fd_table[i]) { + current_thread()->fd_table[i] = handle; + trapframe->x[0] = i; + return; + } + } + trapframe->x[0] = -1; +} + +void sys_close(Trapframe *trapframe) { + int fd = trapframe->x[0]; + if (fd < 0) { + trapframe->x[0] = -1; + return; + } + struct file *handle = current_thread()->fd_table[fd]; + int ret = vfs_close(handle); + current_thread()->fd_table[fd] = NULL; + trapframe->x[0] = ret; +} + +void sys_write(Trapframe *trapframe) { + int fd = trapframe->x[0]; + char *buf = (char *)trapframe->x[1]; + unsigned long count = trapframe->x[2]; + if (fd < 0) { + trapframe->x[0] = -1; + return; + } + struct file *handle = current_thread()->fd_table[fd]; + if (handle == NULL) { + trapframe->x[0] = 0; + return; + } + trapframe->x[0] = vfs_write(handle, buf, count); +} + +void sys_read(Trapframe *trapframe) { + int fd = trapframe->x[0]; + char *buf = (char *)trapframe->x[1]; + unsigned long count = trapframe->x[2]; + if (fd < 0) { + trapframe->x[0] = -1; + return; + } + struct file *handle = current_thread()->fd_table[fd]; + if (handle == NULL) { + trapframe->x[0] = 0; + return; + } + trapframe->x[0] = vfs_read(handle, buf, count); + +} + +void sys_mkdir(Trapframe *trapframe) { + char *pathname = trapframe->x[0]; + unsigned mode = trapframe->x[1]; + return vfs_mkdir(pathname); +} + +void sys_mount(Trapframe *trapframe) { + char *src = trapframe->x[0]; + char *target = trapframe->x[1]; + char *filesystem = trapframe->x[2]; + unsigned long flags = trapframe->x[3]; + void *data = trapframe->x[4]; + return vfs_mount(target, filesystem); +} + +void sys_chdir(Trapframe *trapframe) { + char *pathname = trapframe->x[0]; + return vfs_chdir(pathname); +} + +void timer_interrupt(int i) { + unsigned long cntfrq_el0; + asm volatile ("mrs %0, cntfrq_el0":"=r" (cntfrq_el0)); + asm volatile ("lsr %0, %0, #5":"=r" (cntfrq_el0) :"r"(cntfrq_el0)); // 1/32 second tick + asm volatile ("msr cntp_tval_el0, %0" : : "r"(cntfrq_el0)); + timer_tick(); +} diff --git a/lab7/src/freelist.c b/lab7/src/freelist.c new file mode 100644 index 000000000..87fcdfd3e --- /dev/null +++ b/lab7/src/freelist.c @@ -0,0 +1,70 @@ +#include "memory.h" +#include "freelist.h" +#include "uart.h" +#include "utils.h" +#include "printf.h" + +extern Freelist *heads; +extern int *frame_array; + +void freelist_push(Freelist *list, Node *nodes, int num) { + nodes[num].next = NULL; + nodes[num].prev = NULL; + if (!list->head) { + list->head = &nodes[num]; + return; + } + Node *node = list->head; + node->prev = &nodes[num]; + nodes[num].next = node; + list->head = &nodes[num]; + return; +} + +void freelist_remove(Freelist *list, Node *nodes, int num) { + Node *current = &nodes[num]; + Node *pre = current->prev; + // Remove the target by updating the head or the previous node. + if (pre==NULL) { + list->head = current->next; + if (current->next != NULL) { + current->next->prev = pre; + } + } + else { + if (current->next == NULL) { + pre->next = current->next; + } + else { + current->next->prev = pre; + pre->next = current->next; + } + } + current->prev = NULL; + current->next = NULL; +} + +void print_freelists() { + uart_puts("-----------Freelists------------\n"); + for(int i = LOG2_MAX_PAGES; i >= 0; i--) { + freelist_print(i, &heads[i]); + } + // uart_puts("-------------Pages--------------\n"); + // for (int j = 0; j < (MAX_PAGES/16); j++) { + // for (int i = 0; i < 16; i++) { + // uart_int(frame_array[16*j+i]); + // uart_puts(" "); + // } + // uart_puts("\n"); + // } +} +void freelist_print(int level, Freelist *list) { + uart_puts("Level "); + uart_int(level); + uart_puts(": "); + for (Node *node = list->head; node != NULL; node = node->next) { + uart_uint(node->index); + uart_puts(" "); + } + uart_puts("\n"); +} diff --git a/lab7/src/main.c b/lab7/src/main.c new file mode 100644 index 000000000..5c7945490 --- /dev/null +++ b/lab7/src/main.c @@ -0,0 +1,99 @@ +#include "uart.h" +#include "utils.h" +#include "freelist.h" +#include "memory.h" +#include "sched.h" +#include "printf.h" +#include "typedef.h" +#include "sys.h" +#include "mbox.h" +#include "shell.h" +#include "vfs.h" +#include "tmpfs.h" +#define N 5 + +extern void delay(); +extern void core_timer_enable(); + + +void cpu_timer_register_enable() { // 讓 el0 用 clock 不會 interrupt + uint64_t tmp; + asm volatile("mrs %0, cntkctl_el1" : "=r"(tmp)); + tmp |= 1; + asm volatile("msr cntkctl_el1, %0" : : "r"(tmp)); +} + +void fork_test(){ + printf("\nFork Test, pid %d\n", getpid()); + int cnt = 1; + int ret = 0; + if ((ret = fork()) == 0) { // child + long long cur_sp; + asm volatile("mov %0, sp" : "=r"(cur_sp)); + printf("first child pid: %d, cnt: %d, ptr: %x, sp : %x\n", getpid(), cnt, &cnt, cur_sp); + ++cnt; + if ((ret = fork()) != 0){ + asm volatile("mov %0, sp" : "=r"(cur_sp)); + printf("first child pid: %d, cnt: %d, ptr: %x, sp : %x\n", getpid(), cnt, &cnt, cur_sp); + } + else{ + while (cnt < 5) { + asm volatile("mov %0, sp" : "=r"(cur_sp)); + printf("second child pid: %d, cnt: %d, ptr: %x, sp : %x\n", getpid(), cnt, &cnt, cur_sp); + delay(1000000); + ++cnt; + } + } + exit(0); + } + else { + unsigned int __attribute__((aligned(16))) mbox[36]; + get_board_revision(mbox); + mbox_call(MBOX_CH_PROP, mbox); + for (int i = 0; i < 8; i++) { + printf("mbox %d: %x\n", i, mbox[i]); + } + printf("parent here, pid %d, child %d\n", getpid(), ret); + } +} + +void foo(){ + for(int i = 0; i < 10; ++i) { + printf("Thread id: %d %d\n", getpid(), i); + delay(10000000); + schedule(); + } +} + +void main() { + uart_init(); + init_printf(NULL, putc); + memory_init(); + rootfs_init(); + task_init(); + core_timer_enable(); + cpu_timer_register_enable(); + + while (1) { + char c = uart_getc(); + uart_send(c); + if (c == 's') break; + } + printf("%s", "\nHello from Raspberry pi!\n"); + shell(); + // for(int i = 0; i < N; ++i) { // N should > 2 + // thread_create(foo); + // } + // delay(1000000000); + // kill_zombies(); + // printf("PID: %d\n", getpid()); + // for(int i = 0; i < N*2; ++i) { // N should > 2 + // thread_create(foo); + // } + //fork_test(); + int ret; + if ((ret = fork()) == 0) + exec("syscall.img", 0x0); + idle(); + +} diff --git a/lab7/src/mbox.c b/lab7/src/mbox.c new file mode 100644 index 000000000..4d9dbce85 --- /dev/null +++ b/lab7/src/mbox.c @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#include "gpio.h" +#include "printf.h" + +/* mailbox message buffer */ +//volatile unsigned int __attribute__((aligned(16))) mbox[36]; + +#define VIDEOCORE_MBOX (MMIO_BASE + 0x0000B880) +#define MBOX_READ ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x0)) +#define MBOX_POLL ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x10)) +#define MBOX_SENDER ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x14)) +#define MBOX_STATUS ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x18)) +#define MBOX_CONFIG ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x1C)) +#define MBOX_WRITE ((volatile unsigned int *)(VIDEOCORE_MBOX + 0x20)) +#define MBOX_RESPONSE 0x80000000 +#define MBOX_FULL 0x80000000 +#define MBOX_EMPTY 0x40000000 +#define MBOX_CH_PROP 8 +/* tags */ +#define GET_BOARD_REVISION 0x00010002 +#define GET_ARM_MEMORY 0x00010005 +#define REQUEST_CODE 0x00000000 +#define REQUEST_SUCCEED 0x80000000 +#define REQUEST_FAILED 0x80000001 +#define TAG_REQUEST_CODE 0x00000000 +#define END_TAG 0x00000000 + +/** + * Make a mailbox call. Returns 0 on failure, non-zero on success + */ +int mboxc_mbox_call(unsigned char ch, unsigned int *mbox) { + /* 28 bits (MSB) for value, 4 bits for channel type */ + unsigned int r = (((unsigned int)((unsigned long)mbox) & ~0xF) | (ch & 0xF)); + + /* wait until we can write to the mailbox */ + do { + asm volatile("nop"); + } while (*MBOX_STATUS & MBOX_FULL); + /* write the address of our message to the mailbox with channel identifier */ + *MBOX_WRITE = r; + /* now wait for the response */ + while (1) { + /* is there a response? */ + do { + asm volatile("nop"); + } while (*MBOX_STATUS & MBOX_EMPTY); + /* is it a response to our message? */ + if (r == *MBOX_READ) + /* is it a valid successful response? */ + return mbox[1] == MBOX_RESPONSE; + } + return 0; +} + +int get_board_revision(unsigned int *mbox) { + mbox[0] = 7 * 4; // buffer size in bytes + mbox[1] = REQUEST_CODE; + // tags begin + mbox[2] = GET_BOARD_REVISION; // tag identifier + mbox[3] = 4; // maximum of request and response value buffer's length. + mbox[4] = TAG_REQUEST_CODE; + mbox[5] = 0; // value buffer + // tags end + mbox[6] = END_TAG; + + return 0; + //return mbox_call(MBOX_CH_PROP, mbox); // message passing procedure call, you should implement it following the 6 steps provided above. + + // printf("0x%x\n", mbox[5]); // it should be 0xa020d3 for rpi3 b+ +} + +int get_arm_memory(unsigned int *mbox) { + mbox[0] = 8 * 4; // buffer size in bytes + mbox[1] = REQUEST_CODE; + // tags begin + mbox[2] = GET_ARM_MEMORY; // tag identifier + mbox[3] = 8; // maximum of request and response value buffer's length. + mbox[4] = TAG_REQUEST_CODE; + mbox[5] = 0; // value buffer + mbox[6] = 0; // value buffer + // tags end + mbox[7] = END_TAG; + + return 0; + //return mbox_call(MBOX_CH_PROP, mbox); // message passing procedure call, you should implement it following the 6 steps provided above. + + // printf("0x%x\n", mbox[5]); // it should be 0xa020d3 for rpi3 b+ +} \ No newline at end of file diff --git a/lab7/src/memory.c b/lab7/src/memory.c new file mode 100644 index 000000000..f45b69fb1 --- /dev/null +++ b/lab7/src/memory.c @@ -0,0 +1,241 @@ +#include "memory.h" +#include "freelist.h" +#include "uart.h" +#include "utils.h" +#include "printf.h" + +Freelist *heads; +Node *nodes; +int *frame_array; +blocklist memory_blocks; + +extern char _end; +extern void memzero(void *, size_t); + +void memory_init() { + void *base = (void *)&_end; + heads = (Freelist *)simple_malloc(&base, (int)sizeof(Freelist)*LOG2_MAX_PAGES_PLUS_1); + nodes = (Node *)simple_malloc(&base, (int)sizeof(Node)*MAX_PAGES); + frame_array = (int *)simple_malloc(&base, (int)sizeof(int)*MAX_PAGES); + for (int i = 0; i < MAX_PAGES; i++) { + nodes[i].prev = NULL; + nodes[i].next = NULL; + nodes[i].index = i; + frame_array[i] = BELONG_LEFT; + } + frame_array[0] = LOG2_MAX_PAGES; + for (int i = 0; i < LOG2_MAX_PAGES; i++) { + heads[i].head = NULL; + } + heads[LOG2_MAX_PAGES].head = &nodes[0]; + + reserve_memory(0x0, (ulong)base); + reserve_memory(0x8000000, (0x8000000+CPIO_SIZE)); + reserve_memory(0x3c000000, 0x40000000); + + memory_blocks.head = (block_meta *)malloc(PAGE_SIZE); + memory_blocks.head->next = NULL; + memory_blocks.head->size = 4096 - BLOCK_SIZE; + memory_blocks.head->free = 1; + memory_blocks.head->pagetail = 1; + +} + +int find_allocate_list(Freelist *heads, int needed_pages) { + for (int i = needed_pages; i <= LOG2_MAX_PAGES; i++) { + if (heads[i].head != NULL) { + return i; + } + } + return LOG2_MAX_PAGES; +} + +int allocate_page(Freelist *heads, Node *nodes, int *frames, int needed_level, int index) { + debug("Allocate page for level ", needed_level); + if (index >= 0) { + // reserve memory + int remove = index, push; + int use_level = needed_level; + while(frames[remove] != use_level) { + remove &= ~(pow2(use_level)); + use_level++; + } + debug("Remove", remove); + freelist_remove(&heads[use_level], nodes, remove); + for(int i = use_level-1; i >= needed_level; i--) { + remove ^= (index & pow2(i)); + push = remove ^ pow2(i); + debug("Push", push); + freelist_push(&heads[i], nodes, push); + frames[push] = i; + } + frames[index] = ALLOCATED; + return 0; // no need to return anything + } + else { + // normal page allocation + int use_level = find_allocate_list(heads, needed_level); + Node *fs = heads[use_level].head; + int front = fs->index; + debug("Remove from freelist", front); + freelist_remove(&heads[use_level], nodes, front); + for (int i = use_level-1; i >= needed_level; i--) { + int back = front | pow2(i); + debug("Push to freelist", back); + freelist_push(&heads[i], nodes, back); + frames[back] = i; + } + frames[front] = ALLOCATED; + return fs->index; + } +} + +void free_page(Freelist *heads, Node *nodes, int *frames, int free_index) { + debug("Freeing page", free_index); + frames[free_index] = BELONG_LEFT; + int level = 0; + int free_level = LOG2_MAX_PAGES; + while(frames[free_index ^ pow2(level)] == BELONG_LEFT) { // 如果非最左邊區塊,終會到達index=0, frames[0]不可能BELONG_LEFT, 所以會跳出迴圈 + free_index &= ~(pow2(level)); + level++; + } + for (int i = level; i < LOG2_MAX_PAGES; i++) { + int buddy = free_index ^ pow2(i); + if (frames[buddy] != i) { // not same level or allocated + free_level = i; + break; + } + frames[buddy] = BELONG_LEFT; + freelist_remove(&heads[i], nodes, buddy); + debug("Merged", buddy); + free_index &= ~(pow2(i)); + } + debug("Push back to freelist", free_index); + freelist_push(&heads[free_level], nodes, free_index); + frames[free_index] = free_level; + return; +} + +void *malloc(size_t size) { + if (size >= (PAGE_SIZE-BLOCK_SIZE)) { + //int need_pages = (size+PAGE_SIZE-1)/PAGE_SIZE; + int needed_order = log2((size+PAGE_SIZE-1)/PAGE_SIZE); + void *ptr = (void *)(unsigned long)(MEMORY_BASE + allocate_page(heads, nodes, frame_array, needed_order, -1) * PAGE_SIZE); + //print_freelists(); + memzero(ptr, pow2(needed_order)*PAGE_SIZE); + //printf("[Malloc page] %x\n", ptr); + return ptr; + } + else { + block_meta *curr = memory_blocks.head; + size = (size & ~15) + 16; // align to 16 + /* find split block */ + while(1) { + if ((curr->free != (short)0) && (curr->size > size)) { + break; + } + if (curr->next == (block_meta *)NULL) { + /* allocate new page */ + block_meta *new_page = (block_meta *)malloc(PAGE_SIZE); + new_page->size = PAGE_SIZE-BLOCK_SIZE; + new_page->free = 1; + new_page->pagetail = 1; + new_page->next = NULL; + curr->next = new_page; + curr = curr->next; + break; + } + curr = curr->next; + } + + /* allocate memory */ + int left_size = curr->size - size; + block_meta *new_block = (block_meta *)((ulong)curr+BLOCK_SIZE+(ulong)size); + new_block->size = left_size; + new_block->free = 1; + new_block->pagetail = curr->pagetail; + new_block->next = curr->next; + curr->size = size; + curr->free = 0; + curr->pagetail = 0; + curr->next = new_block; + memzero((ulong)curr+BLOCK_SIZE, size); + //printf("[Malloc] %x\n", (ulong)curr+BLOCK_SIZE); + return (void *)((ulong)curr+BLOCK_SIZE); + + } +} + +void free(void *ptr) { + if ((ulong)ptr % PAGE_SIZE == 0) { + int free_index = (int)(((ulong)ptr-MEMORY_BASE+(PAGE_SIZE-1)) / 0x1000); + printf("Free page index %d\n", free_index); + free_page(heads, nodes, frame_array, free_index); + //print_freelists(); + } + else { + //printf("[Free] %x\n", ptr); + block_meta *need_free = (block_meta *)((ulong)ptr-BLOCK_SIZE); + need_free->free = 1; + /* remove block */ + block_meta *curr = memory_blocks.head; + while(curr != NULL) { + if (curr->free) { + while(!curr->pagetail && (curr->next != NULL) && curr->next->free) { + curr->size += curr->next->size; + curr->pagetail = curr->next->pagetail; + curr->next = curr->next->next; + } + } + curr = curr->next; + } + } +} + +void reserve_memory(ulong start, ulong end) { + int index = (start-MEMORY_BASE) / PAGE_SIZE; + int pages = ((end+PAGE_SIZE-1)-start) / PAGE_SIZE; + uart_puts("Reserve "); + uart_int(pages); + uart_puts(" page(s)\n"); + for (int i = 0; i < LOG2_MAX_PAGES; i++) { + if (index & pow2(i)) { + allocate_page(heads, nodes, frame_array, i, index); + index += pow2(i); + pages -= pow2(i); + } + if (pages <= 0) break; + if (pow2(i) >= pages) { + allocate_page(heads, nodes, frame_array, log2(pages), index); + break; + } + if (pages <= 0) break; + } + //uart_puts("[Reserve memory] Finished.\n"); + //print_freelists(); +} + +void print_memory() { + block_meta *curr = memory_blocks.head; + while(curr != NULL) { + uart_puts("----------------\n"); + uart_puts("Address: "); + uart_hex((ulong)curr + BLOCK_SIZE); + uart_puts("\n"); + uart_puts("Size: "); + uart_int(curr->size); + uart_puts("\n"); + uart_puts("Free: "); + if (curr->free) + uart_puts("Yes\n"); + else + uart_puts("No\n"); + uart_puts("Last block in the page: "); + if (curr->pagetail) + uart_puts("Yes\n"); + else + uart_puts("No\n"); + + curr = curr->next; + } +} \ No newline at end of file diff --git a/lab7/src/printf.c b/lab7/src/printf.c new file mode 100644 index 000000000..db3507682 --- /dev/null +++ b/lab7/src/printf.c @@ -0,0 +1,228 @@ +/* +File: printf.c +Copyright (C) 2004 Kustaa Nyholm +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "printf.h" + +typedef void (*putcf) (void*,char); +static putcf stdout_putf; +static void* stdout_putp; + +#define PRINTF_LONG_SUPPORT +#ifdef PRINTF_LONG_SUPPORT + +static void uli2a(unsigned long int num, unsigned int base, int uc,char * bf) + { + int n=0; + unsigned int d=1; + while (num/d >= base) + d*=base; + while (d!=0) { + int dgt = num / d; + num%=d; + d/=base; + if (n || dgt>0|| d==0) { + *bf++ = dgt+(dgt<10 ? '0' : (uc ? 'A' : 'a')-10); + ++n; + } + } + *bf=0; + } + +static void li2a (long num, char * bf) + { + if (num<0) { + num=-num; + *bf++ = '-'; + } + uli2a(num,10,0,bf); + } + +#endif + +static void ui2a(unsigned int num, unsigned int base, int uc,char * bf) + { + int n=0; + unsigned int d=1; + while (num/d >= base) + d*=base; + while (d!=0) { + int dgt = num / d; + num%= d; + d/=base; + if (n || dgt>0 || d==0) { + *bf++ = dgt+(dgt<10 ? '0' : (uc ? 'A' : 'a')-10); + ++n; + } + } + *bf=0; + } + +static void i2a (int num, char * bf) + { + if (num<0) { + num=-num; + *bf++ = '-'; + } + ui2a(num,10,0,bf); + } + +static int a2d(char ch) + { + if (ch>='0' && ch<='9') + return ch-'0'; + else if (ch>='a' && ch<='f') + return ch-'a'+10; + else if (ch>='A' && ch<='F') + return ch-'A'+10; + else return -1; + } + +static char a2i(char ch, char** src,int base,int* nump) + { + char* p= *src; + int num=0; + int digit; + while ((digit=a2d(ch))>=0) { + if (digit>base) break; + num=num*base+digit; + ch=*p++; + } + *src=p; + *nump=num; + return ch; + } + +static void putchw(void* putp,putcf putf,int n, char z, char* bf) + { + char fc=z? '0' : ' '; + char ch; + char* p=bf; + while (*p++ && n > 0) + n--; + while (n-- > 0) + putf(putp,fc); + while ((ch= *bf++)) + putf(putp,ch); + } + +void tfp_format(void* putp,putcf putf,char *fmt, va_list va) + { + char bf[12]; + + char ch; + + + while ((ch=*(fmt++))) { + if (ch!='%') + putf(putp,ch); + else { + char lz=0; +#ifdef PRINTF_LONG_SUPPORT + char lng=0; +#endif + int w=0; + ch=*(fmt++); + if (ch=='0') { + ch=*(fmt++); + lz=1; + } + if (ch>='0' && ch<='9') { + ch=a2i(ch,&fmt,10,&w); + } +#ifdef PRINTF_LONG_SUPPORT + if (ch=='l') { + ch=*(fmt++); + lng=1; + } +#endif + switch (ch) { + case 0: + goto abort; + case 'u' : { +#ifdef PRINTF_LONG_SUPPORT + if (lng) + uli2a(va_arg(va, unsigned long int),10,0,bf); + else +#endif + ui2a(va_arg(va, unsigned int),10,0,bf); + putchw(putp,putf,w,lz,bf); + break; + } + case 'd' : { +#ifdef PRINTF_LONG_SUPPORT + if (lng) + li2a(va_arg(va, unsigned long int),bf); + else +#endif + i2a(va_arg(va, int),bf); + putchw(putp,putf,w,lz,bf); + break; + } + case 'x': case 'X' : +#ifdef PRINTF_LONG_SUPPORT + if (lng) + uli2a(va_arg(va, unsigned long int),16,(ch=='X'),bf); + else +#endif + ui2a(va_arg(va, unsigned int),16,(ch=='X'),bf); + putchw(putp,putf,w,lz,bf); + break; + case 'c' : + putf(putp,(char)(va_arg(va, int))); + break; + case 's' : + putchw(putp,putf,w,0,va_arg(va, char*)); + break; + case '%' : + putf(putp,ch); + default: + break; + } + } + } + abort:; + } + + +void init_printf(void* putp,void (*putf) (void*,char)) + { + stdout_putf=putf; + stdout_putp=putp; + } + +void tfp_printf(char *fmt, ...) + { + va_list va; + va_start(va,fmt); + tfp_format(stdout_putp,stdout_putf,fmt,va); + va_end(va); + } + +static void putcp(void* p,char c) + { + *(*((char**)p))++ = c; + } + + + +void tfp_sprintf(char* s,char *fmt, ...) + { + va_list va; + va_start(va,fmt); + tfp_format(&s,putcp,fmt,va); + putcp(&s,0); + va_end(va); + } \ No newline at end of file diff --git a/lab7/src/sched.c b/lab7/src/sched.c new file mode 100644 index 000000000..39b6402d1 --- /dev/null +++ b/lab7/src/sched.c @@ -0,0 +1,156 @@ +#include "sched.h" +#include "memory.h" +#include "utils.h" +#include "printf.h" +#include "vfs.h" +#include "tmpfs.h" + +static Thread init_task = INIT_TASK; +//Thread *current_thread = &(init_task); +Thread *task[NR_TASKS] = {&(init_task), }; +int nr_tasks = 1; + + +extern void run_thread(void); +extern Thread *get_current(void); +extern void enable_irq(); +extern void disable_irq(); +extern switch_to(void *, void *); + + +int get_new_pid() { + Thread* p; + for (int i = 0; i < NR_TASKS; i++) { + p = task[i]; + if (p == NULL) { + return i; + } + } + return -1; +} + +Thread* current_thread() { + Thread *cur = get_current(); + if (!cur) + return &init_task; + return cur; +} + +void preempt_disable(void) { + current_thread()->preempt_count++; +} + +void preempt_enable(void) { + current_thread()->preempt_count--; +} + +int thread_create(void *func) { + Thread *p = malloc(sizeof(Thread)); + printf("thread_create %x\n", p); + p->priority = 1; + p->state = TASK_RUNNING; + p->counter = p->priority; + p->status = 0; + p->preempt_count = 1; //disable preemtion until schedule_tail + + p->cpu_context.x19 = (ulong)func; + p->cpu_context.lr = (ulong)run_thread; + //p->cpu_context.sp = (ulong)p + THREAD_SIZE - 16; + p->kernel_sp = (ulong)malloc(PAGE_SIZE) + PAGE_SIZE - 16; + p->user_sp = (ulong)malloc(PAGE_SIZE) + PAGE_SIZE - 16; + p->cpu_context.sp = p->kernel_sp; // kernel space + p->pwd = rootfs->root; + + int pid = get_new_pid(); + task[pid] = p; + p->pid = pid; + preempt_enable(); + return pid; +} + +void _schedule() { + preempt_disable(); + int next, c; + struct Thread* p; + while (1) { + c = -1; + next = 0; + for (int i = 0; i < NR_TASKS; i++) { // pick biggest c value + p = task[i]; + if (p && p->state == TASK_RUNNING && p->counter > c) { + c = p->counter; + next = i; + } + } + if (c) { + break; + } + for (int i = 0; i < NR_TASKS; i++) { + p = task[i]; + if (p) { + p->counter = (p->counter >> 1) + p->priority; + } + } + } + //debug("now thread", current_thread()); + //debug("next thread", task[next]); + if (current_thread() != task[next]) { + //printf("[scheduler] next pid: %d\n", next); + Thread *prev = current_thread(); + //current_thread = task[next]; + switch_to(prev, task[next]); + } + preempt_enable(); +} + +void schedule() { + current_thread()->counter = 0; + _schedule(); +} + +void kill_zombies() { + Thread* p; + for (int i = 1; i < NR_TASKS; i++) { // pick biggest c value + p = task[i]; + if (p && p->state == TASK_ZOMBIE) { + free((void *)(p->kernel_sp & ~(PAGE_SIZE-1))); + free((void *)(p->user_sp & ~(PAGE_SIZE-1))); + free(p); + task[i] = NULL; + } + } +} + +void idle() { + while(1) { + kill_zombies(); // reclaim threads marked as DEAD + schedule(); // switch to any other runnable thread + } +} + + +void timer_tick() { + current_thread()->counter--; + if (current_thread()->counter>0 || current_thread()->preempt_count > 0) { + return; + } + current_thread()->counter=0; + enable_irq(); + schedule(); + disable_irq(); +} + +void end_thread(void) { + current_thread()->state = TASK_ZOMBIE; + schedule(); +} + +void task_init(void) { + //Thread *p = current_thread(); + //asm volatile ("mrs %0, sp_el1":"=r"(p->kernel_sp)); + uint64_t init_task_addr = (uint64_t)&init_task; + asm volatile ("msr tpidr_el1, %0"::"r"(init_task_addr)); + (&init_task)->pwd = rootfs->root; + uint64_t sp_el0 = 0; + asm volatile ("msr sp_el0, %0"::"r"(sp_el0)); +} \ No newline at end of file diff --git a/lab7/src/shell.c b/lab7/src/shell.c new file mode 100644 index 000000000..3c9546359 --- /dev/null +++ b/lab7/src/shell.c @@ -0,0 +1,76 @@ +#include "utils.h" +#include "uart.h" +#include "printf.h" +#include "memory.h" +#include "vfs.h" +#include "tmpfs.h" +#include "shell.h" +#include "sched.h" +#include "sys.h" + +void shell() { + printf("\n\n _ _ ___ _____ _ _ ___ ___ ___ ___ \n"); + printf("| \\| |/ __|_ _| | | |/ _ \\/ __| \\_ _|\n"); + printf("| .` | (__ | | | |_| | (_) \\__ \\ |) | | \n"); + printf("|_|\\_|\\___| |_| \\___/ \\___/|___/___/___|\n\n"); + char input[1024]; + while (1) { + uart_send('\r'); + uart_puts("# "); + shell_input(input); + if (strcmp(input, "test") == 0) { + struct vnode *vnode; + int fd = open("/dir", O_CREAT); + int ret = write(fd, "abcdefghijklmnopqrstuvwxyz", 26); + printf("%d %d\n", fd, ret); + fd = open("/dir", 0); + char buf[128]; + int rd = read(fd, buf, 10); + printf("%d %d %s\n", fd, rd, buf); + ret = vfs_lookup(".", &vnode); + printf("Current directory: %s\n", ((struct tmpfs_internal *)vnode->internal)->name); + + + } else if (strcmp(input, "m") == 0) { + shell_input(input); + int size = (int)cstr_to_ulong(input); + void *ptr = malloc(size); + printf("%x\n", ptr); + } else if (strcmp(input, "d") == 0) { + shell_input(input); + void *ptr = (void *)(ulong)hex_to_int(input, 8); + free(ptr); + } else if (strcmp(input, "pm") == 0) { + print_freelists(); + print_memory(); + } else if (!strcmp(input, "pwd")) { + printf("%s\n", ((struct tmpfs_internal *)current_thread()->pwd->internal)->name); + } else if (!strcmp(input, "vfs1")) { + int ret; + char *argv[] = {}; + if ((ret = fork()) == 0) + exec("vfs1.img", argv); + idle(); + } else { + uart_puts("Error input!\n"); + } + } + +} + +void shell_input(char *input) { + int i = 0; + char temp; + while (1) { + temp = uart_getc(); + if (temp == '\n') { + uart_puts("\n"); + input[i] = '\0'; + break; + } else + uart_send(temp); + + input[i] = temp; + i++; + } +} \ No newline at end of file diff --git a/lab7/src/start.S b/lab7/src/start.S new file mode 100644 index 000000000..6e55f94c0 --- /dev/null +++ b/lab7/src/start.S @@ -0,0 +1,277 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +.section ".text.boot" + +.global _start + +_start: + bl from_el2_to_el1 + bl set_exception_vector_table + // set top of stack just before our code (stack grows to a lower address per AAPCS64) + adr x1, _start + mov sp, x1 + + // clear bss + adr x1, __bss_start + ldr w2, =__bss_size +1: cbz w2, 2f + str xzr, [x1], #8 + sub w2, w2, #1 + cbnz w2, 1b + +2: // jump to C code, should not return + bl main + // for failsafe, halt this core too +3: wfe + b 3b + +from_el2_to_el1: + mov x0, (1 << 31) // EL1 uses aarch64 + msr hcr_el2, x0 + mov x0, 0x5 // EL1h (SPSel = 1) with interrupt enabled + msr spsr_el2, x0 + msr elr_el2, lr + eret // return to EL1 + +.globl from_el1_to_el0 +from_el1_to_el0: + mov x0, 0 + msr spsr_el1, x0 + msr elr_el1, lr + mov x0, 0x60000 // user space stack + msr sp_el0, x0 + eret // return to EL0 + +// save general registers to stack +.macro save_all + sub sp, sp, 32 * 9 + stp x0, x1, [sp ,16 * 0] + stp x2, x3, [sp ,16 * 1] + stp x4, x5, [sp ,16 * 2] + stp x6, x7, [sp ,16 * 3] + stp x8, x9, [sp ,16 * 4] + stp x10, x11, [sp ,16 * 5] + stp x12, x13, [sp ,16 * 6] + stp x14, x15, [sp ,16 * 7] + stp x16, x17, [sp ,16 * 8] + stp x18, x19, [sp ,16 * 9] + stp x20, x21, [sp ,16 * 10] + stp x22, x23, [sp ,16 * 11] + stp x24, x25, [sp ,16 * 12] + stp x26, x27, [sp ,16 * 13] + stp x28, x29, [sp ,16 * 14] + + mrs x21, sp_el0 + mrs x22, elr_el1 + mrs x23, spsr_el1 + + stp x30, x21, [sp, #16 * 15] + stp x22, x23, [sp, #16 * 16] +.endm + +// load general registers from stack +.macro load_all + ldp x22, x23, [sp, #16 * 16] + ldp x30, x21, [sp, #16 * 15] + + msr sp_el0, x21 + msr elr_el1, x22 + msr spsr_el1, x23 + + ldp x0, x1, [sp ,16 * 0] + ldp x2, x3, [sp ,16 * 1] + ldp x4, x5, [sp ,16 * 2] + ldp x6, x7, [sp ,16 * 3] + ldp x8, x9, [sp ,16 * 4] + ldp x10, x11, [sp ,16 * 5] + ldp x12, x13, [sp ,16 * 6] + ldp x14, x15, [sp ,16 * 7] + ldp x16, x17, [sp ,16 * 8] + ldp x18, x19, [sp ,16 * 9] + ldp x20, x21, [sp ,16 * 10] + ldp x22, x23, [sp ,16 * 11] + ldp x24, x25, [sp ,16 * 12] + ldp x26, x27, [sp ,16 * 13] + ldp x28, x29, [sp ,16 * 14] + add sp, sp, 32 * 9 +.endm + +exception_handler_loop: + b exception_handler_loop + +exception_handler: + save_all + bl exception_handler_loop + load_all + eret + +sync_exception_handler: + save_all + mrs x0, esr_el1 // to decide is syscall or not + mrs x1, elr_el1 // the address return to + mov x2, sp // trapframe + bl sync_exc_router + load_all + eret + +irq_exception_handler_low: + save_all + mov x0, #0 + bl timer_interrupt + load_all + eret + +irq_exception_handler: + save_all + mov x0, #1 + bl timer_interrupt + load_all + eret + +exception_handler_lower_irq: + save_all + bl timer_interrupt + load_all + eret + +.align 11 // vector table should be aligned to 0x800 +.global exception_vector_table +exception_vector_table: + b exception_handler // branch to a handler function. + .align 7 // entry size is 0x80, .align will pad 0 + b exception_handler + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + + b sync_exception_handler + .align 7 + b irq_exception_handler + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + + b sync_exception_handler + .align 7 + b irq_exception_handler_low + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + + b exception_handler + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + b exception_handler + .align 7 + +set_exception_vector_table: + adr x0, exception_vector_table + msr vbar_el1, x0 + ret + +.equ CORE0_TIMER_IRQ_CTRL, 0x40000040 + +.global core_timer_enable +core_timer_enable: + mov x0, 1 + msr cntp_ctl_el0, x0 // enable + mrs x0, cntfrq_el0 + lsr x0, x0, #5 + msr cntp_tval_el0, x0 // set expired time + mov x0, 2 + ldr x1, =CORE0_TIMER_IRQ_CTRL + str w0, [x1] // unmask timer interrupt + ret + +.global switch_to +switch_to: + stp x19, x20, [x0, 16 * 0] + stp x21, x22, [x0, 16 * 1] + stp x23, x24, [x0, 16 * 2] + stp x25, x26, [x0, 16 * 3] + stp x27, x28, [x0, 16 * 4] + stp fp, lr, [x0, 16 * 5] + mov x9, sp + str x9, [x0, 16 * 6] + + ldp x19, x20, [x1, 16 * 0] + ldp x21, x22, [x1, 16 * 1] + ldp x23, x24, [x1, 16 * 2] + ldp x25, x26, [x1, 16 * 3] + ldp x27, x28, [x1, 16 * 4] + ldp fp, lr, [x1, 16 * 5] + ldr x9, [x1, 16 * 6] + mov sp, x9 + msr tpidr_el1, x1 + ret + +.global get_current +get_current: + mrs x0, tpidr_el1 + ret + +.globl delay +delay: + subs x0, x0, #1 + bne delay + ret + +.globl enable_irq +enable_irq: + msr DAIFClr, #2 // IRQ mask bit + ret + +.globl disable_irq +disable_irq: + msr DAIFSet, #2 + ret + +.globl run_thread +run_thread: + bl preempt_enable + blr x19 //should never return + bl end_thread + +.globl ret_from_fork +ret_from_fork: + load_all + eret + +.global memzero +memzero: + str xzr, [x0], #8 + sub w1, w1, #1 + cbnz w1, memzero + ret diff --git a/lab7/src/sys.S b/lab7/src/sys.S new file mode 100644 index 000000000..acb4ca5c9 --- /dev/null +++ b/lab7/src/sys.S @@ -0,0 +1,92 @@ +#define __ASSEMBLY__ +#include "sys.h" + +.global getpid +getpid: + mov x8, SYS_GETPID + svc #0 + ret + +.global uartread +uartread: + mov x8, SYS_UART_READ + svc #0 + ret + +.global uartwrite +uartwrite: + mov x8, SYS_UART_WRITE + svc #0 + ret + +.global exec +exec: + mov x8, SYS_EXEC + svc #0 + ret // shouldn't go here + +.global fork +fork: + mov x8, SYS_FORK + svc #0 + ret + +.global exit +exit: + mov x8, SYS_EXIT + svc #0 + ret + +.global mbox_call +mbox_call: + mov x8, SYS_MBOX_CALL + svc #0 + ret + +.global kill +kill: + mov x8, SYS_KILL + svc #0 + ret + +.global open +open: + mov x8, SYS_OPEN + svc #0 + ret + +.global close +close: + mov x8, SYS_CLOSE + svc #0 + ret + +.global write +write: + mov x8, SYS_WRITE + svc #0 + ret + +.global read +read: + mov x8, SYS_READ + svc #0 + ret + +.global mkdir +mkdir: + mov x8, SYS_MKDIR + svc #0 + ret + +.global mount +mount: + mov x8, SYS_MOUNT + svc #0 + ret + +.global chdir +chdir: + mov x8, SYS_CHDIR + svc #0 + ret \ No newline at end of file diff --git a/lab7/src/tmpfs.c b/lab7/src/tmpfs.c new file mode 100644 index 000000000..7c5af9b1b --- /dev/null +++ b/lab7/src/tmpfs.c @@ -0,0 +1,148 @@ +#include "memory.h" +#include "vfs.h" +#include "tmpfs.h" +#include "printf.h" +#include "utils.h" + +struct vnode_operations* tmpfs_v_ops; +struct file_operations* tmpfs_f_ops; + +int tmpfs_register() { + tmpfs_v_ops = (struct vnode_operations*)malloc(sizeof(struct vnode_operations)); + tmpfs_v_ops->lookup = &tmpfs_lookup; + tmpfs_v_ops->create = &tmpfs_create; + tmpfs_v_ops->mkdir = &tmpfs_mkdir; + tmpfs_f_ops = (struct file_operations*)malloc(sizeof(struct file_operations)); + tmpfs_f_ops->write = &tmpfs_write; + tmpfs_f_ops->read = &tmpfs_read; + return 0; +} + +int tmpfs_setup_mount(struct filesystem* fs, struct mount* mount) { + struct tmpfs_internal* tmpfs_root = (struct tmpfs_internal*)malloc(sizeof(struct tmpfs_internal)); + tmpfs_root->type = DIRECTORY; + strcpy(tmpfs_root->name, "/"); + tmpfs_root->parent = NULL; + struct node *root_vnode = tmpfs_create_vnode(tmpfs_root); + mount->root = root_vnode; + mount->fs = fs; + tmpfs_root->vnode = root_vnode; + return 0; +} + +struct vnode* tmpfs_create_vnode(struct tmpfs_internal* tmpfs_node) { + struct vnode* vnode = (struct vnode*)malloc(sizeof(struct vnode)); + vnode->f_ops = tmpfs_f_ops; + vnode->v_ops = tmpfs_v_ops; + vnode->internal = tmpfs_node; + return vnode; +} + +int tmpfs_create(struct vnode* dir, struct vnode** target, const char* component_name) { + // create tmpfs internal structure + struct tmpfs_internal* file_node = (struct tmpfs_internal*)malloc(sizeof(struct tmpfs_internal)); + file_node->type = REGULAR_FILE; + strcpy(file_node->name, component_name); + file_node->parent = (struct tmpfs_internal *)(dir->internal); + for (int i = 0; i < MAX_ENTRIES; i++) { + if (!file_node->parent->child[i]) { + file_node->parent->child[i] = file_node; + break; + } + } + file_node->vnode = tmpfs_create_vnode(file_node); + file_node->data = malloc(PAGE_SIZE); + + *target = file_node->vnode; + return 0; +} + +// vnode operations +int tmpfs_lookup(struct vnode* dir, struct vnode** target, const char* component_name) { + // component_name is empty, return dir vnode + if (!strcmp(component_name, "")) { + return -1; + } + else if (!strcmp(component_name, ".")) { + *target = dir; + return 0; + } + else if (!strcmp(component_name, "..")) { // todo: cross filesystem + *target = dir; + struct tmpfs_internal *t = ((struct tmpfs_internal *)dir->internal)->parent; + if (!t) + return 0; + *target = ((struct tmpfs_internal *)dir->internal)->parent->vnode; + return 0; + } + // search component_name in dir + for (int i = 0; i < MAX_ENTRIES; i++) { + struct tmpfs_internal* file_node = ((struct tmpfs_internal*)dir->internal)->child[i]; + if ((file_node != NULL) & !strcmp(file_node->name, component_name)) { + *target = file_node->vnode; + printf("lookup [0x%x]\n", *target); + return 0; + } + } + *target = NULL; + return -1; +} + +int tmpfs_write(struct file* file, const void* buf, size_t len) { + printf("tmpfs_write\n"); + if (((struct tmpfs_internal *)file->vnode->internal)->type != REGULAR_FILE) { + printf("Write on not regular file\n"); + return -1; + } + + struct tmpfs_internal* file_node = (struct tmpfs_internal *)file->vnode->internal; + + char *dest = &(file_node->data[file->f_pos]); + char *src = (char*)buf; + size_t i = 0; + for (; i < len; i++) { + printf("%c", src[i]); + dest[i] = src[i]; + } + //dest[i] = EOF; + return i; +} + +int tmpfs_read(struct file* file, void* buf, size_t len) { + printf("tmpfs_read\n"); + if (((struct tmpfs_internal *)file->vnode->internal)->type != REGULAR_FILE) { + printf("Read on not regular file\n"); + return -1; + } + struct tmpfs_internal* file_node = (struct tmpfs_internal *)file->vnode->internal; + + char *dest = (char*)buf; + char *src = &(file_node->data[file->f_pos]); + size_t i = 0; + for (; i < len && i < MAX_FILESIZE; i++) { + printf("%c", src[i]); + dest[i] = src[i]; + } + file->f_pos += i; + return i; + +} + +int tmpfs_mkdir(struct vnode* dir, struct vnode** target, const char* component_name) { + // create tmpfs internal structure + struct tmpfs_internal* dir_node = (struct tmpfs_internal*)malloc(sizeof(struct tmpfs_internal)); + dir_node->type = DIRECTORY; + strcpy(dir_node->name, component_name); + dir_node->parent = (struct tmpfs_internal *)(dir->internal); + for (int i = 0; i < MAX_ENTRIES; i++) { + if (!dir_node->parent->child[i]) { + dir_node->parent->child[i] = dir_node; + break; + } + } + dir_node->vnode = tmpfs_create_vnode(dir_node); + *target = dir_node->vnode; + return 0; +} + + diff --git a/lab7/src/uart.c b/lab7/src/uart.c new file mode 100644 index 000000000..770db014e --- /dev/null +++ b/lab7/src/uart.c @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#include "gpio.h" + +/* Auxilary mini UART registers */ +#define AUX_ENABLE ((volatile unsigned int *)(MMIO_BASE + 0x00215004)) +#define AUX_MU_IO ((volatile unsigned int *)(MMIO_BASE + 0x00215040)) +#define AUX_MU_IER ((volatile unsigned int *)(MMIO_BASE + 0x00215044)) +#define AUX_MU_IIR ((volatile unsigned int *)(MMIO_BASE + 0x00215048)) +#define AUX_MU_LCR ((volatile unsigned int *)(MMIO_BASE + 0x0021504C)) +#define AUX_MU_MCR ((volatile unsigned int *)(MMIO_BASE + 0x00215050)) +#define AUX_MU_LSR ((volatile unsigned int *)(MMIO_BASE + 0x00215054)) +#define AUX_MU_MSR ((volatile unsigned int *)(MMIO_BASE + 0x00215058)) +#define AUX_MU_SCRATCH ((volatile unsigned int *)(MMIO_BASE + 0x0021505C)) +#define AUX_MU_CNTL ((volatile unsigned int *)(MMIO_BASE + 0x00215060)) +#define AUX_MU_STAT ((volatile unsigned int *)(MMIO_BASE + 0x00215064)) +#define AUX_MU_BAUD ((volatile unsigned int *)(MMIO_BASE + 0x00215068)) + +/** + * Set baud rate and characteristics (115200 8N1) and map to GPIO + */ +void uart_init() { + register unsigned int r; + + /* map UART1 to GPIO pins */ + r = *GPFSEL1; + r &= ~((7 << 12) | (7 << 15)); // gpio14, gpio15 + r |= (2 << 12) | (2 << 15); // alt5 + *GPFSEL1 = r; + *GPPUD = 0; // enable pins 14 and 15 + r = 150; + while (r--) { + asm volatile("nop"); + } + *GPPUDCLK0 = (1 << 14) | (1 << 15); + r = 150; + while (r--) { + asm volatile("nop"); + } + /* initialize UART */ + *AUX_ENABLE |= 1; // enable UART1, AUX mini uart + *AUX_MU_IER = 0; + *AUX_MU_CNTL = 0; + *AUX_MU_LCR = 3; // 8 bits + *AUX_MU_MCR = 0; + *AUX_MU_IER = 0; + *AUX_MU_IIR = 0xc6; // disable interrupts + *AUX_MU_BAUD = 270; // 115200 baud + *GPPUDCLK0 = 0; // flush GPIO setup + *AUX_MU_CNTL = 3; // enable Tx, Rx +} + +/** + * Send a character + */ +void uart_send(unsigned int c) { + /* wait until we can send */ + do { + asm volatile("nop"); + } while (!(*AUX_MU_LSR & 0x20)); // transmitter idle + /* write the character to the buffer */ + *AUX_MU_IO = c; +} + +/** + * Receive a character + */ +char uart_getc() { + char r; + /* wait until something is in the buffer */ + do { + asm volatile("nop"); + } while (!(*AUX_MU_LSR & 0x01)); // receiver overrun + /* read it and return */ + r = (char)(*AUX_MU_IO); + /* convert carrige return to newline */ + return r == '\r' ? '\n' : r; +} + +/** + * Receive a character without converting CR to LF + */ +char uart_getc_pure() { + char r; + /* wait until something is in the buffer */ + do { + asm volatile("nop"); + } while (!(*AUX_MU_LSR & 0x01)); // receiver overrun + /* read it and return */ + r = (char)(*AUX_MU_IO); + return r; +} +/** + * Display an int + */ +void uart_int(int i) { + if (i < 0) { + uart_send('-'); + i = (~i) + 1; + } + char c[10]; + if (i == 0) { + uart_send('0'); + return; + } + int digits = -1; + while (i != 0) { + c[++digits] = '0' + i % 10; + i /= 10; + } + for (; digits >= 0; --digits) { + uart_send(c[digits]); + } +} +/** + * Display an unsigned int + */ +void uart_uint(unsigned int i) { + char c[10]; + if (i == 0) { + uart_send('0'); + return; + } + int digits = -1; + while (i != 0) { + c[++digits] = '0' + i % 10; + i /= 10; + } + for (; digits >= 0; --digits) { + uart_send(c[digits]); + } +} + +/** + * Display an unsigned long + */ +void uart_ulong(unsigned long i) { + char c[20]; + if (i == 0) { + uart_send('0'); + return; + } + int digits = -1; + while (i != 0) { + c[++digits] = '0' + i % 10; + i /= 10; + } + for (; digits >= 0; --digits) { + uart_send(c[digits]); + } +} + +/** + * Display a string + */ +void uart_puts(char *s) { + while (*s) { + /* convert newline to carrige return + newline */ + if (*s == '\n') + uart_send('\r'); + uart_send(*s++); + } +} + +/** + * Display a binary value in hexadecimal + */ +void uart_hex(unsigned int d) { + unsigned int n; + int c; + for (c = 28; c >= 0; c -= 4) { + // get highest tetrad + n = (d >> c) & 0xF; + // 0-9 => '0'-'9', 10-15 => 'A'-'F' + n += n > 9 ? 0x37 : 0x30; + uart_send(n); + } +} + +void uart_hex_long(unsigned long d) { + unsigned long n; + int c; + for (c = 60; c >= 0; c -= 4) { + // get highest tetrad + n = (d >> c) & 0xF; + // 0-9 => '0'-'9', 10-15 => 'A'-'F' + n += n > 9 ? 0x37 : 0x30; + uart_send(n); + } +} + +// This function is required by printf function +void putc(void *p, char c) { + if (c == '\n') + uart_send('\r'); + uart_send(c); +} \ No newline at end of file diff --git a/lab7/src/utils.c b/lab7/src/utils.c new file mode 100644 index 000000000..514bebe69 --- /dev/null +++ b/lab7/src/utils.c @@ -0,0 +1,137 @@ +#include "uart.h" +#include "utils.h" +#include "printf.h" + +struct cpio_newc_header { + char c_magic[6]; + char c_ino[8]; + char c_mode[8]; + char c_uid[8]; + char c_gid[8]; + char c_nlink[8]; + char c_mtime[8]; + char c_filesize[8]; + char c_devmajor[8]; + char c_devminor[8]; + char c_rdevmajor[8]; + char c_rdevminor[8]; + char c_namesize[8]; + char c_check[8]; +}; + +void *get_user_program_address() { + struct cpio_newc_header *fs = (struct cpio_newc_header *)0x8000000; + char *current = (char *)0x8000000; + int is_file = 0; + while (1) { + fs = (struct cpio_newc_header *)current; + int name_size = hex_to_int(fs->c_namesize, 8); + int file_size = hex_to_int(fs->c_filesize, 8); + current += 110; // size of cpio_newc_header + if (strcmp(current, "user.img") == 0) + is_file = 1; + current += name_size; + while ((current - (char *)fs) % 4 != 0) + current++; + if (is_file) return (void *) current; + current += file_size; + while ((current - (char *)fs) % 4 != 0) + current++; + } + +} + +int strcmp(const char *s1, const char *s2) { + while (*s1 != '\0' && *s1 == *s2) { + s1++; + s2++; + } + return (*(unsigned char *)s1) - (*(unsigned char *)s2); +} + +int hex_to_int(char *p, int len) { + int val = 0; + int temp; + for (int i = 0; i < len; i++) { + temp = *(p + i); + if (temp >= 'A') { + temp = temp - 'A' + 10; + } else + temp -= '0'; + val *= 16; + val += temp; + } + return val; +} + +void* simple_malloc(void **now, int size) { + void *ret = *now; + *now = *(char **)now + size; + return ret; +} + +int log2(int x) { + int ret = 0; + while(x != 1) { + if (x & 1) { + x += 1; + } + x >>= 1; + ret++; + } + return ret; +} + +int pow2(int x) { + return (1 << x); +} + +unsigned long cstr_to_ulong(char *s) { + unsigned long ret = 0; + while (*s != '\0') { + ret *= 10; + ret += (*s - '0'); + s++; + } + return ret; +} + +void strcpy(char *dest, const char *src) { + while (*src != '\0') { + *dest = *src; + src++; + dest++; + } + *dest = *src; +} + +void debug(char *s, int n) { + if (!DEBUG) return; + uart_puts(s); + uart_puts(": "); + uart_int(n); + uart_puts("\n"); +} + +unsigned long get_timestamp() { + register unsigned long f, c; + asm volatile ("mrs %0, cntfrq_el0" : "=r"(f)); // get current counter frequency + asm volatile ("mrs %0, cntpct_el0" : "=r"(c)); // read current counter + return (unsigned long) c; +} + +void assert(int e) { + if (e == 0) + printf("Assert Error!\n"); + else + printf("Assert\n"); +} + +int strlen(char *str) { + int len = 0; + while (*str != '\0') { + len++; + str++; + } + return len; +} \ No newline at end of file diff --git a/lab7/src/vfs.c b/lab7/src/vfs.c new file mode 100644 index 000000000..dacc4f051 --- /dev/null +++ b/lab7/src/vfs.c @@ -0,0 +1,221 @@ +#include "vfs.h" +#include "memory.h" +#include "printf.h" +#include "tmpfs.h" +#include "typedef.h" +#include "utils.h" +#include "sched.h" + +struct mount *rootfs; + +void rootfs_init() { + struct filesystem *tmpfs = (struct filesystem *)malloc(sizeof(struct filesystem)); + tmpfs->name = (char *)malloc(sizeof(char) * 6); + strcpy(tmpfs->name, "tmpfs"); + tmpfs->setup_mount = tmpfs_setup_mount; + register_filesystem(tmpfs); + + rootfs = (struct mount *)malloc(sizeof(struct mount)); + tmpfs->setup_mount(tmpfs, rootfs); +} + +int register_filesystem(struct filesystem *fs) { + // register the file system to the kernel. + // you can also initialize memory pool of the file system here. + if (!strcmp(fs->name, "tmpfs")) { + printf("[%u] Register tmpfs\n", get_timestamp()); + return tmpfs_register(); + } + return -1; +} + +void getdir_r(struct vnode* node, const char* path, struct vnode** target_node, char* target_path) { + // find next / + printf("getdir_node [0x%x]\n", node); + if (!path[0]) { + printf("getdir_ret [0x%x]\n", *target_node); + return; + } + int i = 0; + while (path[i]) { + if (path[i] == '/') break; + target_path[i] = path[i]; + i++; + } + target_path[i++] = '\0'; + // find in node's child + struct vnode *child_node = *target_node; + // edge cases check + *target_node = node; + int ret = node->v_ops->lookup(node, &child_node, target_path); + if (ret == 0) { + if (child_node->mount != NULL) { + printf("GEID_MOUNT\n"); + getdir_r(child_node->mount->root, path+i, target_node, target_path); + } + else { + getdir_r(child_node, path+i, target_node, target_path); + } + } + else { + printf("getdir_ret [0x%x]\n", *target_node); + } + // for (int j = 0; j < MAX_ENTRIES; j++) { + // struct tmpfs_internal *child_node = node->child[j]; + // if (!child_node) continue; + // if (!strcmp(child_node->name, target_path)) { + // if (child_node->vnode->mount != NULL) { + // getdir_r(child_node->vnode->mount->root->internal, path + i, target_node, target_path); + // } + // else if (child_node->type == DIRECTORY) { + // getdir_r(child_node, path + i, target_node, target_path); + // } + // break; + // } + // } +} + +void getdir(const char* pathname, struct vnode** target_node, char* target_path) { + *target_node = rootfs->root; + if (pathname[0] == '/') { // absolute path + struct vnode* rootnode = rootfs->root; + getdir_r(rootnode, pathname + 1, target_node, target_path); + } + else { // relative path + struct vnode* rootnode = current_thread()->pwd; + getdir_r(rootnode, pathname, target_node, target_path); + } +} + +int vfs_open(const char *pathname, int flags, struct file **target) { + // 1. Lookup pathname + printf("[Open] %s %d\n", pathname, flags); + struct vnode *target_dir; + char target_path[MAX_PATHNAME_LEN]; + getdir(pathname, &target_dir, target_path); + //printf("%s %s\n", pathname, target_path); + // 2. Create a new file handle for this vnode if found. + // 3. Create a new file if O_CREAT is specified in flags and vnode not found + // lookup error code shows if file exist or not or other error occurs + struct vnode *target_file; + int lookup_res = rootfs->root->v_ops->lookup(target_dir, &target_file, target_path); + if (lookup_res < 0) { + if (flags & O_CREAT) { + int create_res = rootfs->root->v_ops->create(target_dir, &target_file, target_path); + if (create_res < 0) return create_res; + + } + else + return -1; + } + printf("open: [0x%x]\n", target_file); + struct file *handle = malloc(sizeof(struct file)); + handle->vnode = target_file; + handle->f_pos = 0; + handle->f_ops = target_file->f_ops; + handle->flags = flags; + *target = handle; + return 0; + // 4. Return error code if fails + return -1; +} + +int vfs_close(struct file *file) { + printf("[Close]\n"); + // 1. release the file handle + //printf("[Close]\n"); + if (!file) return -1; + free((void*)file); + // 2. Return error code if fails + return 0; +} + +int vfs_write(struct file *file, const void *buf, size_t len) { + printf("[Write]\n"); + // 1. write len byte from buf to the opened file. + // 2. return written size or error code if an error occurs. + return file->f_ops->write(file, buf, len); +} + +int vfs_read(struct file *file, void *buf, size_t len) { + printf("[Read]\n"); + // 1. read min(len, readable size) byte to buf from the opened file. + // 2. block if nothing to read for FIFO type + // 3. return read size or error code if an error occurs. + return file->f_ops->read(file, buf, len); +} + +int vfs_mkdir(const char *pathname) { + printf("[Mkdir] %s\n", pathname); + struct vnode *target_dir; + char target_path[MAX_PATHNAME_LEN]; + getdir(pathname, &target_dir, target_path); + struct vnode *child_dir; + int mkdir_res = rootfs->root->v_ops->mkdir(target_dir, &child_dir, target_path); + if (mkdir_res < 0) return mkdir_res; + return 0; +} + +int vfs_mount(const char *target, const char *filesystem) { + // check mountpoint is valid + struct vnode* parent_dir; + char path_remain[MAX_PATHNAME_LEN]; + printf("[Mount] %s %s\n", target, filesystem); + getdir(target, &parent_dir, path_remain); + + struct vnode *mount_dir; + int lookup_res = parent_dir->v_ops->lookup(parent_dir, &mount_dir, path_remain); + if (lookup_res < 0) return lookup_res; + printf("[Mount] [%s]\n", ((struct tmpfs_internal *)mount_dir->internal)->name); + + // mount fs on mountpoint + struct mount *mt = (struct mount*)malloc(sizeof(struct mount)); + if (((struct tmpfs_internal *)mount_dir->internal)->type != DIRECTORY) return -1; + struct filesystem* tmpfs = (struct filesystem*)malloc(sizeof(struct filesystem)); + tmpfs->name = (char*)malloc(sizeof(char) * strlen(filesystem)); + strcpy(tmpfs->name, filesystem); + tmpfs->setup_mount = &tmpfs_setup_mount; + tmpfs->setup_mount(tmpfs, mt); + mount_dir->mount = mt; + + return 0; +} + +int vfs_lookup(const char *pathname, struct vnode **target) { + //printf("[Lookup] %s\n", pathname); + struct vnode *target_dir; + char target_path[MAX_PATHNAME_LEN]; + getdir(pathname, &target_dir, target_path); + struct vnode *target_file; + int lookup_res = target_dir->v_ops->lookup(target_dir, &target_file, target_path); + if (lookup_res < 0) return lookup_res; + *target = target_file; + return 0; +} + +int vfs_chdir(const char* pathname) { + printf("[Chdir] %s\n", pathname); + if (!strcmp(pathname, "/")) { + current_thread()->pwd = rootfs->root; + return 0; + } + struct vnode* parent_dir; + char path_remain[128]; + path_remain[0] = '\0'; + getdir(pathname, &parent_dir, path_remain); + printf("[Chdir] %s\n", path_remain); + if (!strcmp(path_remain, "")) { // not found + return 0; + } + struct vnode *target_dir; + int lookup_res = parent_dir->v_ops->lookup(parent_dir, &target_dir, path_remain); + if (lookup_res < 0) return lookup_res; + else { + if (target_dir->mount != NULL) { + current_thread()->pwd = target_dir->mount->root; + } + else + current_thread()->pwd = target_dir; + return 0; + } +} \ No newline at end of file From dbc8c05bc63d7929b6b6bd8857c9b564e8ad79c1 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Fri, 3 Jun 2022 19:58:25 +0800 Subject: [PATCH 06/19] basic 123 qemu --- lab7/include/vfs.h | 1 + lab7/kernel8.elf | Bin 36864 -> 37040 bytes lab7/kernel8.img | Bin 27296 -> 27472 bytes lab7/obj/exception_c.o | Bin 9056 -> 10280 bytes lab7/obj/shell_c.o | Bin 5376 -> 5376 bytes lab7/obj/tmpfs_c.o | Bin 6000 -> 5656 bytes lab7/obj/vfs_c.o | Bin 7744 -> 6888 bytes lab7/src/exception.c | 19 +++++++++++++++---- lab7/src/tmpfs.c | 16 ++++++++-------- lab7/src/vfs.c | 28 +++++++++------------------- 10 files changed, 33 insertions(+), 31 deletions(-) diff --git a/lab7/include/vfs.h b/lab7/include/vfs.h index f0aafcd06..e8b9ca0fb 100644 --- a/lab7/include/vfs.h +++ b/lab7/include/vfs.h @@ -21,6 +21,7 @@ struct mount { struct vnode { struct mount *mount; + struct vnode *mount_parent; struct vnode_operations *v_ops; struct file_operations *f_ops; void *internal; diff --git a/lab7/kernel8.elf b/lab7/kernel8.elf index 44685fa7dcca51c1836bfaa0efccfee9d77202bd..b7a2d8335b779727edf9bba71a5fabc1e0eba4af 100644 GIT binary patch delta 7741 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 U`7?%ItHJjf8^r`yXS(e;E@hQ?GMtWKcK4KF86 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 Mzfm}3m=Ux70)NSFrvLx| delta 949 zcmaizO=uHQ5XawpCe422qmhu!V#y|wO_riUVQN0%>I8fZ)axN)=YP5 z$zrM0v%!W0ALV{IO-O8if^>9fDn_3{$oD3Nq&#FP2)YxM4)Kv_7X!F&jFT%{d;1r< zkxGw}g?p5c9^}q^HiIFz)G;bSM>R0*-{)Pm z0JFjBq2JeE!!I=%&?-Gb$TE~d6(2eT=0k5`Gn{Y#4AbJn%pV7E z&tpk^E%8I}OCEk-@Rop!) z@nbS<=bvty(aX%~3DpO<4--l#IVydqC}}(5v{#_;U5<=<|4=YRgW^ z=)M$sN$7T|JoLQ)%K}(!JvPSJy4pS;pOWYk*hy-1(>`aRX=wTlQOOZ(dKi=4b(>R4 zpqA3;DcHcX#eI;{L4CvxLVHZSi06;O@wApb;h`%YYL8p6uWI|n(IKk4^LZ#n?nld~ zy9zX;>FzW>9iToK$!Mc)?*rmbO+$m))0C&wID+J+O zG!EOQ<+_QirIdnB&>I5N*&_QBgvD%`4#I|+gKyac%ZGsF%1lbaNi=sNu!v?Q2Cs5u Oc@2L=zH0E!H2wmW(X2TD diff --git a/lab7/obj/shell_c.o b/lab7/obj/shell_c.o index 2b98ef33f4387d1e4231eea00e4aa8309fe8a5a6..b135f0349944d46e56d4e703661d396faa31e799 100644 GIT binary patch delta 20 bcmZqBYS7vc$;c=$Ig0T&qrm1crd2`!LT&~z delta 20 bcmZqBYS7vc$;ikvIg0T&BhThArd2`!LM8?& diff --git a/lab7/obj/tmpfs_c.o b/lab7/obj/tmpfs_c.o index f9381ba016716b02d76d45c74a559f2b30edc8c8..b9d518630e54ab332700cad78ea9b4e6e781e4a2 100644 GIT binary patch delta 870 zcmZ8d&1(}u6o0eXO*Y#QlTCKlB*jFbG_*xh(S8V;M0!y#Jybo2*xG}j(nL`Sdg{f4 zf+Rc;5gY4&V973Koy{1GulmyvIN^aUix6FnJU<= zG&hogGROrx4bWKx;y6xcuG!@yc*d91P5{Imc?9Qt=8u5&E8 zL6fv-0&dR$Jfeo<)amB@HYWX7oo~5|fBe0;KadGuyiqD$zf-=H$yNF)8lDdv!fIgi z+$xO^#qjh(sNQo5HEHhmudiW(dTGC<&DSyy#qi{URu2--X@~#G3tDX+1b>h7jZbQW zu~nSc`j2lZoCWyiCYYtH1A__K1(pR~61Xh%ZD?$0>k501OA%`rggQpg^^-CqT(ZE8 zE?mW8)M90fMy8#X|T_w-Q7ADYR15-E>PQ zKF5y!f=ys8W+lCOXk=$8lqIUR6kLg|(v y8gNC|ux5<1TexQArMgg>S+@}{Ld6vbXl@FG6*EfSvBmED;=E(H` delta 1219 zcmbVKO-NKx6h8OOn;&1Vac15dXH3Z{62&Y=A$6j9qXZFcQrtzUnEhCxqgGZ6D_RJJ zn5Up1t)NA?8(g`|D3B;uA`uib%b>-~Dh3og_q}_|-YU8<=iK|9?>pa_IrF5kuz$K< zNt)S)e#TUsVpY2WPy&EyfOLt`Cl{lvf}Qi_bl33%J3+BR`NF!esO)9OD8?#YD$t#) zN|*9ATu1`SpyQxthjswK6wfJ7MPwg6H+x{Q_7A+~dE4Q*!b8fBxGSFkbUQEB0A$_( zbZ_MV+>X@o7QeZ;qBiU?3ChzPxw>>I0dSw%r1BnU*ebg2eb!!XZ5*l9jGa1 zurpw6|G|0f!IQJvT-goG1dMRV;n|4N@$GAH;c;Mru}M6x)g1&M=L4)d3Ak|t7^wEV z0CqdVh6G*^c!({`Yb)M~dmcwvMJ93QYR5MMHwfnz2~m3|@Td!4-qNR1aCwRgKiP*? zW1ngV$Dg4vOW;x{)^y0lObcdO;L=gzM{U(Jm#SB&Ubs{ee`TvwuS1hlT@b2(z@?YO zb?gksn(AGuaiMB-sU)7XRg*52oaBK^CGlyls*H=h^1YM`AD-IqPB_M1 zsC$X4&|U7B{s#7uIQVcdvcgs|WwdH>-6&11&2 n*cxUje#W9{DFFkUqeoZ)Gf|86Vm4}(EgO!c50|L=(a?VZfSTOu diff --git a/lab7/obj/vfs_c.o b/lab7/obj/vfs_c.o index 6e1fe075ffb6b036b59c6c6d3ab6dc7efe0a7b97..4d4f06ef4ba513c40d49e121e42c7f902adad15f 100644 GIT binary patch delta 2145 zcmZ`)O=ufe5PrK_Nh?`Vh3#my*4kbNr&fe17NoVB8dol%#w1QuaD$04wTcZXEw+=Y zU_!tN_>h7r4&#GKD#a-jN}EGMT3E)QFysii1X`FF$PP@r-}|)^?7?p6Jxcs zLpP9qI;H-<-VTV*VOq^AF{r3Lx++9#ryckOYU)}mOE$gD^6$4$|wHPNQTs<>1DpN7D zA!oy9U^ARoUVuip6MFR{h@H_dYN#M!OSdOSPrrF;%s#vjB?N6^c&0r4&V@<4Z@~fQ z=4WP)*%P#yBp>NHdisOevOQnAFoTl>DSmVgiAj6n@cWZd_%d>1aY;dVC|;=O)v)^3 z<418^S~wPPkZsU|`FCB~;nxU9OS$n|Y9(7eq8@iVDE=#l72+t(Lvg#JRRbqH@ef^o zQRH2RzDlSXJn3=Ra~<~Ooy6#~BRl}xqAvw=JnhSvQ|fy4h5IPUOps_D?d7`rHy zwyOCWq!u4PdJqRCoxZo;q^qXWB2-$&(JT~E#w$s-0pA?x>BEn$x)87ThPr+r**KyG3@;hsQu^F_b*qYBrQ9dYV_+vmZTUZjkd_hFptb-r0xU zAXfR46iPenlSYMFUb5<$CPbQYd*Y0bU3}ONF zZWTajGe+ch=5HS>zcUtklgTLgof+`q=b+SPnDYB_$;S$~*7hU*y_VAb(K?@PJ`A6v zUs6x%_~A^#ZaO1>_F0)oQFqgR2qmju{auIa)}R`UxULrcC!6iBs&*32whyZ7QMis% S{Q&&YJ{T$RNtR$c-T5!CLM7n< literal 7744 zcmbtZTWpla6`sA2xP^pkin%D>NKi-xThk&HCrDm`Q(T2hED0mn{&Q7x0(43KYaDz*Q1e$(H1ekHVY#~@!qu1PuXtDJY!av`QhLFd_HEz zO?32+fX@|Hnz?Jn^@}lcxv(-d2fjJJqb4;6nK6vV3$f^BCvWG+Ucg)=?&OFoA33OF zIIlc$$3u*du9GtLpVTB`AI}f}{?fHr>nCa(ZK||>jWKV+{bsJYuonEG4S1r)tTSeG z%>w7N^|!Fz%oW#~xmj@EU5@^GwaMug)>_-@l%MOXtdn*|ybJZCQ$^?{ zjQKHS>uRRWn{83ktoRGS*`HmWnoFUNnAIUBb%pxWl!=?w1@NeBi39%an}5iyWpHfj4W>~Zfj#TY`zEiPm_C^v8xc@`Qe*V3rq9n z>~gk7Xb)mv@>k-2-PMMzKjx2*jgO6q8NZ8lXQ5~9w!WEjpMyQ%K4%&sTZ8&g8R!&h z$YIX8I#t`=Td1jRW{Nd6yDc>p)>QE>_RZb+_-rh4S>tclk^Q0em2&kCY=ce_IkR~> z5}7I-*=O_gH`W!_FlOT#<}Fdmlk?GXG3R&+AH z+r5FBwR;(F#)#(}=UB_Y7w#L3qsR^Gi*vj~xNiA+^YX+qzd~;QYfQ@IV;TJ6UZ)?l z+104#=9jiM9$`Iu=P-8OdCER?#%-*4uJF9~&aAce%yKbli{h+rbo^h%nonYpx?(JX zyEwMwOep{lbAxk-_u``ao9nf^yfi(}+;+e|o*O(T(Weg2EqnfaguVQcyC-ZtpwBbj zor!MG;^U*4<8pR0PFUaN7c%P0BgAcf_(NOE`M!a!9E4i74xUIfrQhhu<M|+(B z^@li#Cj55Z=RfbJ%^s&e6P@_di zDf87_7j2Y3`<}fPo!CCP?b{3XTe~o|eUW{QCHszve%{w_ary~hLo#10`jLr^lN(-n zyE+PrKiMc#acQG?+&p};bjFxi`7d?gv2x--aTAtlF@v2IG<;K`EyZ26iZg*u%s4F{ zc1V@oxIWH)%v6Pt9mmX5OYmoatTz9Aq8j?1N>6nheY&P8w-R>;Tej3=yTf=rbcw3mRY&va+-{WOrdnM66-V+vb2Ey`Q zQSQxTP7Mw?9^MXge+7TgHX$Ycu~O~eC3vmiYZp>zk==qn7vOt6o|V$)OY{CU$oqM0 z6dBf?k8}U9(N25=l-hCWh4yy}PJZ=~P`BXZ_wk_$@*@@Ge<64nhxY{!<1j5a?OY>$ zzCQ5qwH`hredVu`@hy2Pzv6nIk$;`Xb4U8bpY!k)7_%vV!j2Gg!IfX}b%KZdy91s* z!lUPg@+iKy0?!sXpVXdj3eR@Il}GU%f`|4T^YAYS2VbKVaQ=f0o35*No)=u#Rs4d- zRgLmf&F=&IlgH;SUw$XDY~Vj=ROw{sCD#A-LMF_!hy#I@#gj{<(K1;2#zK zvjM;2V;+wmpDP}Yf9oitRIjupaIRu6|t=dkTW9Uy9!oJoM|ahx_(4$ajJAe<1vg zf-Aq`2L%uLn?2mGpOFgq84pj$ntY9UxX*LN!~J{neZd*eRUXe(!5L2i9`(n3P+Y(Bj|cMlJwFoQ z`aN%wxzm05_LF$$v+muky==O-J(*7rPDUCv!QI%x2u6Bh%N1&ux?J&*am| z1BZ|9#0PuFDF{$4-QC)iZSPAv>;M1X1Ssf&Y}XQDN_u0Gf1QxyUx)U;)rh4^i0jPA zA#n-+nZU-sySa|iX^nkRaJgPFa&1Nh6_B@tyM*pQkD~vp{x0Z})30F+jjsQY1FwZ< z)nShMwVn*S*Trwz=Qp)q->+a&`@Y;iMBm5Q4`p8$EVTcD=${W1Li?MbUoL+`8@QS= z3DIZ%sH^&#KTd~h12Sip^VgV0NeqYl`zF+x[0] = -1; return; } @@ -236,10 +237,12 @@ void sys_open(Trapframe *trapframe) { if (!current_thread()->fd_table[i]) { current_thread()->fd_table[i] = handle; trapframe->x[0] = i; + printf("[Open] %s %d %d\n", path, flags, i); return; } } trapframe->x[0] = -1; + printf("[Open] %s %d %d\n", path, flags, trapframe->x[0]); } void sys_close(Trapframe *trapframe) { @@ -250,8 +253,9 @@ void sys_close(Trapframe *trapframe) { } struct file *handle = current_thread()->fd_table[fd]; int ret = vfs_close(handle); - current_thread()->fd_table[fd] = NULL; + //current_thread()->fd_table[fd] = NULL; trapframe->x[0] = ret; + printf("[Close] %d %d\n", fd, ret); } void sys_write(Trapframe *trapframe) { @@ -260,14 +264,17 @@ void sys_write(Trapframe *trapframe) { unsigned long count = trapframe->x[2]; if (fd < 0) { trapframe->x[0] = -1; + printf("[Write] %d %d\n", fd, trapframe->x[0]); return; } struct file *handle = current_thread()->fd_table[fd]; if (handle == NULL) { trapframe->x[0] = 0; + printf("[Write] %d %d\n", fd, trapframe->x[0]); return; } trapframe->x[0] = vfs_write(handle, buf, count); + printf("[Write] %d %d\n", fd, trapframe->x[0]); } void sys_read(Trapframe *trapframe) { @@ -284,13 +291,15 @@ void sys_read(Trapframe *trapframe) { return; } trapframe->x[0] = vfs_read(handle, buf, count); + printf("[Read] %d %d %d\n", fd, count, trapframe->x[0]); } void sys_mkdir(Trapframe *trapframe) { char *pathname = trapframe->x[0]; unsigned mode = trapframe->x[1]; - return vfs_mkdir(pathname); + trapframe->x[0] = vfs_mkdir(pathname); + printf("[Mkdir] %s %d\n", pathname, trapframe->x[0]); } void sys_mount(Trapframe *trapframe) { @@ -299,12 +308,14 @@ void sys_mount(Trapframe *trapframe) { char *filesystem = trapframe->x[2]; unsigned long flags = trapframe->x[3]; void *data = trapframe->x[4]; - return vfs_mount(target, filesystem); + trapframe->x[0] = vfs_mount(target, filesystem); + printf("[Mount] %s %s %d\n", target, filesystem, trapframe->x[0]); } void sys_chdir(Trapframe *trapframe) { char *pathname = trapframe->x[0]; - return vfs_chdir(pathname); + trapframe->x[0] = vfs_chdir(pathname); + printf("[Chdir] %s %d\n", pathname, trapframe->x[0]); } void timer_interrupt(int i) { diff --git a/lab7/src/tmpfs.c b/lab7/src/tmpfs.c index 7c5af9b1b..32cada676 100644 --- a/lab7/src/tmpfs.c +++ b/lab7/src/tmpfs.c @@ -69,18 +69,22 @@ int tmpfs_lookup(struct vnode* dir, struct vnode** target, const char* component } else if (!strcmp(component_name, "..")) { // todo: cross filesystem *target = dir; + if (dir->mount_parent) { + *target = dir->mount_parent; + } struct tmpfs_internal *t = ((struct tmpfs_internal *)dir->internal)->parent; - if (!t) - return 0; + if (!t) return 0; *target = ((struct tmpfs_internal *)dir->internal)->parent->vnode; return 0; } // search component_name in dir + if (dir->mount != NULL) + dir = dir->mount->root; for (int i = 0; i < MAX_ENTRIES; i++) { struct tmpfs_internal* file_node = ((struct tmpfs_internal*)dir->internal)->child[i]; if ((file_node != NULL) & !strcmp(file_node->name, component_name)) { *target = file_node->vnode; - printf("lookup [0x%x]\n", *target); + printf("[lookup] 0x%x\n", *target); return 0; } } @@ -89,7 +93,6 @@ int tmpfs_lookup(struct vnode* dir, struct vnode** target, const char* component } int tmpfs_write(struct file* file, const void* buf, size_t len) { - printf("tmpfs_write\n"); if (((struct tmpfs_internal *)file->vnode->internal)->type != REGULAR_FILE) { printf("Write on not regular file\n"); return -1; @@ -101,7 +104,6 @@ int tmpfs_write(struct file* file, const void* buf, size_t len) { char *src = (char*)buf; size_t i = 0; for (; i < len; i++) { - printf("%c", src[i]); dest[i] = src[i]; } //dest[i] = EOF; @@ -109,7 +111,6 @@ int tmpfs_write(struct file* file, const void* buf, size_t len) { } int tmpfs_read(struct file* file, void* buf, size_t len) { - printf("tmpfs_read\n"); if (((struct tmpfs_internal *)file->vnode->internal)->type != REGULAR_FILE) { printf("Read on not regular file\n"); return -1; @@ -119,8 +120,7 @@ int tmpfs_read(struct file* file, void* buf, size_t len) { char *dest = (char*)buf; char *src = &(file_node->data[file->f_pos]); size_t i = 0; - for (; i < len && i < MAX_FILESIZE; i++) { - printf("%c", src[i]); + for (; i < len && src[i] != '\0'; i++) { dest[i] = src[i]; } file->f_pos += i; diff --git a/lab7/src/vfs.c b/lab7/src/vfs.c index dacc4f051..915bad847 100644 --- a/lab7/src/vfs.c +++ b/lab7/src/vfs.c @@ -31,9 +31,9 @@ int register_filesystem(struct filesystem *fs) { void getdir_r(struct vnode* node, const char* path, struct vnode** target_node, char* target_path) { // find next / - printf("getdir_node [0x%x]\n", node); + //printf("getdir_node [0x%x]\n", node); if (!path[0]) { - printf("getdir_ret [0x%x]\n", *target_node); + //printf("getdir_ret [0x%x]\n", *target_node); return; } int i = 0; @@ -50,16 +50,13 @@ void getdir_r(struct vnode* node, const char* path, struct vnode** target_node, int ret = node->v_ops->lookup(node, &child_node, target_path); if (ret == 0) { if (child_node->mount != NULL) { - printf("GEID_MOUNT\n"); + printf("MOUNT %x\n", child_node->mount); getdir_r(child_node->mount->root, path+i, target_node, target_path); } else { getdir_r(child_node, path+i, target_node, target_path); } } - else { - printf("getdir_ret [0x%x]\n", *target_node); - } // for (int j = 0; j < MAX_ENTRIES; j++) { // struct tmpfs_internal *child_node = node->child[j]; // if (!child_node) continue; @@ -85,11 +82,11 @@ void getdir(const char* pathname, struct vnode** target_node, char* target_path) struct vnode* rootnode = current_thread()->pwd; getdir_r(rootnode, pathname, target_node, target_path); } + printf("[Getdir] 0x%x\n", *target_node); } int vfs_open(const char *pathname, int flags, struct file **target) { // 1. Lookup pathname - printf("[Open] %s %d\n", pathname, flags); struct vnode *target_dir; char target_path[MAX_PATHNAME_LEN]; getdir(pathname, &target_dir, target_path); @@ -98,7 +95,7 @@ int vfs_open(const char *pathname, int flags, struct file **target) { // 3. Create a new file if O_CREAT is specified in flags and vnode not found // lookup error code shows if file exist or not or other error occurs struct vnode *target_file; - int lookup_res = rootfs->root->v_ops->lookup(target_dir, &target_file, target_path); + int lookup_res = target_dir->v_ops->lookup(target_dir, &target_file, target_path); if (lookup_res < 0) { if (flags & O_CREAT) { int create_res = rootfs->root->v_ops->create(target_dir, &target_file, target_path); @@ -121,9 +118,7 @@ int vfs_open(const char *pathname, int flags, struct file **target) { } int vfs_close(struct file *file) { - printf("[Close]\n"); // 1. release the file handle - //printf("[Close]\n"); if (!file) return -1; free((void*)file); // 2. Return error code if fails @@ -131,14 +126,12 @@ int vfs_close(struct file *file) { } int vfs_write(struct file *file, const void *buf, size_t len) { - printf("[Write]\n"); // 1. write len byte from buf to the opened file. // 2. return written size or error code if an error occurs. return file->f_ops->write(file, buf, len); } int vfs_read(struct file *file, void *buf, size_t len) { - printf("[Read]\n"); // 1. read min(len, readable size) byte to buf from the opened file. // 2. block if nothing to read for FIFO type // 3. return read size or error code if an error occurs. @@ -146,13 +139,13 @@ int vfs_read(struct file *file, void *buf, size_t len) { } int vfs_mkdir(const char *pathname) { - printf("[Mkdir] %s\n", pathname); struct vnode *target_dir; char target_path[MAX_PATHNAME_LEN]; getdir(pathname, &target_dir, target_path); struct vnode *child_dir; int mkdir_res = rootfs->root->v_ops->mkdir(target_dir, &child_dir, target_path); if (mkdir_res < 0) return mkdir_res; + printf("%x\n", child_dir); return 0; } @@ -160,9 +153,8 @@ int vfs_mount(const char *target, const char *filesystem) { // check mountpoint is valid struct vnode* parent_dir; char path_remain[MAX_PATHNAME_LEN]; - printf("[Mount] %s %s\n", target, filesystem); getdir(target, &parent_dir, path_remain); - + printf("MOunt parent %x\n", parent_dir); struct vnode *mount_dir; int lookup_res = parent_dir->v_ops->lookup(parent_dir, &mount_dir, path_remain); if (lookup_res < 0) return lookup_res; @@ -170,14 +162,14 @@ int vfs_mount(const char *target, const char *filesystem) { // mount fs on mountpoint struct mount *mt = (struct mount*)malloc(sizeof(struct mount)); - if (((struct tmpfs_internal *)mount_dir->internal)->type != DIRECTORY) return -1; struct filesystem* tmpfs = (struct filesystem*)malloc(sizeof(struct filesystem)); - tmpfs->name = (char*)malloc(sizeof(char) * strlen(filesystem)); + tmpfs->name = (char*)malloc(sizeof(char) * strlen(filesystem)+1); strcpy(tmpfs->name, filesystem); tmpfs->setup_mount = &tmpfs_setup_mount; tmpfs->setup_mount(tmpfs, mt); mount_dir->mount = mt; + mount_dir->mount->root->mount_parent = parent_dir; return 0; } @@ -194,7 +186,6 @@ int vfs_lookup(const char *pathname, struct vnode **target) { } int vfs_chdir(const char* pathname) { - printf("[Chdir] %s\n", pathname); if (!strcmp(pathname, "/")) { current_thread()->pwd = rootfs->root; return 0; @@ -203,7 +194,6 @@ int vfs_chdir(const char* pathname) { char path_remain[128]; path_remain[0] = '\0'; getdir(pathname, &parent_dir, path_remain); - printf("[Chdir] %s\n", path_remain); if (!strcmp(path_remain, "")) { // not found return 0; } From ae4484a7f382d9b4e73a235286910a308fcd2cee Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Sun, 5 Jun 2022 16:32:52 +0800 Subject: [PATCH 07/19] final without gc --- finalproject/make_ioctl | 2 + finalproject/make_ssd | 3 + finalproject/nand_0 | 1 + finalproject/nand_1 | 1 + finalproject/nand_10 | 1 + finalproject/nand_11 | 0 finalproject/nand_12 | 0 finalproject/nand_2 | 1 + finalproject/nand_3 | 1 + finalproject/nand_4 | 1 + finalproject/nand_5 | 1 + finalproject/nand_6 | 1 + finalproject/nand_7 | 1 + finalproject/nand_8 | 1 + finalproject/nand_9 | 1 + finalproject/ssd_fuse | Bin 0 -> 22696 bytes finalproject/ssd_fuse.c | 453 +++++++++++++++++++++++++++++++++ finalproject/ssd_fuse_dut | Bin 0 -> 17536 bytes finalproject/ssd_fuse_dut.c | 170 +++++++++++++ finalproject/ssd_fuse_header.h | 27 ++ finalproject/ssd_fuse_lab.docx | Bin 0 -> 266433 bytes finalproject/test.sh | 58 +++++ 22 files changed, 724 insertions(+) create mode 100644 finalproject/make_ioctl create mode 100644 finalproject/make_ssd create mode 100644 finalproject/nand_0 create mode 100644 finalproject/nand_1 create mode 100644 finalproject/nand_10 create mode 100644 finalproject/nand_11 create mode 100644 finalproject/nand_12 create mode 100644 finalproject/nand_2 create mode 100644 finalproject/nand_3 create mode 100644 finalproject/nand_4 create mode 100644 finalproject/nand_5 create mode 100644 finalproject/nand_6 create mode 100644 finalproject/nand_7 create mode 100644 finalproject/nand_8 create mode 100644 finalproject/nand_9 create mode 100644 finalproject/ssd_fuse create mode 100644 finalproject/ssd_fuse.c create mode 100644 finalproject/ssd_fuse_dut create mode 100644 finalproject/ssd_fuse_dut.c create mode 100644 finalproject/ssd_fuse_header.h create mode 100644 finalproject/ssd_fuse_lab.docx create mode 100644 finalproject/test.sh diff --git a/finalproject/make_ioctl b/finalproject/make_ioctl new file mode 100644 index 000000000..210920a96 --- /dev/null +++ b/finalproject/make_ioctl @@ -0,0 +1,2 @@ +gcc -Wall ssd_fuse.c `pkg-config fuse3 --cflags --libs` -D_FILE_OFFSET_BITS=64 -o ssd_fuse + diff --git a/finalproject/make_ssd b/finalproject/make_ssd new file mode 100644 index 000000000..9cc4f4399 --- /dev/null +++ b/finalproject/make_ssd @@ -0,0 +1,3 @@ +gcc -Wall ssd_fuse.c `pkg-config fuse3 --cflags --libs` -D_FILE_OFFSET_BITS=64 -o ssd_fuse +gcc -Wall ssd_fuse_dut.c -o ssd_fuse_dut + diff --git a/finalproject/nand_0 b/finalproject/nand_0 new file mode 100644 index 000000000..0c8e6ab77 --- /dev/null +++ b/finalproject/nand_0 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_1 b/finalproject/nand_1 new file mode 100644 index 000000000..a2c57761c --- /dev/null +++ b/finalproject/nand_1 @@ -0,0 +1 @@ +FXMQSMy5FzVX5EN94b4BFq8r0l7L0oWRQ7mpEZz0d82YhHVpSYrLC12x0hPUJXaKqrmUcm88Iebva7zX3ase8jE5fulgREp5iYLWG6yLz1cwIxfHyCSgTTPJHSXrIPCYzfVoajS3464SiSQB05oQ5VuENeUI9EGkf1nKVI5YtdPnuJdYqESlziV66pUawMwtW5REFcjYRoFySr8qE1FDtOUHAC9eVfBfc240diBl0WbxrsZLh3rnHYKqk90ODSBX5wphW4whs04QmK6Ct5y4U5vl8t1a2ii0caqg1LeP4PBhbHTfGDTfCgtN1FOItHUXOj9R66lwB4czPUyIGtlVanXDaAWCrxV2KCs0dIHDuTbQrRpBoeZXriE0DgSDjtOx8R6Oy2onsKdB8VVE98movl0PDMqjcMdsPUMQcEpPskadjFIIhBeSPFBRnhuMVDbKWf17yIux89Z5pXeygUCSljQQgWz2vDhkunmmztrkyltFG5US6tMCbh5LyTbiR5Jxhb4pVjzf1bSZB1mnetHUyTi8HCod14EbWOM3nkGHJuLfcJsgkgGAWxPVAWgy5UzgNWM7ex4Geh7D8S4ufG4FcVJzfw5ACn7dpuZUTSddQOTKGMh6jlHIs4hfuQckfnWFH6MielJn4INDvV7rDInyq8dpubcAPfp2N6HEUjlflFPg71daFONGR9udOhLPPM9QD4tBDeP7jRP7WWANlshxGshOlMPnfjGQTXdWlJSL50o6XNmPvwYKEbNIEGnS7BSU6s2CcJEEblgjFCzRzdNt4sXRhunOzLdLzRz8U3kV7uMzIacZPUS4ze1zrb9K2SBohYldTnobyGrBfeH1Lro0LWmYkx9hUjU4vytuxx9bVWHKhY1HYvfc1REV8R1gu1NVq8FYPC1WGJ9q7lR0BBZ32dUDztHsThMFNmX9fqmq2hQOlnfHEMafmCzX28fpDP1rAvUH5g2R1pG66bbNzgv8TTIrgFpqBu2KWEYGE8W0TGjWqE2GvK37bmWFgutiGaXF4Je1EuzWuAM5XUUQp1nEnPHwy5QLHnl0OcjhFgpZyZ9hPujQUUghOD9xEfytny1tMWnqvcB9auI57EH9J79XSFEheUKT6oXPggDJKxYk6gjF8ZvH0yx40u0aVE80BpQZsrpovWnCYIVNIlwGbLHmSOPq8Ergf6cIdFELkTJdrXofJUhMMYiwbPaHtXGRVAdWoyGNwKzyBf6CKT6ztowBiSEQ7zvzUBKw4xlNCikzc4DtDvllInMFS0U7eTuRM0FBvF0YcfIBsoWfYrUQugylGyK7phEHX2z0zWHfWFxtfKj90tbjWKTRKt5e3ZzibZ2kIt6r7DdGwn6pIqjr04EHCAJYBDcuxvTUm6onCUaiqdbKORHzBVz4kIYOfBggj9LrYzKtPojwOaQzQ3RyT6uxpX4Q8DXcDgrGSJxBw32g5QRFhCclG0aKuLrjaBvDW49R2iqbvCFD5AtQVxr93exnCrvbfVcnxRB0u2I19Q0LEMK4UfPbru5Ti7p3NRmuR13Givi305jVuZtRR3mFy8zyOlKRghL6jZQE04Lz20BymxgzTNyhEACJuhZR3rFRcYm7PyCpNxPPbsXuKqVpanMyaQW70K4LSdfYKsDPQ4FSKGbVVbKex6wGP5qxJn8aU9fWNwS7rGtOOeXyzJ4Ny8rfu8IucdptekkZb5wo6U6Ukv6o1oGzifi3az0zkET0NqDMoZBRV89Ax2IB6tYXrOelFsggMfJIahqUaqA6ID13WuMpIZWX98b1Pz8q5sCFni6szNO11VlEK5vdg7f1AOA4hDImkVG0RjeVZP9fhh5k3Go7kRFjB0CUaOXSHM3LorRixSEpCj9yOIIVqWqv6oy8UWdoaHXTkyuYCnDrNZK9r1fRvEzZXq9vHihEpasfg1EgTIoKftV2Lf18naTzkRJXPMsAYPN8tUKAWCCYX6fchiGpOJGHrzKtz5nKGwvTiS0abik9zav58sPPVuGNNrkNrjmYq7aMHz1NTd4n8Z8ZqMKqarwib7HNJAnL5wkKnsgGJzsBLbw6zg8CC69b50Gv80rZBtNDARDZ0oN5k3FCXMhnhjASD4zcpjf9cvxKtBZcxAs72uuO5frUkopcOmorpvth2exGmXqAx2xry3cypbHqkZMgc0gjYvhrrxAxIyIRVXcOXDIt2Ks0xy5azuZqJzp7Lk1o5zkWTHXn8gDcYu3D8aUogheoi2LyuAgGDhxi35fR8SQle3hlPQWmA9ACwia9jXnOG0nN4ekrFBDpsFHoVMlMMazABmSfWdwybqHUh5Sc7RwfOhaRy1o2POyge6l0Y8Zpx5jobNbpImaojbuJ7fMXpoVWppcjEdUc9OXXr8CXhmoIp8fR2mVZpzEPaZDtOdMXz9OQ7UGf8fQzIVwf8Rbzo551abfyqF6sTBFY9Ws7UkM03MLmPEXa9ILus8ju0ZErZXxk7CD9xjAAyCMhINwdgLZiWoHe2wUgQqzWVehNI1OR80Zhyd7z66p5YfmKJLk4aZwzvXZfAvDgIn7nmsm7DdvepZx3Vm35LMgrbaKKoefht7CYtznFj2fv2PExarw0z8GGCEAn9P3beEWlfnAYMzmA7ACtl5RH4mYsg4JIb7p5M1mu8WLkG0cToM4QHPLbRB7PEZVRwlaawOH14VMILXX0GHqpSzdVugyyaJVV2bgIYXm98e6IdnCZnVkxhOup6aqRR1aGC3kammmvy4S8qHLasfdosOqCt2fHCPbGeTlt6xVswvIvW13ZnQjBrMvYTt67RhkGIvfiF7Nbh8r4oBomNdUAuG9Xue5vGkihCtIBfjDxbdimf2OZ8w3iNnMQueIly0LPExtLtIyX5EYIQQdBTnzyRKjyXZitI5fnEgPOE0s9VzN2GA7BJOr5YIdlrRKeqYC8PvO6WPsLDCrut9hIvPig2PPNqG5L5ErR39vvJYCi04FmhFIJFQ7MWxDBTI5XICfw3FPTYMFm9MAwL03h0wsNRBTfGQwIjG6siHTN5GOEAbYOG92ITG5G82Zk7beWkb7OC4a9lefx48Cz0wX6BpZqfHeRk8TEor779t4a4SLyIbgUFGSp7JvMoltYAarkoAD5Aws9v7EyPbP8LJCvDcejJCZosch13UNggD6G3R3ukGoccm7b69FpXIcQoKdssw1AbCcucWBkIicTRrKEB749CLtgYjDEsBXraK7gHjYs9Zr9EqvCnX29fyypxqKg1eM5MNvZLSdtWEVazY6cNOtrXnvRiXZPs83NL3WJukxo1uBqzDbw0MUKsS7yvHFeoMwKHEHozJoCqjvFHRc0csNNdalZTZ6BPP8jvXSCKNLyARzvUBcWHY15seOeNe7dYNrfuwjScXPrrnCR1wVwD8eNRqxMW3H2qJ49Z55DHUHa4T7rNu7C4yGgefBg0sbmOznl4HE9U8vOCtwds3w0GuLO1Kbc1WfmdF0wu16JIyxkaSWt5hxl4eoMLYJ58X18tMkyWXKpVzJUgWQxfkygAT8rOv5CsBViIuPB6Lk2myksvNuAeCQKhj2HtKnFurzur1NpWPEbHgj0HgZAIJIQbgdRuKH1FZq9GoN4gX7Pzg2IWh4kpFhrQ4mJkyoBwW7OgRO9JBdoBx8NC3rkB5ItjBTFMTY1YfUYFg1GIofD6IdvK9ZUTcVaxH8yIfDXuFaQtypLsSwPHMhkm2kS3qLwW0taSQCwE1dllvdJaHTH4XNyLELePPdb9T5CKpbTcAZ0fc6Z6Oxnc0e18FOdt8k3hnmtLdvbwMQM8nMTrkazENO3aE5VNe2FXizyT6czDtsF6UNjJ5RuoZ7b8AYIU3y5lhnOQEuOAdT0bLJdSbvpg8x8Zlrj8kt1Ob5TGvNe0BmcqDGC9QzXWYViXOORQ0hb8r6JyBwO1czTVcxYqi5neZ5tNm9IKszD1jeub8edNhjJNWSRF1MQoeaSEce7uYU93oo0AxDSLmoi11VwUMLwGyaq2HQ3OoEpxUcN4ZehkWRRs0cMVAyHtJf9R6IXdY72UVx5ouWKA3cmTfCMupj8BgzKPGvj3FEezVuZQmuPkwr4mfBzs1WUEYnd3RTLNS4jHolql9AACJWSa8ajOEL6KY40j1VqlCqdYS5YK9AUQI97kPZ30tkTjV4IbG3jExrF7Zaido3404ty73PZ21NIs2KVj2fHGtS3Xd6kLfuGSnfXUI2Z3ApMZPqbwpTlSrlS5w6Dw8BUOV8WyifDCfBSANQfd4WOZhx3TrKVKMOEHxpQZgwe1VRo7esNfbRQ9wIyXwjDWWc051Mii7NrIcnWdytp5BqF0hyYFzf24xkOWoi4aNdZadi51bCLSzfuROa2hB1Hgrlg4PgHq1GXFCAL5F4hf0DoRQGHEnUkfD1auFgGTyhd6TkrKcFCJdMexqBLBe2S9u6Zsb513DgBuVMwNibPULVSHzQk4htvQZxrdvh3QEyYOclV0DVmhPDtmnJLbxsNcgnp2Z3h1yw1LPKSYvVLkLngEuAwsylMydCUyP8CLvWS2KmcApA352FPQnIugH8QWE1708KqV0pmuGxLijpvFF4KPFmwduP5nrnSIliNJbuhYhTukWLRj3ojbmUCmCRAJuUVIbQy545vFvkFvJU9wn6KVGpetNo51hwWHDrbP5C23SEgjTA38x6YNjNSxd9tJDH5METtdxOqNotuXrkKcbeo7c6kSNc6ufKKm65K6U8kqn2QT9EUAdzhDaISKakLgOV9Qv0o6MMya2gT9m7gNV8iSPjfdobTPR1EiNsrk0efwT8zo0dMNzCjbjzgTM02582uYo9Awuabcj9rPXyWrIgS8C3OJ0xn492IWSv8assIF8LbCk7GQK5LOiiCgBfnmkiT323oVQre6VQnyxD1NDF3LnWA847WIJ3DGFLQ6KuIGKyGafDvNBGeouAYOyKm12gNH6vgPYdnQB8KOy8Kiwmbzyf782IdP79C7uTzt9LkqRap8fk1hPXJwwTeTVngvdHVjBGlgh9UxnGkPyJN6MNP97qwAbyuCIOnF1gN3fW4fuRX0ufDlGZPWBrb9PsOPFYDV7nFRbt3ZbMd1IXLLarPjdof34Jigs2xwYRk8TZ08aYnQDurEt6RrIvx7WXuGojmVJsw \ No newline at end of file diff --git a/finalproject/nand_10 b/finalproject/nand_10 new file mode 100644 index 000000000..e7a6169d4 --- /dev/null +++ b/finalproject/nand_10 @@ -0,0 +1 @@ +f6dKsWgWaQXCCCRFDJhLPZ3trCOCswCknRuKLNTsIkPoVhWlY6I0hILdzJaBDo5t6Si5jSdeTQJ8if9Zbz8fahhrY0Z478nBaL4cFYRMmDb1ZWe0CA6jssLMhZalrZ3Bpzr56EFrvuvxWT8oUlOL1lP3uqGvbA169XxhoCSM8WKfxtG66tFGE1E31b84GPExiylCSjQXgXMlTtoU7Yx9lDy0cGaNWMCvWKSZSDQB8SKEERfmtuqzz9222QruUxfItyGHFBmbgbOgubd0lQFlFvCl6fRFv2bnKtuVVzI8dxLlrpWoC2r8tirvTmkjlgGIK6hQe2DJ5mdIJUU3uKGURRebdMbboq2pw9Rd2AodiuedTkmdjea9uLiMXGxptbPfSSRbZY9WtZscBgP8dNO7AYEd1uUazIH9BXs0u43dQlQKIYjIlU0MJBvYymX8df5755MvpmcRWCVNy0ahIwDXfMr926v36R7Wi0wQAMrLomTMBsAlyGiRgLlaTpfCK1kEkXn1eUx4Gs7J1FmOT4Inez2Gc6cZBNiElzXKfEKdGu9NebXl0NihEGtdqFeQLPZQIaNa1PtuLsZbMvPOnRmqRaJ0keFBvWRCd4OaRBAsCTH6ddemxNvLxbugHuR5tUj87UmJmpknPqmzJnkf7Gtd6JZM7y7h832y3rv9XD0KXPANt95zu9oXxopoGB5mhRYUinZrgqvBPwWS1ryFl0QUmX177AlYUpIFhJUKm0HzpSXWJM2IOS31cfJKAJLaQFewh93a7oPhnHtP4AoUdb0J3Ei40r4rszILBpBM3icJrHNYif4ftAPTffhDGIz8H20IjdB2bM0IDDl1vv3XR3SzSC5a8xO02ZJLsuNBih8xMNZrlj3xeXQOzlruYsYmAHWU1dolail5GSIswodY2wDracrBFMw4eV3QOAeK0mFFWdlUVQbn20M0VsqYRGfvNiiGmNmBLRqEhYLuPkz1kngptWoB5qNJKJcrrsMsQ0oSIAPp5rCTJZ90Max5hUVKfboS \ No newline at end of file diff --git a/finalproject/nand_11 b/finalproject/nand_11 new file mode 100644 index 000000000..e69de29bb diff --git a/finalproject/nand_12 b/finalproject/nand_12 new file mode 100644 index 000000000..e69de29bb diff --git a/finalproject/nand_2 b/finalproject/nand_2 new file mode 100644 index 000000000..0204d1b02 --- /dev/null +++ b/finalproject/nand_2 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_3 b/finalproject/nand_3 new file mode 100644 index 000000000..4fd9e3bd6 --- /dev/null +++ b/finalproject/nand_3 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_4 b/finalproject/nand_4 new file mode 100644 index 000000000..a3ac05e79 --- /dev/null +++ b/finalproject/nand_4 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_5 b/finalproject/nand_5 new file mode 100644 index 000000000..889b75c82 --- /dev/null +++ b/finalproject/nand_5 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_6 b/finalproject/nand_6 new file mode 100644 index 000000000..ae54a2f1c --- /dev/null +++ b/finalproject/nand_6 @@ -0,0 +1 @@ +PVFr05rQAdRa9P98PFvEebpfxybB5HAbToeuOnZG1WaPPhTzQjbvVLh8NHwcw0dUif6HsA4hgwcyzQhM201w2xn5jKsEpN7ZbFUv6AbvHIo3NlScvhTR7M8aNLbZ5iJ37aY4f0pXomK6spFtp5FAs1vf4JpPDcqNK8ENPoxg3abEc3VLQnSCYVUpujZ42JrjwGB7nw52a3qmD0c4g9ozlur3QlgeRFuOYQsNUoE4mEoVQcYVyV5xNxsWNJcserkbPflAAv8LARGBEwwQPKBdDizan8677TzOKIYp06RdKYBxmqiwEWp6ELWQ6cXTVHcCH2WLU0eOmB3EEPs2nJlp7l2kT6NELBeQFLxxciDDWsYnpTbECtk6r2W1uATFaMuHAo3dEnffYCDez2s0PfwFYvAXEJKm6yMaRJ5jYauWy4d9IX6rOYtSQBq1NZP9XCEMLCcE915oPR2Zomw0vdgn9PHRguejFal63k96foUY3vYMlzGYAElDmoheJFW2SSHiUIpopugz44244lYN5kGhyv3sj4FUQoC1d3Ae0zvTccqqjmUgqRJHgzIhRgGSMSGBAK93zXHjNatiLCsi8xoNuAapeWiHCVikQfZNP3v6XOjpuPuaN13LCJubpc77ITwHCK6AXgWbgx5Pem9T0T8QNt0poJJSVMlePZgYutTpZOdUuCL6RNiyHFxzglzNwedG90XZfd7LrjZBYcRdsJ4nieOH4zLS04RVWJZPsvNvlS51DHh3bhpFNF5xjbzwu2S53YsaGGxq0PvSMrXcHQ1AUL3iVq5O1sfJXxtZrZlMweVhh1NFpV1OEQD41EGZDUnALDk2Hrv66XY2UrRrv6aa3Uz6kFMeHX8f3Mn4AJBNGiVnA3I5cdELWygO5WCgJatN7IHVH3nbAnpnPOGVhfeRztXaZyzsy95XDFasAUPm3f5eS2O8aenWYkbG2NP3SUZGAAU9SKQIQ318su9xFfYAkooTduzDSVGsxuYmDN0YY6PnbJs8b16ouxrJzUxE1iWhEDzguQjkRxITRJTKUkJ7ijVBivaBFiJ6PwvDk4eGeSZLUYlxBFMcconaBA2vYJBVHk7wJCJcdBR5pKF0bZqQXla4JSKbopEPQghEyqfeDOLS5caEjOBsv2GsUkYysiAknTfHZH1A8TU4hFNbIR9cqfxa7WmKVVlnJdggj511S2GYbtJzSlDeGkbufAXKAiXXWuPcawTM1tJdqqgLITfXX5QnqY0MGE87REQBokOqPVMuUYnCplNPDKdd20X3xhDfenKOQYdaqvXjHrXLa1yjYDZtPmJhYEIgPNPCBqXcoHMmIuf2yScgmAPGYEHRgdbcFQ6CLLbd14TPcDFqd469h1FR3KCozhESE13WyQ1zkyOlRsCp6S8kQ7N5MVT2dEWMcejNPmHpwFzIoejSikEyf4GM3KqFPHC52vcVhWeH3NS8epIHw7s7KW9xcXElLXAuR9aVCgS4W6uCLG3Vkpq25ZBosEEdJnRs3eRV0MOn6MPS55v7uSbtefA4n97sf10xXAmZrE4jX8lfT2em1qKh1eYiwnyZ4ZxHwUN11UExMi3ZJ0xrbPXa4qek9X1hdNXcigw3Qh2ulBMcSDol38tb5ZQI3VATh76MYwVzzG3qNYtHHqp1rO3vw5lVHtopaTPWugAxWHxfGSwQGMrlSWbL49IPmBtBozZJ4MmerN5IG9D2HnBF6Kums5yUz5k7rMhIlLvvwHMwEqMgwrVIFfTgKIEtxuA9I0ceTteUaIYEproYeBBe5Npaz2Y2y18Jzu4106D5LFXCzHNsDteIJHksGNwjiyyivTQksDJJOXOEHlHQ5NwiVFxSrKA7qZf9FGafP2Z9ERYqx5r7LxqP5AhwLGjpLt1Fq3aJs1EPxTb6SJUNwpxnvI5B4H1k1kkX3tk5xPQusYQIKcU9vZg6SPo0URXoiAfZqu7V1iv56WjQZIZHOsz2y69O3DK957Ppy9j1NHnrTUI7jalSHWl1bfJVKYo3pdRhEulg8TCx8KgGlZgpfcQ1zAbRzkdE965HJsDc9PFfcQTv79JXHKhspTttB3O7d4NqmNgxEniEvZSeNkbPpX05PEtMhFoNAS1ARKSIXOx9Tz2K6vR6fkOyYaMU6veQ5pOiHRwzWfzwKaNfH6W74fMLDMis6vpqV79I2YICsylFbzMiIg8SiWSxW0MpWniNumtK1Y0YdUv72WfSnTt76iUHtV9c4WDSRPJ5qxBPFhGebmMEU0jtBLlgfhP0qWxNE8CQhiLzuyccMs6vJAz2R9lCUl8EAqMTFT6SYKqShHDeB9nxCBu22cwMcAw7fBjlYKbLfUUUTJiWJHbedzuLBuXhxMgn0cRdDBl7wVSlFu5mSNGipMUvvQm6WPzrzW5UFYKE6v8fEd2CpGej2AwPQL59qqkO2GWtDxb77EjY9nxj8OxFMj06LWqQRTRwNGWwRqHBwzD3ODb6sx1pmoxFsGrv09iANdKy5hzmPIjQMcu5eFoqRqS7BI81gI0FWr6oxfrJG2KlltXRjsPSnydDgb3uZl8R79uIUvXdln39XwWqRfGezHJF0SmtnNqUinCDIiCgLZHJYENTNle14eMV62PwOUZ2vAWbdn6ZQhUnGxKu4ZgI8N4ZmwPjlnyVyf8NMDAmn4MzzlaiF7W7R3IVV6itIRJx1DebcOoYk1rV4Md9VaZJiBDvE2IgsHeXQw3pBT0f0EDjxsjrFzWXBx24FIgJrp3jMnJ2olaJpXhRXf1iehnJY7VT3nBxU04cTiZAhzWN3HVMMJFfNT6Z6CQANumRQayKovYTta0KfpLv7JYy7N7tv9IizF1TDSh8AcF84xOdFkS8fhwIYdxgds3OxHSbK1tgxpwA83y7o0Fk7phcqhmDEceZUm6LZqWBvHSCZ2FrKwfh730Pt6levAxcdecTI106VKfwf73cM6N4weHB40NNrtAG7ZAx2tqXk94mnLcQgDb2Vw3XmjZ1f9Plr88yok6otjgqIL6OYKtC57okSMTyNNne5eqp2wlVKShpLytfWxDu31tb1CT1Y3nU4efoUwGPfO0G5ZevLt1KaSDBQNWK6iBCRgXNNh0OWVaRR9eAxVYAESagM63iKaOK67fcJyyKzq05VQujouB7WzYykaVraxsSpTW91jo2Xxf2PhtagaKQL6k4v2Iqg35HSaUkxvApD7GkQH5ueEPzCaDIN4O5w1UPlHsLi35NVWRhxt6j6BlBM1CXZ65UIUM0me4VzgY44Dsd1UnvBc2Vb6kTksLus78wi6Dsk8MqDwYUNidSH4vGuDTYkZf9Spqu5YzpgZCyaQqtYzimOgKnQEHXFaGFIegFSHBHzFIC5l9TL2KuhEVhI5MCqw8DGkFI73VLIoUGf7KDu8lUh0d2kP0hsaoUc7Yi8Fz16XCiIN34MBJxCdyS7hzh2LCxw1iKdAppvdNcWkC8BAn78wFdCIFKvGNsnGTfO84tWbxMhg7CN4Xt67U4fUc1myFFFCZDRbOVdqxtJi53nr86etT1IIUCzoj2axcOlCoakyFbCSE9xUp22hXPZfORB034WY7VOXPLFd7vPbx8geAJZERSxfw6UAidrFbL9DN4c1zxiQxOttRkXteBTmyPOEOhSYKDtY4TohdBM8Ws15Jdfz7Hr9dAQQVVkwG2ufrWBrtlyFpQ2IaerLDhCiF2Su6qKf3hjFmTqM1gSgpqRE7XeUaTDPJ35mRd1miOPx3jAA8T5VzffEywtfay96jS9qrALHm9NX0Cgj2WO8CqFYJElNTUUh2yVWsb3HJ03uXj6ryIUI6afYiyMCiYD7yeMkUMF1OGkO0uKO0aeylKnX1q0S82eVMtFs5Tf20mir2FKeEuwy6UmEvcfsX4h0ItEnjWlN0gIOZzxv47O0vlTcSOYQ7a7j9rEoKYZUiMd6vlJ0xqYcds1SDTEKJoeBlGbkKRBKmwq4eKCTYMS6W84DAGH6Qc8zoa6Ksf2RWbXpGqnEnADQS5TnZ25E22F3pEod3hQpEPe9vK5e4YqATEDdlrnH4A39XBZpJ3HigbbqbT4nAJMqIYqdAMp0tfRMqLL69CYEGcs0I9R7H6KsAYvHTjXDOSwlNriTIPYQaypLCB9IwYwkWKNCZkN2CIAjhyT7QFqi7vVx69L9FA6HthcrmBMoZVTE33uGOtBdlnTA2d9TDZgv3G7SOi7sYp3d5FN5MDc4JA8K1EHmucM4lNDflGdepgcry2X5WhQibgOjDbJ1WmcKKkxYkgQzLelmB20nHc8eiPb73HSiChUlcDt6PIr1HL3hAJ04yv6DFtJ6LxTcPinBJ68CM8u882DK5oWjDpeTisfNdXef2G9LHiKIEyPLz3Wcy5GWEYjPyiO8TcQMqlzwdRPcgUS5p072ir9G92TTFIyxw5OV2HJjVSXcyJ3pvYCPAPIDfi3ZZ3iADmCJ3fMtxiR5S5t8ujefpRVKfLFhjZBaXmqK04df95rIr8K5dvnYtryk84lp8oescgvBgShbRwmahWOOpI7AFfsN29jLvKP5LESQASzzviH1HB5BkZ4gh5k9gsCNyr8z7pdixXuK27POhSZwdR3rnnCBv1Ea9NTY2jXYiZQc0R0roqF8tcevJJBPAgHD1PgABkIQRdYNX5yOYP4ZZDt3hflfQLHU7I0stkDPGb92DE7kZqXrdA3GKywIssNeUtaCxDTrLkCz9u8WVZUVLL8cIWlQQKtsD0blsQmhJbwqe08v0ja1B0atjCBaN4Klyf8QlbzCXE8dP3C2sR6qNmYrSCAlGMrFRryTH2Mm5KFK01bH50PB2nIpwGFwMtJxr4iVGwCzzlyyqwkgiFqDm7AJAR8YCIiLY0uB7th9wXKVEf2JBgJAsACxqjisIZjdsI3d5O1XExoB03pz5nLaopamZYPGFs8KSyhUn0mSmU8MLy0x8LSIVdwK6NLpfq0cd2Fkbvdsq5O1vViMGvLeKPG9aIgnl8r1QGisqnrSWa05h5N50I5YoBGSogJrM1mmeuVLtrwRpzUqObU3fdBciNjrUN0aDEqNtj6LkM8xZmySVI8tGOLDACqJETxwgvOpYUaAw6O37mwdG7meenoZbGNjKFjFlNyabR65dAfrRfZO6XoiyH4EHF \ No newline at end of file diff --git a/finalproject/nand_7 b/finalproject/nand_7 new file mode 100644 index 000000000..04dbeb9e3 --- /dev/null +++ b/finalproject/nand_7 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_8 b/finalproject/nand_8 new file mode 100644 index 000000000..fd7e9e7dd --- /dev/null +++ b/finalproject/nand_8 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_9 b/finalproject/nand_9 new file mode 100644 index 000000000..6fd120106 --- /dev/null +++ b/finalproject/nand_9 @@ -0,0 +1 @@ +ac3rL6c1sGGUB5tx8k54FBHDgRxAUjnUbZK0RRmzyCilLaBLRQ8WDsvI9eTGRCPBMwbZUaP69YxVQ1kbppDntd9tqSkCZku46IopnsjvPq7eutt8VfRWM3Obb8JP4MLcXCgaobnIUq1nk0lKcBJhEWPqtuSrgu60H9ZfCUMag9XMEI5RuOpqbbQiRyS71CcBhLrGruO12FyNLuwvduvHAslvxaFIfvDVsfiguI6dfF6GSk8G3jdQLVOAD5YIoNYQlmuz69uNv7rprTTxm7NGXSfZA83VJeYQl7WzWiPrnyhuZbLnzU75MYO0EO7hsde1opiF5MBpDPohXWdsS40zKPfzX6dUtY2rEz6lKXIbltrrvW2sveSiDj2cEvHLQ341KxXi7pwcdOCsSqH8AO5khVp1pkxc3ZwzW9ubtFCZOrYYmlSdgIHYYdmTxZMWiyHjxClYWKdS92r9ZMasj2aJGT227jUpUBKWQy8S3aHkfypMK1d3UAfvQYsMJzwUsUboi34eMPbkRiaHcl9V3pGfYxPiLdrHTpg7bf7S19riq3pXod6ZcxYXAxAbAoZF0TGnpSYd3dPb6pSvmwZ5T4HMjg0gJh3qAXntdYUGxttMzP1IKdVqm6n5dvoud5Hp4QUScN1rLuZ89zGVbBdXgWl47e4Pc9uEd4J4Pa59FY09mrb2vDxH1pegIav8VyrD1m6gjNP7pNWSzT5vOgdm6RpqB3KEwMU6GPrZ2Bzd0NF5GfHsZSaEfVbQns6JILwG4GlXH8dJYNsYYN1a5mDprUDsZ7S5bf63G5lg27oHcVGOvf9H1gIsESjlb8rexERPdS9WtHYP1PqUKHqBcBdXMrKJ7d56QR3h8FvfwcYg8akP5tTvVHO06yXuW4BBQfclXHJaRw4pidzL5jORj6FjRmZrYARy4vs9w22bXWFSksa7QotQyDVQixtLIEA1V5X1GRy1GOVnCTUEwwKAJ2fblL8ysRy3OebLO59onG1iNgu7gL61u55Qa9Y0dUJChUlwhX1ViTUVZ1WZz3dpeSJqGUrQLeijJH2phxYhm3wbFQznhMKNX5Qy2fm8ftFREMNQj5jT6Skap1Rhui5vgFBWC3vhptjAeTOoxL7N87nxs4bNbzi199k2mR3lcZ3ytG3VQvpOLTsGkUSUYnNsCQmf4wFD0P5w9D4ZvsByXCodw819tZkFMzHEaI5Fxf9szZ6L4hNI5doFwdbonXJQxPZVRj8FahdQmC66FxgNSYRkGqEm77jRH85vVrUqBGnSkfSQFwobRyqVcXfcf7qrzEQSw1N0SU1qOKfzbPfovqQi9q1yFklwx4DWnFPsSU6A6G8BTZkcoH0aoF8xZhWfOdJtX1ADx3K5sz77Zo54Sksc4YbPnSMRTEHsiUjXprwQaYbp1p3LuRljIFUwL3nhCmQJYUSpPaCsHZo3W9q7a7IADXIG3EqVzaZybNTwClZifl02wlVQajqXxWDcxrLFK7BbBTRGDUSGIzoYkQ4VFyaennc01KfYFEgx2XXUHgZmrlGhq2ZFPLl60gqIhnFqmGJWqM7kMi0Zic4PboYFKx6Z1UkpycA6LfJ9Z5JXJ8QAB8eSvTLEV0BVJD0z57ozLyG5MCwBzTsYHYgRoTpcI3rQjGyXETCY6lJoUgWXIjdc8dfnTYprO97qO1DxKKWercAhsAGTkiGCvg5TOWlLfF6QFOJkOzmO8WOCVBBVyMklBpO1sWmvPgLedXHNemiz0wajqPcpHW2q3KrGx7zIHd60EUH5hrP3NZusE31qqRDu2AhUng7FxTAOdVfWh8VvFqPANz1bQkKDk2kZSsm9kHh6Un4XTmZZuRQs7JenxT6xrZbaLrjSHGFbizq45zpV50b0BLz7aK5NzLt36LczufVYr3ppbJRhLbRjMi76fFzvfK2tnSCZ8GFK5DCAKjElC698bd91AAq2qSxO7eM8x3K204v5RCczSr9bHsl8xIn9b5BsY2QanFvZfDqR0SyjYW9DGiaP6wzurc3Um4EnK4XmDy6xRdUJhFGe5GK3Gt6uiAfVCrgecfV5FXfSebBmf7EByBi58wmKDfcz3GQFUXtlIxQu0JDFcREWhnot6t1eqdxutBzTYPz9cSL6M9FSBj1868h5mN8ryMLij5S65b3rg2rXkuyZ3zQp1vKYFuN8haC8KmrSpWtOil8BirF04voy2eYUlQaK5Gnp6gL52n83fWsCYLCVYW7EnzZqzvfgnh5G9h7uiEi6TaNxaNtXoOlVsu6zzRVHU6i7ci0O7SyWOraPyxlh4kZBHsj9YJLZYpazvyvCwcIsWWebUWl0XvmfQR1EnCJZgynOOTBPtJf86BlltGN5wlr57zZCoAca3jCGqRH3H2mnrYlDJkxy4pWKmO3qus1q27b0J2LI1mpct5NAC9snbVbSkLkej2eoJJmwQjS6Y2RJdODPi3QIHdYXvRW7dvm9BPnr3LFvkghCQaDs3XTGBt0TOZQ580RzeCWmn1DcgYcStyTPqkW8xN3XiSckPeAzLTACfCIRLeOsbSgrT0l07PuwI7fZjOPzyBRrJHRu6fuGntE12y5cBaMfCMtyPDEyg7R477brSRiCbG6i0kYZM7PBHrzu6lpRBY4zLO0FH28ZCB0f6II2MIXbyaVQfKrsfneJRVbZgBjqk7gObkLbCqNZCp6VkbI8h9oHCTkeFbn5nK7xrXoAnjS7hJQm3wxPMRYOEA9leWilbzVdSrNZY6X5DyskD86BwsrvGtcAJ1kvB6jPzzUf4KrVVxQPH2DhdubmMOuuyJLenwaWGt6N4GMlsvBmdzV58giasx2zN5NaUgLMyw3tbNW31iBdf69orkaCN0vRlfqhit28jQ0h5LnKl5VIC6bNXxYjwnOtqOzlJXFaX1qopocbTaoWnPOnalq8c4PezgMrILDhAj9zFgXYZbFuJHSoyY1PIylngSvGGnx77zASAp0bG3ZqY0SNIpi0Hdw3jZqVJ6EkoC4Q6F65WD0UZp9cS7mtztsM6peNK14bBtPcifkoqEbfg9qsB1seeipDSKgYVjY1OmgmSsrKSAy4o1tqia0fkDj7nKujW9fJZJll6amFly549qE7ZKuLta9iTs6DNUYRydcw7Ub1EEppI1rZOpEUKLeK4B1Q4pKGAXi47ssJ2ruGAt7PaWzD6vu9nGdaoNQagZnhtvZYR5zcBeuKeMIpjKyte5hnIIIjDPKcldLOfbmGQJaFlMlZ9jKiUUoSQpMXrfOsPOBo0y4gm0U0kgQS8I4Fte90gveuj30j74b8m6Be9VezZsm2yHKbPCkG038XGaEWpsqU7eHlj7CCauLmutL4VniJJcIQOyGUBmtpyhrSIG01ydVXMZEmgeSmxQneKIFOJbWbk5rLruohT5BQXHxteToVziNLuVhCujBAhQ3PWuYnzqPnI5Ii390h2GUIXNMgjFRquOwmpPLiSrKYzHkmo6gMFvtajmubqThl5pSOB8tdF1n7G393QBJ2lDLCAodPzZfxzpVhyC5f9GCtaHAJY6r5tZnvivekDAnwZldO43oLZwI7V3rv0LYNCwIn9cojv8eQKnsff6KFLmQtzNSBaJLxNpXC152E0iKyLSd1D7GbZfd1EGliiTeyymPI5mMbhXZ4MUAPyrGBTFASsUW1bGF7NmH9uyeS78GhEsoPZDS7JrTTrXvYeqozWe8JdiqhwttLJ6d98NqN0AK7X77TW39uQVtAuOKkavobnod2K6G79aAaxQtgm0s77IvLfYRhWooIbragOqQDHmrdjQySgorOImYG36QNA7TkIhTjSU47rawq2DvSPmLIffvI9QZR4VpnTMCgkOBwQXbc0Q01Br0zqYGVI0O8xIpNwgqv2iWDUEvzCR2vGVUa4eEnKRvxASZuBDlcFDGgezkgrLW7clZdmE1mO0Kl6WcGFjPFzETKV46enSkhzwlspGz0TXJka7NZ1z6npJlJ2XnYM7ENAarZQNM9NirRbzB6kAYHNvsEUK7K5TB82EKnAlJIzXxcnH2Tz4jhSuJz2lsfa0qenY0ENu4Cr8dRcn3Q11gggNViM9lBISO6de8jn0dWwg6h2juVjq9JyK27P19mQnGuDn30NNwurQu3E5fZJNmPkDG6WfiMIiR9ZwKlDo2WsAQsZ9KNqcW8S2GK9kXXlRwSPFg3oDI0Ec75JJasC4qHAsh3Fe6iwHwWJ5vX3vLDs5Wrul0ijQcssO6aOWGUfgTNHcwEzpJctpUzlcvUA9hQgofpMbcjV8he6gjFJ9VMRZrbOm9idKqzethAzgiVjovfWtDF9FkP1J50yLEaEKIECgGGm7dembk6UlyTUKB8R2wCw0fU81zFsPF6t5nK3raNsDE9UAtPq0OPIg5cF7JKsU8QZGhvT3ydq2KFe1UrjXiGEnyEKr7iQuD22CJWbmpIrixyqZWXpNsAJJhIouOeOi3Oz5VmIdYzmzBtw57Gg2KzePL3z9PjfTcgjDKXZEOdwtuQEdmIxqLeGefIho32PX6KmPMy09BFnMXRi77gVHdb0QveGUDqwBLVnyrIHE3u2cy4AVQlq9LanAMrKbl3GT7osu9EJ7rsWxgyEhwvcyQH9ySPEcOTrCDERkWt7IOgjKn73ZLwuZTk7F6NUgFnQR1oVHPyt7GCKu7IltubfdmB6mf4a2mdVptv0Qqez2Fh5i8hG2vdhjePYmE4ZTYduuKi7BhRTxeiUPiKTPbsP0V8EDD5HYIiGAAwfOO4y1SE3A0PIPLnB5nwxtGOaCcGwMsgBGVV7TqmtfP3NTWvl92J7Eh5fHwNgnX62g0ev0W8AlSXw8VaYXIL3Yqlqr9Le6b9KqRbtlYNN6k2pFyQDPP6yCJHEmQSHMfbFy3Id7Z8CDgicH57ZOayerS3TN5fc7zefd2x6dko8p8tgBlIcxHRCZSmZXJTjFXTMJc9khFj5dpBhiFvBQcKLihPOytKqLytdTb8yICoiSoFBVPP71CazVSmJLBsDouYt3TvNMwtUVNtT8TLrPfvafXF0Qkq1AgwA8u6vj2W63Sug5x6Z1GmMAx8kuPCreqIYo0WBBrlUD4dX7555sVZSdB19sVSu9b8JOxo21QnXa0JDihhSzSu4EeWqEi6LURr85tp81aI \ No newline at end of file diff --git a/finalproject/ssd_fuse b/finalproject/ssd_fuse new file mode 100644 index 0000000000000000000000000000000000000000..6241c18cc175dc3565dce85e259d94408abf8c12 GIT binary patch literal 22696 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 bf + This program can be distributed under the terms of the GNU GPLv2. + See the file COPYING. +*/ +#define FUSE_USE_VERSION 35 +#include +#include +#include +#include +#include +#include +#include +#include +#include "ssd_fuse_header.h" +#define SSD_NAME "ssd_file" +enum +{ + SSD_NONE, + SSD_ROOT, + SSD_FILE, +}; + + +static size_t physic_size; +static size_t logic_size; +static size_t host_write_size; +static size_t nand_write_size; + +typedef union pca_rule PCA_RULE; +union pca_rule +{ + unsigned int pca; + struct + { + unsigned int lba : 16; + unsigned int nand: 16; + } fields; +}; + +PCA_RULE curr_pca; +static unsigned int get_next_pca(); + +unsigned int* L2P,* P2L,* valid_count, free_block_number; + +static int ssd_resize(size_t new_size) +{ + //set logic size to new_size + if (new_size > NAND_SIZE_KB * 1024) + { + return -ENOMEM; + } + else + { + logic_size = new_size; + return 0; + } + +} + +static int ssd_expand(size_t new_size) +{ + //logic must less logic limit + + if (new_size > logic_size) + { + return ssd_resize(new_size); + } + + return 0; +} + +static int nand_read(char* buf, int pca) +{ + char nand_name[100]; + FILE* fptr; + + PCA_RULE my_pca; + my_pca.pca = pca; + snprintf(nand_name, 100, "%s/nand_%d", NAND_LOCATION, my_pca.fields.nand); + + //read + if ( (fptr = fopen(nand_name, "r") )) + { + fseek( fptr, my_pca.fields.lba * 512, SEEK_SET ); + fread(buf, 1, 512, fptr); + fclose(fptr); + } + else + { + printf("open file fail at nand read pca = %d\n", pca); + return -EINVAL; + } + return 512; +} +static int nand_write(const char* buf, int pca) +{ + char nand_name[100]; + FILE* fptr; + + PCA_RULE my_pca; + my_pca.pca = pca; + snprintf(nand_name, 100, "%s/nand_%d", NAND_LOCATION, my_pca.fields.nand); + + //write + if ( (fptr = fopen(nand_name, "r+"))) + { + fseek( fptr, my_pca.fields.lba * 512, SEEK_SET ); + fwrite(buf, 1, 512, fptr); + fclose(fptr); + physic_size ++; + valid_count[my_pca.fields.nand]++; + } + else + { + printf("open file fail at nand (%s) write pca = %d, return %d\n", nand_name, pca, -EINVAL); + return -EINVAL; + } + + nand_write_size += 512; + return 512; +} + +static int nand_erase(int block_index) +{ + printf("[NAND ERASE]\n"); + char nand_name[100]; + FILE* fptr; + snprintf(nand_name, 100, "%s/nand_%d", NAND_LOCATION, block_index); + fptr = fopen(nand_name, "w"); + if (fptr == NULL) + { + printf("erase nand_%d fail", block_index); + return 0; + } + fclose(fptr); + valid_count[block_index] = FREE_BLOCK; + return 1; +} + +static unsigned int get_next_block() +{ + for (int i = 0; i < PHYSICAL_NAND_NUM; i++) + { + if (valid_count[(curr_pca.fields.nand + i) % PHYSICAL_NAND_NUM] == FREE_BLOCK) + { + curr_pca.fields.nand = (curr_pca.fields.nand + i) % PHYSICAL_NAND_NUM; + curr_pca.fields.lba = 0; + free_block_number--; + valid_count[curr_pca.fields.nand] = 0; + return curr_pca.pca; + } + } + return OUT_OF_BLOCK; +} +static unsigned int get_next_pca() +{ + if (curr_pca.pca == INVALID_PCA) + { + //init + curr_pca.pca = 0; + valid_count[0] = 0; + free_block_number--; + return curr_pca.pca; + } + + if(curr_pca.fields.lba == 9) + { + int temp = get_next_block(); + if (temp == OUT_OF_BLOCK) + { + return OUT_OF_BLOCK; + } + else if(temp == -EINVAL) + { + return -EINVAL; + } + else + { + return temp; + } + } + else + { + curr_pca.fields.lba += 1; + } + return curr_pca.pca; + +} + + +static int ftl_read( char* buf, size_t lba) +{ + // TODO + nand_read(buf, L2P[lba]); +} + +static int ftl_write(const char* buf, size_t lba_range, size_t lba) +{ + // TODO + printf("[Free block]: %d\n", free_block_number); + L2P[lba] = get_next_pca(); + P2L[(L2P[lba] & 0xFFFF0000)*10 + (L2P[lba] & 0xFFFF)] = lba; + + nand_write(buf, L2P[lba]); +} + + + +static int ssd_file_type(const char* path) +{ + if (strcmp(path, "/") == 0) + { + return SSD_ROOT; + } + if (strcmp(path, "/" SSD_NAME) == 0) + { + return SSD_FILE; + } + return SSD_NONE; +} +static int ssd_getattr(const char* path, struct stat* stbuf, + struct fuse_file_info* fi) +{ + (void) fi; + stbuf->st_uid = getuid(); + stbuf->st_gid = getgid(); + stbuf->st_atime = stbuf->st_mtime = time(NULL); + switch (ssd_file_type(path)) + { + case SSD_ROOT: + stbuf->st_mode = S_IFDIR | 0755; + stbuf->st_nlink = 2; + break; + case SSD_FILE: + stbuf->st_mode = S_IFREG | 0644; + stbuf->st_nlink = 1; + stbuf->st_size = logic_size; + break; + case SSD_NONE: + return -ENOENT; + } + return 0; +} +static int ssd_open(const char* path, struct fuse_file_info* fi) +{ + (void) fi; + if (ssd_file_type(path) != SSD_NONE) + { + return 0; + } + return -ENOENT; +} +static int ssd_do_read(char* buf, size_t size, off_t offset) +{ + int tmp_lba, tmp_lba_range, rst ; + char* tmp_buf; + + //off limit + if ((offset ) >= logic_size) + { + return 0; + } + if ( size > logic_size - offset) + { + //is valid data section + size = logic_size - offset; + } + + tmp_lba = offset / 512; + tmp_lba_range = (offset + size - 1) / 512 - (tmp_lba) + 1; + tmp_buf = calloc(tmp_lba_range * 512, sizeof(char)); + + for (int i = 0; i < tmp_lba_range; i++) { + // TODO + ftl_read(tmp_buf+512*i, tmp_lba+i); + } + + memcpy(buf, tmp_buf + offset % 512, size); + + + free(tmp_buf); + return size; +} +static int ssd_read(const char* path, char* buf, size_t size, + off_t offset, struct fuse_file_info* fi) +{ + (void) fi; + if (ssd_file_type(path) != SSD_FILE) + { + return -EINVAL; + } + return ssd_do_read(buf, size, offset); +} +static int ssd_do_write(const char* buf, size_t size, off_t offset) +{ + int tmp_lba, tmp_lba_range, process_size; + int idx, curr_size, remain_size, rst; + char* tmp_buf; + + host_write_size += size; + if (ssd_expand(offset + size) != 0) + { + return -ENOMEM; + } + + tmp_lba = offset / 512; + tmp_lba_range = (offset + size - 1) / 512 - (tmp_lba) + 1; + printf("%d %d\n", tmp_lba, tmp_lba_range); + + process_size = 0; + remain_size = size; + curr_size = 0; + + tmp_buf = malloc(512); + for (idx = 0; idx < tmp_lba_range; idx++) + { + // TODO + ftl_read(tmp_buf, tmp_lba+idx); + if (idx == 0) { + if (offset % 512) + process_size = offset % 512; + else + process_size = 512; + memcpy((char *)tmp_buf+512-process_size, (char *)buf+curr_size, process_size); + } + else if (idx == tmp_lba_range-1) { + process_size = remain_size; + memcpy((char *)tmp_buf, (char *)buf+curr_size, process_size); + } + else { + process_size = 512; + memcpy((char *)tmp_buf, (char *)buf+curr_size, process_size); + } + + curr_size += process_size; + remain_size -= process_size; + ftl_write(tmp_buf, 0, tmp_lba+idx); + } + free(tmp_buf); + return size; +} +static int ssd_write(const char* path, const char* buf, size_t size, + off_t offset, struct fuse_file_info* fi) +{ + + (void) fi; + if (ssd_file_type(path) != SSD_FILE) + { + return -EINVAL; + } + return ssd_do_write(buf, size, offset); +} +static int ssd_truncate(const char* path, off_t size, + struct fuse_file_info* fi) +{ + (void) fi; + memset(L2P, INVALID_PCA, sizeof(int) * LOGICAL_NAND_NUM * PAGE_PER_BLOCK); + memset(P2L, INVALID_LBA, sizeof(int) * PHYSICAL_NAND_NUM * PAGE_PER_BLOCK); + memset(valid_count, FREE_BLOCK, sizeof(int) * PHYSICAL_NAND_NUM); + curr_pca.pca = INVALID_PCA; + free_block_number = PHYSICAL_NAND_NUM; + if (ssd_file_type(path) != SSD_FILE) + { + return -EINVAL; + } + + return ssd_resize(size); +} +static int ssd_readdir(const char* path, void* buf, fuse_fill_dir_t filler, + off_t offset, struct fuse_file_info* fi, + enum fuse_readdir_flags flags) +{ + (void) fi; + (void) offset; + (void) flags; + if (ssd_file_type(path) != SSD_ROOT) + { + return -ENOENT; + } + filler(buf, ".", NULL, 0, 0); + filler(buf, "..", NULL, 0, 0); + filler(buf, SSD_NAME, NULL, 0, 0); + return 0; +} +static int ssd_ioctl(const char* path, unsigned int cmd, void* arg, + struct fuse_file_info* fi, unsigned int flags, void* data) +{ + + if (ssd_file_type(path) != SSD_FILE) + { + return -EINVAL; + } + if (flags & FUSE_IOCTL_COMPAT) + { + return -ENOSYS; + } + switch (cmd) + { + case SSD_GET_LOGIC_SIZE: + *(size_t*)data = logic_size; + return 0; + case SSD_GET_PHYSIC_SIZE: + *(size_t*)data = physic_size; + return 0; + case SSD_GET_WA: + *(double*)data = (double)nand_write_size / (double)host_write_size; + return 0; + } + return -EINVAL; +} +static const struct fuse_operations ssd_oper = +{ + .getattr = ssd_getattr, + .readdir = ssd_readdir, + .truncate = ssd_truncate, + .open = ssd_open, + .read = ssd_read, + .write = ssd_write, + .ioctl = ssd_ioctl, +}; +int main(int argc, char* argv[]) +{ + int idx; + char nand_name[100]; + physic_size = 0; + logic_size = 0; + curr_pca.pca = INVALID_PCA; + free_block_number = PHYSICAL_NAND_NUM; + + L2P = malloc(LOGICAL_NAND_NUM * PAGE_PER_BLOCK * sizeof(int)); + memset(L2P, INVALID_PCA, sizeof(int) * LOGICAL_NAND_NUM * PAGE_PER_BLOCK); + P2L = malloc(PHYSICAL_NAND_NUM * PAGE_PER_BLOCK * sizeof(int)); + memset(P2L, INVALID_LBA, sizeof(int) * PHYSICAL_NAND_NUM * PAGE_PER_BLOCK); + valid_count = malloc(PHYSICAL_NAND_NUM * sizeof(int)); + memset(valid_count, FREE_BLOCK, sizeof(int) * PHYSICAL_NAND_NUM); + + //create nand file + for (idx = 0; idx < PHYSICAL_NAND_NUM; idx++) + { + FILE* fptr; + snprintf(nand_name, 100, "%s/nand_%d", NAND_LOCATION, idx); + fptr = fopen(nand_name, "w"); + if (fptr == NULL) + { + printf("open fail"); + } + fclose(fptr); + } + return fuse_main(argc, argv, &ssd_oper, NULL); +} diff --git a/finalproject/ssd_fuse_dut b/finalproject/ssd_fuse_dut new file mode 100644 index 0000000000000000000000000000000000000000..28f3b971fc02a4f30f90238dc959c15ebfc0f479 GIT binary patch literal 17536 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 literal 0 HcmV?d00001 diff --git a/finalproject/ssd_fuse_dut.c b/finalproject/ssd_fuse_dut.c new file mode 100644 index 000000000..5e3591660 --- /dev/null +++ b/finalproject/ssd_fuse_dut.c @@ -0,0 +1,170 @@ +/* + FUSE ssdlient: FUSE ioctl example client + Copyright (C) 2008 SUSE Linux Products GmbH + Copyright (C) 2008 Tejun Heo + This program can be distributed under the terms of the GNU GPLv2. + See the file COPYING. +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ssd_fuse_header.h" +#include +const char* usage = + "Usage: ssd_fuse SSD_FILE COMMAND\n" + "\n" + "COMMANDS\n" + " l : get logic size \n" + " p : get physical size \n" + " r SIZE [OFF] : read SIZE bytes @ OFF (dfl 0) and output to stdout\n" + " w SIZE [OFF] : write SIZE bytes @ OFF (dfl 0) from random\n" + " W : write amplification factor\n" + "\n"; +static int do_rw(FILE* fd, int is_read, size_t size, off_t offset) +{ + char* buf; + int idx; + ssize_t ret; + buf = calloc(1, size); + + if (!buf) + { + fprintf(stderr, "failed to allocated %zu bytes\n", size); + return -1; + } + if (is_read) + { + printf("dut do read size %ld, off %d\n", size, (int)offset); + fseek( fd, offset, SEEK_SET ); + ret = fread( buf, 1, size, fd); + if (ret >= 0) + { + fwrite(buf, 1, ret, stdout); + } + } + else + { + for ( idx = 0; idx < size; idx++) + { + buf[idx] = idx; + } + printf("dut do write size %ld, off %d\n", size, (int)offset); + fseek( fd, offset, SEEK_SET ); + printf("fseek \n"); + ret = fwrite(buf, 1, size, fd); + //arg.size = fread(arg.buf, 1, size, stdin); + fprintf(stderr, "Writing %zu bytes\n", size); + } + if (ret < 0) + { + perror("ioctl"); + } + + free(buf); + return ret; +} +int main(int argc, char** argv) +{ + size_t param[2] = { }; + size_t size; + char cmd; + char* path; + FILE* fptr; + int fd, i, rc; + + if (argc < 3) + { + goto usage; + } + path = argv[1]; + cmd = tolower(argv[2][0]); + cmd = argv[2][0]; + argc -= 3; + argv += 3; + for (i = 0; i < argc; i++) + { + char* endp; + param[i] = strtoul(argv[i], &endp, 0); + if (endp == argv[i] || *endp != '\0') + { + goto usage; + } + } + switch (cmd) + { + case 'l': + fd = open(path, O_RDWR); + if (fd < 0) + { + perror("open"); + return 1; + } + if (ioctl(fd, SSD_GET_LOGIC_SIZE, &size)) + { + perror("ioctl"); + goto error; + } + printf("%zu\n", size); + close(fd); + return 0; + case 'p': + fd = open(path, O_RDWR); + if (fd < 0) + { + perror("open"); + return 1; + } + if (ioctl(fd, SSD_GET_PHYSIC_SIZE, &size)) + { + perror("ioctl"); + goto error; + } + printf("%zu\n", size); + close(fd); + return 0; + case 'r': + case 'w': + if ( !(fptr = fopen(path, "r+"))) + { + perror("open"); + return 1; + } + rc = do_rw(fptr, cmd == 'r', param[0], param[1]); + if (rc < 0) + { + goto error; + } + fprintf(stderr, "transferred %d bytes \n", rc); + + fclose(fptr); + return 0; + case 'W': + fd = open(path, O_RDWR); + if (fd < 0) + { + perror("open"); + return 1; + } + double wa; + if (ioctl(fd, SSD_GET_WA, &wa)) + { + perror("ioctl"); + goto error; + } + printf("%f\n", wa); + close(fd); + return 0; + } +usage: + fprintf(stderr, "%s", usage); + return 1; +error: + + return 1; +} \ No newline at end of file diff --git a/finalproject/ssd_fuse_header.h b/finalproject/ssd_fuse_header.h new file mode 100644 index 000000000..083d2e849 --- /dev/null +++ b/finalproject/ssd_fuse_header.h @@ -0,0 +1,27 @@ +/* + FUSE-ioctl: ioctl support for FUSE + Copyright (C) 2008 SUSE Linux Products GmbH + Copyright (C) 2008 Tejun Heo + This program can be distributed under the terms of the GNU GPLv2. + See the file COPYING. +*/ +#include +#include +#include +#define PHYSICAL_NAND_NUM (13) +#define LOGICAL_NAND_NUM (10) +#define NAND_SIZE_KB (50) +#define INVALID_PCA (0xFFFFFFFF) +#define INVALID_LBA (0xFFFFFFFF) +#define FREE_BLOCK (0xFFFFFFFF) +#define OUT_OF_BLOCK (0xFFFF) +#define FULL_PCA (0xFFFFFFFE) +#define PAGE_PER_BLOCK (10) +#define NAND_LOCATION "/mnt/c/Users/USER/Desktop/osdi/osc2022/finalproject" + +enum +{ + SSD_GET_LOGIC_SIZE = _IOR('E', 0, size_t), + SSD_GET_PHYSIC_SIZE = _IOR('E', 1, size_t), + SSD_GET_WA = _IOR('E', 2, size_t), +}; diff --git a/finalproject/ssd_fuse_lab.docx b/finalproject/ssd_fuse_lab.docx new file mode 100644 index 0000000000000000000000000000000000000000..852071cbfbaacd622ed05584b6de6532bf562b8b GIT binary patch literal 266433 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 ${GOLDEN} 2> /dev/null + ;; + "test2") + cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 51200 | tee ${SSD_FILE} > ${GOLDEN} 2> /dev/null + cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 11264 > ${TEMP} + for i in $(seq 0 9) + do + dd if=${TEMP} skip=$(($i*1024)) of=${GOLDEN} oflag=seek_bytes seek=$(($i*5120)) bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} skip=$(($i*1024)) of=${SSD_FILE} oflag=seek_bytes seek=$(($i*5120)) bs=1024 count=1 conv=notrunc 2> /dev/null + done + dd if=${TEMP} skip=10240 of=${GOLDEN} oflag=seek_bytes seek=0 bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} skip=10240 of=${SSD_FILE} oflag=seek_bytes seek=0 bs=1024 count=1 conv=notrunc 2> /dev/null + ;; + *) + printf "Usage: sh test.sh test_pattern\n" + printf "\n" + printf "test_pattern\n" + printf "test1: Sequential write whole SSD size(51200bytes)\n" + printf " test basic SSD read & write\n" + printf "test2:\n" + printf " 1: Sequential write whole SSD size(51200bytes)\n" + printf " 2: Override 0, 1, 10, 11, 20, 21, 30, 31, 40, 41, 50, 51, 60, 61, 70, 71, 80, 81, 90, 91 page \n" + printf " 2: Override 0, 1 page \n" + printf " test GC's result\n" + return + ;; +esac + +# check +diff ${GOLDEN} ${SSD_FILE} +if [ $? -eq 0 ] +then + echo "success!" +else + echo "fail!" +fi + +echo "WA:" +./ssd_fuse_dut /tmp/ssd/ssd_file W +rm -rf ${TEMP} ${GOLDEN} \ No newline at end of file From a8c2c6cfa69f2fce893b9d8bd8bfdc2326e9ea68 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Mon, 6 Jun 2022 01:44:51 +0800 Subject: [PATCH 08/19] finish gc --- finalproject/nand_0 | 1 - finalproject/nand_1 | 2 +- finalproject/nand_10 | 2 +- finalproject/nand_11 | 1 + finalproject/nand_2 | 2 +- finalproject/nand_3 | 2 +- finalproject/nand_4 | 2 +- finalproject/nand_5 | 2 +- finalproject/nand_6 | 2 +- finalproject/nand_7 | 2 +- finalproject/nand_8 | 2 +- finalproject/nand_9 | 2 +- finalproject/ssd_fuse | Bin 22696 -> 35736 bytes finalproject/{ssd_fuse.c => ssd_fuse.cpp} | 78 ++++++++++++++++++---- 14 files changed, 76 insertions(+), 24 deletions(-) rename finalproject/{ssd_fuse.c => ssd_fuse.cpp} (79%) diff --git a/finalproject/nand_0 b/finalproject/nand_0 index 0c8e6ab77..e69de29bb 100644 --- a/finalproject/nand_0 +++ b/finalproject/nand_0 @@ -1 +0,0 @@ -M73QOtkKVmlDnUE1qqNbq1o1t9VRPJwqdRSCDIogpP9YL4qy9ti4zDKlL4hSopkBjU9ZCxZ1nwTuuFHUxVkfN8QqUOmTW3dX863a34fH4JHJ9HDMQ91EmRomUH0teC5vAotOwK1MJWaZKKBiglIzHoCB3sjvD48hJbIErplOsJky8nJawRbOhpjzUYTB78w1abcGaP9q0LRbtSP45wKpU27ggTSIrwB1ToTryDSIOT6f0EraomBSsuelgyMuLAjlXcdcq1xesR2ITM6aKGd7ePZZANJwrlOaDBHQiLdT5zKAY8c0cZtf422JZFTKXKoLAgxWY4MSWgjGGBhuE3BiWIwFaCtY75AgahUcJnEJsOWZOqIMoE4IasjZANfql2jTEiYqylRV2jHlfxH98wuQEGYDY1cs2BYC4s4HfTCfzMNYf7J1952cpSSX1PyvG0BlRwSSAahX0WMR0eCMZHOMub133CFQgCtkORAQktTr2BUL0bYr5NT9RYsZAh2x4E5xZeA1WGMk9dXemdC7M1NmXKcV74Yx8gZb3gFBkR9VFLz215pRa4rg6My34MCx2n8ikHoj4isg5sQSub7VRdcdrsNx1C3UIxVgpUsemM2P3SoXZUYA4mZ8D7Ra2WYd4O6SozabTmYuttFxntivZnIagOA344BzMP0mX0UFwf9r4MsXULwcsqLYVt0jpmsJm6iwgW9MOiWxBCxKYcJw1acAIiwg1phUz9Sr8llk7OoBAjqxqHYdif1QnDANl0mDPumnJKPzAAKJK5vYNEESWh7k8BZ5dly0HpLaipAR1FMJv8V4c0AJ5mAj0DkJUvOvMBfaHieuOnxge2DoLty7ThimUg1C7goE4B9EVPoIbgOQyR8NW1a30yB2EMniQwYywgmxjJQVnBGkj3Lc8MOe368Yej5l8Kr20jeYwQ1tMdhfhkF47iTqAjEKwIDMtbHZojkb7DSzqBEQZbfo7y3Rj7zs3b1hFv7UiSiCXELSLkRvrIDrVcEEr5H0XIe0cFkmpGWIieBoZVQxgwshPLUeZu1RLvnfiB9q9ORlvbOdGgcCeXu2TihNlqg04GHByaHCssTtsLLTcRZ1KKKbpSGDmoBkKdkw448kQlTVBgh6fv7FoR5ijyucUkWzQAKoTRi0SLtsiDO8Cay3Vfi6oprP7WOInbe8fXOy7TrKfUW4XzIH5QaDp9ZXgBMFoNPYPX6PYRBsPG5pyWAyr7HWQhVKuBzyd70tERw7sK59LslVAe4q1Fz5OlBXqfQgzvZkPZkEfJpvUEPYrnOknpr6gK4x519FAjuwDo0sIO7kxmjeHo9ThTbJ0C9kN4BlgY0eq4YHiN0LA2g1RsyqROsN5GqaRyxweBZZqOW7ZFyKGiIvjTqftjJ5RlqvNVZ7gL582VqPpuuRMwLjz2jSm6sDln4UNr6idjP5vEgnG378kFrtSchhFgvOB5CcgSRJpElsMPWTtAhRk4JuVKupcvezgRJu9UjgNqnyPsvFG0qyJtjDjwDJR2WK9D6fQ2YWdRQENUDEeTSnDtViVZhlrXiDMfJcjRFyyBPq7Szbkm5IExxlCb7u3Un0iUnosTiL34nkzZut2nvbSDv3z9uC7JEVxsm8jeomd0gBPqjlL5vjA5P2HKERS7d4gIA6YDSBTQGXhDAyx1NDrcACXHjn0VtT8ugFCAlEGP7z3Uq1rhdSgiP0zgmeSMManCzx3tD45a2nPxjJJR3sAxvDLgwoNMkxm9vhSpnBdRB8D4JSvAdegi5mimrGa4q60h2uvJm8DnLNLjHqxINR2FSw4Vrz0qcnuKd9LURuvrzUxMwvlNjmZatyWrJt6keeDGwxQxvdFAfveiq9kClCumcf3XugYKZQrRrzn9FAzYszv2Xzca817QIh39DxhJ57eGJu2cUf0EgAvow3Nnmrtk3yQu6fcTelSH1PimM6ASID9FUP1338djBCDLMs50lfhUodUUibKBnK0yXphON8yz0AAAo23NY1uT8nuu0PZxFN1Q6y2j7NQSLRw45hqEWcTTjnUTQQfvgFYPGOrKpOyV7XfIEhdlL1lZ4qg1ejftFeZtos82fkM48TEPcOUmUGmTQo5RrhPNKO5864gYqjwb48QywoHPwn31a62mSPwVSdwKUnLlZqC7D4MywhtsEsPN6577K2Lhqd9GuC8ReI803AScOT9IJ0evVEFkZayytr0kV9l0lP0I2okzyzWDSEGKIUOVCwGkmUiSKZNgd4kQLA6WEYReDssTgYPHoLh1zVbnvROlCVySR3KORMNQF1FiQAxkLsm9ifhWtajnUVjCaKGN070JWX1xBqh96GyuKIyy9eIAVWBUp6e7EEmpH0P0tA3MQFaydmfzs1IEgYdUxMsNVuvY3veTnlJogKjcrg8LBYDdzOwr8L8gWkh1Pqj5jRJZH5aMmTevx3v2CtYMJKo9ENoJwdonuCWnpRXrBmOxrjGoXxuISqtVhOVSZ4D6H2AUnaIhkXqhUTmBCNGg2D3U0I9uoxgZz7ZYk6pOzpkEdKMWaeTDrSU0WP4KoyD8Tu7xvq0zu2TMIDQqCCZB4fCFzEvpAn6AufeEBnajQZbALFFHeXfgTuqu8KyFDlFSuwrooWJHSOpGiDtCPHpbQZsJptygPCllBRvHOKAdXJlKF3iyzuvvFkBLAlbSHCl6KVFFBYHlaTuu0IPC371QjylVcEEzbzXFoASgP26sK5wra87hrGLrOSMIdpCAWYoWZwt7WPWhPgKEDbm6Tb19iZAiFwg1os3xxHMhN7kst72jDq4pNbrKwncmCDgjHvKUlvrQFZBgqlZivC41urDdhXVga3c67Sljtpz0sjv0DNYi0S5L7cmD6PQ6yPGPVB5PuUjIZu6TBUIt6fJxR4g2dTR1x0hb8eu0ZQonxX2sBc1B81KUa3gu0FT5dl9Kr2d0JUgqMKnXZHeqnD4CK9aQnPFvQ5jIgGOOIeubIxDR9Ek5znl8EYGE7rVZWl2vg9hBOmpO8OnaZcvFW0B7rrmm4nIIEPy9AuibfOlwBYrCRofQ3a2hOhCueio20ZyD5XqjmZP9jSdRWs3cJ0ttUdrPZx5iMkIGBE3WtCF9ijaeTLHHbHhA1IeubedNtid8tCOMcSZrigCRkFRRTorzsFNtFeu5OyyCqNE0r1Fchj8qMjDo53isuLZY16Ldyi16UP5RCO0Rl1WRG71ZUlRHuUE3QWplVWsxqcINLJ6GGurqcNN4hYNBAqt8mTjvVgFegUfiKl0N7I41mO6TvvWj5JdmooFCKosKpAukBtOVQquLMQkmzumYuqFuGNU6DAPzliAqdPj06Iw1hnB4x3RP8LNXk3i3NXIr8ZMnnge4aLW0PNV545qvLtkyhsFXaG24X6iZ3GAL1kqc9JnmTN9P8v7mSCE6P036tlx8N4gIcgPxve87DdzvuQFQKgX7jczeNFhSvOZqrt6skOTFQXMIcqWedRy1NGE0LJdfKEk5A5AnhfXLu9dur8kFdJpCCPkDBLgwMdtLG8YFYHihD3u0kOVT5TU4XMU3jQFzs4a2YPT0jB97VI5wXymQmENvKfFfZDcOFTLgMrDgx52DD5lr24rDYT77hRMChZ6NraSDeX1RoNzxWmWXnFHCuXUOc8UdieOdAVNKbbUZphdEh1vX1cmtYH4Zogv5U4UE36EhBp9muxhah4mi7tELxssHIyxujP1tm0ZyZ5Txt3HRW1zHg3Q7QLp5B7Yzpcxp4sO2niTzQWd92FbdKMY8KMHWxXBgWbpfQu4ooFlFKmxsesZZoCFrYcTWGxmZsrEfRkioc3I5mHZ8AHQdm0mAEFhQQyM20PsUecxXu2x69gTNEfF3g0nzJ93rt3er3MgcJMkCMDIpytuwkUj9rgTvRAm4UT50R7ukYEGQZwcPhOjfInqQYPaROKu6E8PFqJ0N8qifwAK5YmIR2AEs6ZcYvM2bjcTIIwPLsKIMHC9lMnuPSFqPX4YcaAuK6wCo95pn1q1JZZJF52UPS49NtAuhJCDtMBKsEbJJvbj9pg3b9emVYBS0P5vd41IMeRmaplWDhh7zEmvGCgjcNluuwDfGX0YeNHVqMJpgDELVDGdW4kkU2dyaZacAXcDjAb2uZ3RBsGlGgrTyvkjPlaTPdo8xvEYrBYOvoxXKL2CmTbUzqw46utp2SDcoLjuQM1IpgJJwXUWD2jCyMxWcvqz9DMMMw6I5LdGVLRtNABJzmCeQUIMi0pCjK8ZtmNbsuYZnJfLE6n1HoO7RJrGuUAYlDu3eiuNVHrKo6M7hu9IzsO3QgkFYJgTMwGTNwillSk43OLn761L7NC6fFEK5U07qZuiDPHB7ctS4XWLpL3zRtRfHouvF4Q2flt1JeONSynwvEnfeZErhrOIgk4GBNmnSNHtPNGizTfuDYhBOjdYBWUYOJvwQR3b9ItaFmB822kmoJhV3k77k05wku9GnjUK1DnU5uXd7eXUkbGMSYexzmQSZVLZQ75UKWky3JhzPyQ90QHn287Mk550YyFYICKqprlZbOhDRDkZnhG4GBDV4LXAL1NQGqUmWK30IsJX4roFzO8sW75Z98r1KHAHOuwsoDAfKi526XSuPZGcVZnoIAXWPlj56gk0nTbrQAkUBEVlX7tYzNvVhLlQrBdOp7c58ENQ1QS7yMsd3WenMFYtfEFgE69zzX64BDdBZSI1eTGO2NHLg4l4Dj87uVfHqotvgJs5wan97LtJ32YvMHV4zf7pejcUuHsvloIU3JfrCSUWZCL9AL4iWrLJEEUTdzGaYfUpMN8h4e8QRrgD2kf4zOAg5ZiNcEaTdQnjjuPEZjdOakxPSADB0w4C6p1X9ddslylFysoEXs8gRKgtihaG9Zrmi72dkMqlZZQgpWitZiP7WTOBz6eiWdMoUEdee2Skrtnj7sF52BUs7Mm302FIfqHZbQMPZNcycASaRtQp96duownjdrLSlrc822sp1azBd2dlIWStkSfvjJ5QGZUe1xwEZE7Y46myvgR0K7lHeFX5rMlq7jJmk9exXTaF2MMXzEBT12NNKqkJQyeSJXmeomq7Y3MNuDKdk6xS6nYAaBGHr9JJ2KWir4s4Xu8kOhv4HuEh7vVHP1hrZgxuD5aYDGFNZ5PYDvI7xUH \ No newline at end of file diff --git a/finalproject/nand_1 b/finalproject/nand_1 index a2c57761c..538747f63 100644 --- a/finalproject/nand_1 +++ b/finalproject/nand_1 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_10 b/finalproject/nand_10 index e7a6169d4..5231e0904 100644 --- a/finalproject/nand_10 +++ b/finalproject/nand_10 @@ -1 +1 @@ -f6dKsWgWaQXCCCRFDJhLPZ3trCOCswCknRuKLNTsIkPoVhWlY6I0hILdzJaBDo5t6Si5jSdeTQJ8if9Zbz8fahhrY0Z478nBaL4cFYRMmDb1ZWe0CA6jssLMhZalrZ3Bpzr56EFrvuvxWT8oUlOL1lP3uqGvbA169XxhoCSM8WKfxtG66tFGE1E31b84GPExiylCSjQXgXMlTtoU7Yx9lDy0cGaNWMCvWKSZSDQB8SKEERfmtuqzz9222QruUxfItyGHFBmbgbOgubd0lQFlFvCl6fRFv2bnKtuVVzI8dxLlrpWoC2r8tirvTmkjlgGIK6hQe2DJ5mdIJUU3uKGURRebdMbboq2pw9Rd2AodiuedTkmdjea9uLiMXGxptbPfSSRbZY9WtZscBgP8dNO7AYEd1uUazIH9BXs0u43dQlQKIYjIlU0MJBvYymX8df5755MvpmcRWCVNy0ahIwDXfMr926v36R7Wi0wQAMrLomTMBsAlyGiRgLlaTpfCK1kEkXn1eUx4Gs7J1FmOT4Inez2Gc6cZBNiElzXKfEKdGu9NebXl0NihEGtdqFeQLPZQIaNa1PtuLsZbMvPOnRmqRaJ0keFBvWRCd4OaRBAsCTH6ddemxNvLxbugHuR5tUj87UmJmpknPqmzJnkf7Gtd6JZM7y7h832y3rv9XD0KXPANt95zu9oXxopoGB5mhRYUinZrgqvBPwWS1ryFl0QUmX177AlYUpIFhJUKm0HzpSXWJM2IOS31cfJKAJLaQFewh93a7oPhnHtP4AoUdb0J3Ei40r4rszILBpBM3icJrHNYif4ftAPTffhDGIz8H20IjdB2bM0IDDl1vv3XR3SzSC5a8xO02ZJLsuNBih8xMNZrlj3xeXQOzlruYsYmAHWU1dolail5GSIswodY2wDracrBFMw4eV3QOAeK0mFFWdlUVQbn20M0VsqYRGfvNiiGmNmBLRqEhYLuPkz1kngptWoB5qNJKJcrrsMsQ0oSIAPp5rCTJZ90Max5hUVKfboS \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_11 b/finalproject/nand_11 index e69de29bb..c1a01966f 100644 --- a/finalproject/nand_11 +++ b/finalproject/nand_11 @@ -0,0 +1 @@ +gV8Bt7AkzceHJ6HqQ9flemhz8DDPdEsZkrRBX4Do88UYnWERgL2A9Cn2J4Gbi8TEiJR5RKNMMzOyApiUgvTamCEAJvhcDjDCJhiwkaxMnRmGWehIfvIstTSdETHUNOstHTr3gtu4JrkCA6mF0Kuxl1KUpI4bTJBAr49qXPTPJJSCqWaiWPOauPUcWL8afoPIDEPBWNwO9DVXJenPzkj77dKdxwgszwo2XG3P5gUAUtW4TePjY9QgL5xnDzF8m6nBmmhVK2rWcR3OVUIbkjz5HUHDQf6emLX6VBuPeXmA0sK3gH6euU5vC2vfIvFwZ5SJKgbWspdnkfXxCuBt2WUGrJ4aso5zevTfrw3b1m3XGh85TvENziKBkBXTw2r7OpY1zmvbaPUABKjXE5zp5UQjPSrFepCSilIzjAxLjynmEj3hSLkL4E6kMjAut3mWlEiKmUSWRsFWExnRuWG3L1VU4cNozrr1LNoLYjbdkYV8SG7MbWbXYdFAFcndAeC0T4I0 \ No newline at end of file diff --git a/finalproject/nand_2 b/finalproject/nand_2 index 0204d1b02..49f85efc4 100644 --- a/finalproject/nand_2 +++ b/finalproject/nand_2 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_3 b/finalproject/nand_3 index 4fd9e3bd6..546ab67c5 100644 --- a/finalproject/nand_3 +++ b/finalproject/nand_3 @@ -1 +1 @@ -S0TuOl2cyJGt2aQxMAbHVp9IOgTduFBI4NPpSU6HKyRwRou9Ah7O2mXgRhntKO4kEoGc0e1v4NvhP5tQFDf9thFpBawdrACTzsOvXthRyR82FdA4kt5xbRVniyvEohEkhZYK9sYG06BAkyMHcYSRcC5PleYsPGrAaNbBxyvMGluY0LHEfXJ1WlP5eqKonTr8hv2ReDW1ezSWjQ4tXVNjCObGRit1MdBaBlzjM8WU9zH4eE3UvxX1ziKnAnJPcadPqhVWo8WLwqAMEaCV3YEbNQdQd93nTDOJE1DnnBcN3Um1tiWyx0ri49ysxHlpMefH6mkHtyjOJ38dYkVKsPTo9K6Nlv6Aowb63AXyoXTziJZ3R2MR3qjagisWQjvuYRP9S9tvLPlekp2R0X79mnALiBznVGu4U2eOS9XRSfNPgHpBFhWQpNwErMHgcHXU4HMnOJDTi4VYHEBYpUB3faUCnbN5rOYXMP8YA9IrTR5I0nNZ0JcV5qhZ2PsijLeKSDsjpwrhEs7aE0nf6c3w8J0DHzxcLpv86OXhwPkwYwQIT65Tes413Vlcf1qPl3CPL34C6zEDAZWuGB5yy8Kw72b4HZKU5RleEE0JgFBLcyFVMaPATqrg09dvusQ8pVm6N53SGqQKQ4D1C3kGeXUSaqHuFNcT44JkfHQpVNUe6nwDcDp1bao5bM0pJhu8ACNvDmmsmF9LCoX7KQoZlKty5MDeCpfzjjLLmNyEF5MF4sOTRcmNjETer1r8c4FvtBnrT08K5swRBtYhv5DzGObOybJJyFj0bGxtFB9crrTjemAB1r8CA5fA0mtk9Dah3v7a0aEFr0OPPVkIvAKeyJdZUxzfccVZ9UnuQPifGAa1geHFYjbdb7IBaBphkR4TxFDQXBdVjHxKOq7OSjipOrkMj1Domq1xix6UFZDoHYNvLdMzVkieuh1wsyVEoshELs4kW6FxLMFkMzPTP1HrdrlPRtka71xydSmVTwx2kCCI7myuj9ln7x3IrxgssDiAO02LO995PxH3glNrSKoZzTu0aPf1USJPEDTtsSNllRsRVTtHusm1RadbRjsLBpAk4SGfExJiBxfc0GQUZYTXfwOI19VclFqKWvikINKjxtlG8smu10NlKOudWXCxdJGSyQJ6URt3YHHoyrGAwd1jfPvfKacGrbeTgBlbEEvaGbhweFxGu7L1HZn4hWVnisOp4af8hjUTVvVmJFnl9vxu2eMQPNDRzx1cGgAdq5Vd3gGaw3DpNHJaRKAUyX2fTL7AFK7gFocCHDfeqnjdCGU2nXs7EOyTrkKvXDZuaujowQWuPUjkxMdUAkTkVbZ8Vx8jezowOET7BhFxUvQZz81gHIO4xgM6H2Z4TjrhWXHpYUIdeHrrxllz1sJPrwuGBaRM2tQH19bd4QZXcJuktW9Ng3GI5DR0JFzDZzypwO4ClCq3Ut8w0XQsGDWpE5NyccnU1xDN61xtJqd0NEa0zQEASxsUvViTDU9mN5bfLMZhsXoQ0U1tLV3bCtFCNDM0Z1PHRsufUtZ6Sk3Yh415Ju2LGaEdAVLq9N7c7eqLDKbda7lW8VeDwVJubPJcgiXLCOMW9zONzonZC2TMq2DYc8ZxzeURn2Qigc6ZHcMkpl4peWbiTs2cEankcNB3B380GZxJsmUrt5qzgX01mdevntHdZ9L0etDtx1ByUKwRYyVC7YESSfd2dbzTso4YtAY2ts3rLgZh82nNrZfxWM5p5koqhU5xhq68IuuWMj4OE264iBgq95XSzUhXCbje0AdUM0v4sD5uba0ss4HovI4dyzuYpQ1bK3D4k2mCGoikF5s1uSiRWvMoN51v0SEJ5JL72Dyg3IdEFrRKlUC81XG32PBvekv4BSrYCdOjaUjI3JSzLIEpoRBr91wyYVpbNzmIXeFX2biy34Yf2PXSWNilMtcg48QkYZdPHNxlETKEct5EOLhCvuav2NBLlGZ8a92FPsGz00cGLUE4fXrpfvxkw6f5ox7ssfuq4nPcjZp4UniWg7PHlNJ796UZhQuSuRH5kZfKscO5d6qcaOcGVE2i2keuqmSkGdmt3soGa6nFUooIWmIDCbdNS6sW60YLc8EzlvBddhwpVIKHUb1NR1tVBNECEIDuKYINeYquBAVQ5TbU9h4xlrHoFiKjB0DHYE0a6hJa7hbe6Uu1oOocLASkEGmtD6hXCbNFLwjyA9Sz8X0MozIkSliZCd2XPumBvMZKfjr0KAXGrWBJPyxH2FpmNVZejQ92adOmWJ5cooejfghTYASYqzV4WibJSlL4uzymb3SD2dyjvVKyxmcSOHkFKDgXSfNTdlQimSMca8bThT4ZZh1MBquZCZLCcCunFveelvIlrsrWltckOJ2VF2C6YPY9CpX2gyPeMFLrDxPZXXXVS4WMholBejgIxbBYi4DoIlt76ru8ZU2NNPqkm27ZXqqQSuu2vROFK45Aw8W9yYnVRSMWu46OofFYZ84bn8tCs3xRZIWscH5pWAdOgrqaP8wJ64PZDTTRmKUEzihROD6KmJOcFjq0LfW6OCVpCG4eT0luS4tQ1XjZmbmfrc5gw8fYs8uj3MPIYzX6xb90AMhSO7Fpmrt3HJD4TUYkjTgkLaI3doCVobZFQ4bevD8Rl0KbnopwhuL91MSnTeLgJPWd4TvlXGdYqvtsdSgm1vwO9bHANEfKagy1qCDwrK5pE5vvz9kQhw3Swz7HV6RetR4rMPQ5TNREOrPwrDpisYu6hKumViXX1y7QQz5pOC6rQSoXivEup8iMtlPtJPBwAKUgZYvtvwS6lNoNrwsW3VPdXaLT2kooUHiBzsqgysT8xjC6WoxNkCZG2MHdaaG96bkUMlR9mUYK87BIFSfxGOaMVAMWpJvcZHdY1hmJ9LT2Flr3RH5QzfX7TFLK7Tkn6wLXlXYhiSUmQEUJN0wV4RISwi2lsZXFEB2UnDEYfCRWp0oWaZPIYukBbiI6BGG1P2m9zrEUdbqVkhaKHkApLEYsZW9nNev7uoNE2j3ClJFpDGfPreZzZ98s8tefzIMDMSTAPYWYWi2BWXCWcjESpULbRCgA844IBKBRURhi5hpoTc5oRrDoqVxBoSLKLOh79zoKJWnkWAUVXhnQRgF12Trqsb8eWTWV0x4XGG2xvyy2nzq08kCQ9gICPucjWkscrYXzaqPUsF9YXrTCRV7olnkCe58hY8zky8tl7Solu10ujoTptU6B2UrUAFYi3tc2AJjEUNIfAjBswN8PuorH7CAmwUgSRC1TWfeyJrwkNzEraBYfEcI3O1jYxczUySnc58uZC0TGYsA4SebNNVewzLdvbhGfsBpBKonmyLFpBLbO1tNF01X8CZaTYNUD6BSj3IY9WNBJCjoCzrXTaCfgubldfILLUF4j7DFB5lbDXhbgRDNgXL3jRAXvxZ2zdQSGHPFsMyB03RJclkAYOa1iTJbTzLPWr4Ed0SPbbqfovlnKFiyHpnoxJoW72YY2KDNJxl2V0NUWy0WZ37YsaqZvTOhsNkmv04n0G0CBVku3NPUN1fib1QbFcx6tY1Qi5gLDAVFo53sVwlWTroe1AAYSKxTDYmFVe5NISXDBzYfkanw79Njs8SMy4njtPqlCvNtjsiUhyKhnRaF7CXQRySVcs5epCDcoxMM5Za3Y5Gr6j4sbUX3vBknVB0fYZZ1a0AzoevUtS8iRFwS2L2A7nqs4SdfpF2XjU1GVvJDKYx9DVsQ5az9z1PGy3Uh8j1W8cAfWBvRYFRmgxxWKGjpZlgq4O1MHZlhzfZoLfov8yevPkChCYS2rXtGtVad4DshpwXoAxOzhwjBDdIg9UHrY5wdci6Z6XATdzAgGc8EvaVho14ayieDWwxpy9XHY8LIxlT5uMUUUcoCo1gHM5J8uF0nSVPYWX4klegRpQcROwN3CWxbduvDKcp2EPCM6nlQW602vo7bf2eN2gTVK06D6eD8Vye0Flsha9Xf1EmQIICifj2KHH9m8dkCXXzW2c6kjwGxpHklGmvkwRLUPBqbkHXRsvXXceoVS8VOBDqSbertNgD2HS3uZNHLypChtM2lsjqw32qJfgtIflFHoyXjnrvXKtXG0ZZrCdM2ruBvLGV71rRoN4lrMnm3JVh6ZiDGlTzy4u6gjyxOEniUxFZQYL47SQ1pY77R68EbBPATwqn7nX4TvfpQMjxdTBWn4QWWxb3pvfm2HigtY0dvbU0UxFnpqlicPZYm9T3FYsBuYjcvTvdh2IH7tnvMXSPQ8CsWs743QO6dzJ8NfWmDV4E3XtjqoFjomWSwW9YlASDKRmRPBNkv393YuH3tQJiuFfxn938N9BCwbTFYXmJC57as6uqNMW1z5C7bWIQ1VhuNAIKxcrKOLBLjkWo2Fg2a0CpmEdsg4C7VXyYbQdZkXwAgapfng6Ona7TVbm3CPQ3cAl4Sh4pdVj0xIfVNinF2Djh4XgtyXpruFpgfDJCX1ml1p7sxSG6cjnNhBAVeshX50NJfy8mXbGXLHrkBJezuORzTgVQqD3rkOgLPAz8kgMDMcxe4uV50bToiw21uVQMk6328jLEPBhWVYCzhtty8LWuJvmIhfWPUt9zb5WZGLYMnswRlOxTqLkyjAY68QgiLRu1hu4lEqlBznB1cxCwjy8gJpvumwIWL1KOLosMj7u4QNTIArBm9TFDMkxNI1Fs5EOJntiljaf5XfX7XSKO20QlFzdjzC7fGgZSMv2QKuujmg3ggoJi9tRdexIp7h5bx7ZNAgcmlxIEMWVsg6I4t1FTu5BqwKzKaI2faZAHe7a9DzWpTknHGpROgxkvQcdBEhv99pls5HGJg2EOhwa9jr3T9SdIz8xMoqktOAkMB4knjxhfn53Hqrjl0ksbGq4fKRdL8AEhLZoXR7Lwmnxlt6s9nFeOwdNXh0mL93o6uJFsWy9GAPdDAw8TY8DPwskhkxLaQDGrWmgDatPgsl0XHOWwxT3SOvQAdUHD1VqVhRxGruec26F0EDWAOhNhs7muahBBR25sG0oUeBSKGAz9gVFAjOnrNehf9uxY0inD4uiw1vjhuaKVp3I1cg34lCCXFiVDaHa6I6gMqQhscjHuqzuVnBCONQWrVw5UiI0b7hRu15ITx5vPrS7fiUz16Dvw5J \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_4 b/finalproject/nand_4 index a3ac05e79..593d34dc8 100644 --- a/finalproject/nand_4 +++ b/finalproject/nand_4 @@ -1 +1 @@ -FWlhx7H2apq8yTU7bE27x5Rjh31xfGq6LGnT1DdTpK5t5211a5rTM2Sl12flymrcSGaCarDlCmmtb9cum0D9KjN4Q5JtK7PNYt5Io6dflPNrkkECUE2T1ocWsHJP44eynOqowFOHW6mDMejxB8sMs0TjZIp9re4VFvUa0m7Clg8sTJqNGnb4YQjJ2cQlqjVSAvfOJywOUNYz7PnGF9Urde0aP5aVeestmLfQmqRX6Od0ce3XLyfmwXaK8R6eTtEPzGG5gUe1mvQu4FuckeUNs0ZERnDKDdCuY4BD10V3qgbPMbqH3coc7aL7Q4zgz6nvxyjWDHW17mbi7O6egkRw4xnnncOOwvJK4VoGzOUOjXc5d5jkAlFvqLrtVuKi0FqR6EwxyaaK5leWuHsVdMYXmQrpUG5lefVxHH2Ml4UlLqqYb8t7ogc7dYhvl2gbakJUFrUbE3sJaCiv8n4u10x9hJZZIW3KQt1akk1POw2NCO20cWJlxxL7SuwliDesPwphPHspW6aSVLPhx62NG2XYvaWSwtVWoZmEPWIevcbEgzr0mq62yZB7JT3kLRvMKdthYDXFy12CO7AadMobFNzRTNZJnZbaUtqsdZczBo9mPuAFPRgmM3c1wxmiS484CSSMWCbGMubXSccDmTP4JOPkAfycClHKiUSixk6Wv0cTYvOUmju8iJiFGeebVnYlrvaQM3MsUcWzJ7C64a2IHVklOqixtzXJ9pgRjdZXHE7G4bCcZQxKKQ8Sn1eOw8AS9S4OPJ1OTy3qKvbvX3dl2z8nyO409L6aC7vRwseWAJZkkOSqTO1pWraYayBi04TvMGIsgFVnJ1CSoWmGRa58IS2gXVeEeGe2Wod0jyqN6jMJyqh7YyGAGCzTNQn5Mz2oPq58oMyfEravV9CSKH4JhpXrWzInhQnazqzEzCv0XtqzTXmTW76gxXPib7QPROt3ziFacd4kRHxBPQ9tZc1dCBfgQ6M3pwSWSShlyekdJlWOeK9rMY2vUfCBODggMrSPzKbRRAE1yGrYSntRPQMmdYZyrfB80uen6eIOECThxP3IArQYOzoKyLG914ugZaKoaOE3sPah0D1avLYhFoC708CAE4rhC34Kv5yVvlH5pFcIm3JA35HCnzSuMHaj9Z9CagtFck2t23qM9vzCjQ7ZUBEetZJBxqZR1Be8NhGoo47F4n8NftsxmCosD5QWBbwg7c847IvC6VUZE3m2HlkJw4JC0srNDihRpwyKIvpuEi2Vc7a1reUBTDr6AzPEApZM0pIdPREyiwnL7WOxZagHlJLapUcg4SpnHcjjfDspsne4nBEIROiM0PfFv4MzZ6N6PlqmyihlJDtyqPtNj9OEs15Ly39md53GdHvoUbQhJ0FhRVfvU1uwGGROYo4IvJKHzonlZ4LNTXZeQAmvPwDAuujyVZErjF88asqrQSDiW4jXNbVup29ZZ0wSCXsay8MEUdg1YflT9kwtsKlJK5lWWSEBaRhIm5u1SywQ4kVZNvv4tPsrXpTJOuagQ0DSjnM2m0FdPrJuLrjaqyekB3EjLaayTshl4wvjAHoFZiUVig068U3cZZearnhmfXksNAkhKU80B10q11c9YSdXpEYZUDvoEzhTb5ejsNIcT7KmNR5AkfasTZPDHObS6lgy9n5ZW7LN30HeuEpyTvyYoBcocdFLIhWin4tbyYJJhrnChIjXdxJ2IeAXCF7Vre3SAW0lKjdPhWu04GqHaGhhLhsFqcZiqoVztqriXKn9myZZW5jhjsiu6bDiV9iDreJNVJ6cZAT54RdZbk5O1s0lRhIlJFuDhseKT3PusJv1UG9Z3m363lkfsRBcAUEKAyhV6ff4Xoe7I9bqiwVsO4qfm2xa9IFEOB6dFQXg5IVdjeEWunwnpkROPQflpgsGfFgUKzdH3zFqEziQd4IXJlUMSA8J188AX3WyXHu8Y7h8Pc34yQazlju26qlicpDlvOrxDXRJpLXiiceOEIKlOA6gCSB81rDFrTXx7elZx7OWk8sbDTcphVF3cKSaGDzcdADDDxk2Vsvwb7iOWC78aH7LSyqEi4A8LiSR39P9u7qFO82msVKd8xTgeTkE7McZLXD0408GZL3XaIueLaeBU3IXhAj3zeroJrWERIv0IAqjoY1x8Jj0PsepMqNY18zR3o8nQPRnckofkBKXaZkHdVsG4FFqChveT5kVfFMnvNBCusCkXO7tbFCMMlkXilotmBzhazGy89YASN19bWK9vsnl0HLwU7U9s7vSvNAtvoPU8sEqvBGZTLE7WTbcbrMM22dxH5ge1X0bbBJqKRqkI3HZd7we83ybjQAftX6NNnCvkIwOpOmL0FjiNlK15aDMnCavqEPZ6FXqnBYJrMhoHTLzzhtjtFwIntrnNYEXJowHvUY4mHldZNSQYPShrah437CVBdlxhsMtwv6XOhpkJhzcHRsqoFpkzFRrZ6RqOqy7ff8ANIO6PQ9E1muF9JSaKx8VDeg45bAfmqcTICpd5J9iEOUebFbnHf3a4yo2rNVri4z8Fpe17W3o6ySovq2vOjxjHfaX0XipV67U8AuqRagOYEJF4LpFR6tDVyIGB1p9hFszPeyKY0YS9rVMJtJVHIMDPbC6WxcL6jG3gfHP0Kxu4s9VqKAITy7zQDs0HbZIkYHn0LFoe9dCnNWFeUs3Pfrx3XSOJqrldTYtq0lfJcMNV1CSJRuFrWgiqRH2HwI7EHpU5HzGrmyF6TLsUWglSGf2QcqX7Tx8osBF4lJ0FVnYWIEYaVeqFpDOgUhFITaOQz4Mb2ZoVLuk5LtGrr0BufjlbcAPfU3UHxrnLZ151ikQwg9ulw0iGRmvwfHbd0Up2saBR9wAKbcgGTYmPjBcURdbnW2Rpzr7GHnrMtPnPzBwzDrT0a87TrAskzohQU74UwFsKAGKhOv8bi5QQNb24GkPoQO6iLHf5rTd6jLQCUdLpiJ1VugcKjhAiC64WgsjL58PqLnaFu4qvZtktsVCFZDibuGd2a2YLOmKHX05xrJdmktTKobCAYBSthxvPu4h9H7jnyksQauXilzaQCDbJf6ooAIQKOaC7KZCskhrIplXminj8CoxHjntaq0cm6CU6lzJOP3CY4Zx5i7poClt6gnHYwYK1aeM6wjlC8OphnRRuyChu1cFrPGnP3hI6sdA1lcJjVYqly6vrYgQqLXS1vPHgHUUt0LQWRNjKoMjZyWYN8PY6vm104lrkkAudD31saWf2FGPem6HMiGuLpGbUvPN7GfIU4hXt6efiFQCXXulqqi06Rlk4QSerKNY67UH1xd8w0cJwoRp1QODzmuaqHHPsx7lEY4iOETBP6iB0pxEcUaXgDWpZtfYJmoBXIeEdV3LUIZ9YVswfpFhbUbTtaRNSoDfZg3uLPfN4IDeU3y30WLuJ1YFU1rOP06BlgdUTl7GTwVrm3iccIYs4mKDuvky5HNsQTfWdpn2mRNtLF0tGTeRQDpMdvviOzgdyW8hJWRyYDZWPPESakmo7eftC0emcvn1rS4iNVzUpn4kaT9PTwN2o04pVSxnLDGOZopOsM48Gcy8xEqdmtdFi1uzjOMxbqeWGFBrsKS9nrWhW4GE5ICbmbD2k5B2WPx68y98Cu6cnInMjy56qlhoeCGB09coNjtttrtCAfOd7Ecr6snyOnzlmvZ1rCe9lzvPcMCjhakENN4C69Xv0aw0R2fyHxcpKH8LFSZN6mP1uBhfiYPSlLEkE2WPgyWdqHsyfqFxJPEUw3QD3I5UqHzBOkDynPqUcg0ca4HiBHBKo2SwI1UDtZ5DnfnwB2fkzY4haAL3PiSNlQImWJLzEeajstA10X4zpmg3NnJ9GNRBWDgf5I7rfJtsPXJUcbpxEKyH2iVcRG40eXkAhSlEP9MN1WN3Y82yRZ3XmjeVeFAhlkSqrn088J7JbPlZUKCleK2rDbEsG1bjErf4TdFBXMwYNMceMJBc3qfcxxzvJPt7GT8i6Un7gRKmTwT93zuWF8uDsiBmBDHZM4TvmeAoB5PJRHgvMXzkWwRzdRuXOji1yc1r3rD14e2U2OaZNeuk4a4qRJuX7DNAisApXowJh9Bv2nc6tiw53I0P0BcUUaDS72zee2DbQC1DRmXU9PDhk9ndr1DLAt7Mr9Q8Q3D0WcnVAJ9GGsNm4Ofnp5BBoQqi84gQVj7LgkmnhcSRppwyNH5vZGegN8dumGCdjOROV8VfH0u3sEOAu2vD6VK9cJnKJvYYtWJ6EVVhJ1JGDAIMXFjWagCR8RecXVhtQ9lNda4FVbV0GYKjxVWfEvxTMdvmSjM6ZAHZ4S5Z78x0TFbgNUjymtUa8jpQvmgVzIhFIzwPOmd04Qtr2H3bIqD5KUIXbslCcLJUx2F3pbDBuctmpMESZtjXdvZvXAPcnGloeIzYIVx29IU3AvmHNaJnX2WYkSxiVURB6xDzU8yMBDZ0FyOVj1CZiTKXamclte1WZZIad8dgkz82GW4p6oQW4KNJrtsZZZF3JtUX9ygDoavtBt99tOwctYuNO2bDeRVMMbrBp4Ta8FfkhfTNXQ2gLKWNNqCeeJEdBLIpRW0XQtthEgWWmQV9sApNpPGwukVEst3HMirIVbXJx4f9QJP9K4b0OGMzsVdwu1blskeYBZWi1FCIx4rfEDN75WpA5Twpc3vlTeHhTTDcwcpsHI2IV7vPNi6tEFZgxwBttVdX0oJkgBMyD4kKUQDzK4Uxa6TJdUPCqB10ypoJinZsbCvk58YBuGwap1VKRQmrqJisZIevAi1JAFyubPd43iHrplE5Ci2TFz7cz7BLzG1GawE9Cx7ZHCZ4EsuQ8AZrXJE6wbqGYNkpn4ZAAbTa6uPix47rokB9TdTGe7eUApyzPXZFa563b09NSfyiMnikZo2INCDGaNdZZxKNcnOn5IXzcJmtuv1mBzcjNv0Mz96Wz5C2y6WlUwoyTM9y7z3af4WiNFv7wzHL4ywrg6xn7cx1KtxkkX52PrxN6nvQ2AqTj5kpim5Du3n0yHl5m2tqBWa8JNKtoi8citGDTr4gH2jsOnhIzny623QdIMsBWtQLKh9FuEUXZBLYOdHWPz9xjppwzQAw6xUJUto4W4Xv2Z4Xgj20TlOH1KFzoiBYL3wT7Las \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_5 b/finalproject/nand_5 index 889b75c82..ed6d3820e 100644 --- a/finalproject/nand_5 +++ b/finalproject/nand_5 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_6 b/finalproject/nand_6 index ae54a2f1c..fea1a913d 100644 --- a/finalproject/nand_6 +++ b/finalproject/nand_6 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_7 b/finalproject/nand_7 index 04dbeb9e3..e49f8169f 100644 --- a/finalproject/nand_7 +++ b/finalproject/nand_7 @@ -1 +1 @@ -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 \ No newline at end of file +58Nz5fU8wzoQMwJUMNYWtGlam2P9LS0vfEpQ9GQASM9PlVfO1N2EkPOWL7VmtDr2f6jkgCAOaYmlUKu4l6a25Me16CvuRIZJJ5AeSWpqChpLq49EjQKZQRPetNXtsvAbcLnVRFQuOdrk5VTvSz8dU1vSER1hbxdBCbl2dir6OQ88fdsNXm7wki9omU7NjyDB4lkiCjdeFSbm4sMpvGyR4X7lavBWV4msklJ8F0fJi5hveXWS6Lo0OXXNNtAn9TQmwqVAust3YWY7U8MQ4LXg0z67ld29QcRfZjy4DgBrmgntUAq4F5u88cYz89rQzfjCffDkIdYaIfGlvZRwvBBCRQC0Qy5L4QaRactIQHYeOSL5p6foPluHLZhtzlFbM9hBLvUrnSsI3fLAihVjNdYuUqMRSF8XpP5aZAIxEYvSZ1ACuhFGXc0KXaAbaksZZHKnLDButI0W04CJjmPazsYfU3tuN7ESxtg7cXABWYXGJLyltH2FrOCZYpXxmSRRGClW6fkED9u3uDEzAFCwW5LrwOhMoFxHQn2trBUp57WQb3oou4spEZHzozlPNAncoWcaf2DpyTSemiRUqjEWB3QkvQunwoIaGRJdDPtRSzvmBzf5sanfzz74DBV44XvzjFGHw167lvTuEmB7F5UL1ciIhY4j2g5gIpcFSmDqdqhC4kM6fkslinwHxwEvZGfUo1VPsMvLuXVcd0Td5qS8YY8gFcOhskeNA4O9UQqklaXGvT0N8URUqHmS3meD8YOqNSBmJ6h9NZ0L8slq2RYuuWQLYQMZGY7iG7ZH6ruzxEp8MJVs16PoR2cJFWP6QDjgsSOwJ2K8kswuYn0R8pab6NKOzNKeTLRMgBPtfZ5oflPMvn9gL5J7jVV93h5aBXupYnp2qvCq7rIgA9BTCCbtZMKbDYrBek4s6bkOrHI3hE8WbeLQ5n0xjZfgt37aVd7OjGWN4wmKmYOKTcNJFFZJOXOK5muPMBkXdbQoxDAmJps0S8LzhvkSnh2NxJlpLcRXR0yLnYNfg0NPs3LWTxaRiRCYI7MVBNwK4jLyHzS2sgAO9JibLbhdKOwe3szvW1k1SPEkKaCnaZAsQ5Mu8DahkposdRPzBDP98RvwkEqohvLIFFyjtG9ENNHHM3syirR3lKbmTHD6o84jtSKLinD1Bl8X2Qz4ovXunqyQL1sjZvtXc71H51qZX5sbv5gnNNN9M2jkG6tQEooq3Eiv0Z6mUQybWotgfURZcCa5LrJ0Yq2vKR7VYVVJDxrOlTfO6hfZ6hTUjF6MKIl7CamXTrr3sdwiF5vvqcheopiKsVySS2lQfJIN0iziLhk3NEesWv6oJReK4WzcHG8ZiOcx1giOjXiTv2BoUnTv9QvYgTtZpbn3mkrRihC9kCjJn5OaVbd5nN4mGeWpIJDZmCLuXJX1MvPleaAfS8ufH2GQfst2hx6zgMO4SNE8gwRpRi6fcuuDY6boC5E5UdNQ3qFCVYUFAHhBZy9LTgdIuDWyaUW88UhjiVC9UQxBGKONrXyQDKYvUf2arKVn1CQMMq5lyFKovk1DphuCJL2kS6yVIfkDEqBocnnZfqGHjM2BjSv3FtxJg4widAZqDK58Ehx8eBoEkzNudBE1fCZJEspMbMBqnLFYA0PjtrkT7XZYX4nUuwPjfR2kdD84ymZJUS0sSfRvHp5FOsiMdVLwRWYNOA2Qpq2C9w1XaxJM8w0XHIKDVHxXs1K8T3SmyhJvXBNB60GhiCzHvMp79Uo7gUI4m43Ej6i9LicgeXIW6ZWQLEyYWdbOXkqIbb9svO5l2WHFWKwr8vwjXnPJqRMlmxBP37LwkJGxNFOu4pHECj8ODMJO8Aq4DKqQTYXvYJStNcSeSQ3cuqvxlMoXrGLQSiRm3TmCWpN1Wt2ITYPmqsO7K5RbkERp8n6VmMIY0mEaT7Ir91Rt3NlwskCqdRjR0TdjR4ZKaQfT5Z8gkhcdPBtoJbqDOy9SrT3ilT925rduA9T8IzEFfSJA3Tvjphe42WDWc1SvfQHBB7krMUu5yyuDfQGpdIPbSAGnq438wTK00nHFv7gqkh9ZXZtcryTWigeAmk8mLJXY3E2zWTRI6XKpFcOCRNxHKwZpis879PXVOsMf4oTxXgIlE1npcXXbvkyjJxMQd3TknoBCbsm1cbS4bRZOmc6WCi8CVQrfq426ieBwd0GuyN0nA0wwXuwpVQng50mhEqvhgDSCkXBNKhPjWp0W4ocXFPKYz8NqZ1fqxNGcAIekJaptb17f88stdiKFlBlBXLu12HiDx7Fyle9GzC8srShSWnYOXitokMZogL0hj5XQ1ewtOPQQu8Rrt3rYXti6SnQ5MG9BIg4HI4eFrn8f5BINxLWBIuFwhPUY0lXIOJNTIITayed6aHFsUZI51diHPZQ01xNdbJI5TVu1NI70zoaMOImgwpKoU8SJgJLped6PaEjEWZKxwgsMCTpwud0mFQNxu3JnBZd3nFG43HGG9d4VMCGYbuHbc06896A7Ty4sK1ztABGtB6hrgJ8dZ8464jSUV8igXJpnwc22b5XHVO6jCIQTw853VvjT6ZeSzQo1keXwmfGYI7w0YmOcc7fU8W3wuFX8dVmUYgU7eTIc7FR33ae3Cpbi7WGcJ2n0y8TgN8UttszPZRGA8HKZYAeqXAHVCvv4f8ZZ4lNp1SSnGs8RYuQa9wnURUTow6Mxmg5tz1XUcqtxjOu6yYz1r0zXFQSDrRau4pySp65claO3PDsutd9oLqNZrfKwaOG0p2LVb9I5F49qA5eJ3RuFo2PXRB9NnJdZxh2O5WnV9qPrQdioOpIfD8X1Yq1PLAMCCEOVD9PVNYGHjMSd4YCS4NbR5c6pfQ42GhKwFez27HKbfV22Rskfidkf4RU0zVBRqYiY7sZaVVssucm1r9c4iTMrq5WBZMwibwb4i656kPLvkap6kcIIvK8fpb2C8S9WPaTSDS4jI6g2vu3bKvlKJBok5STW29aVC7F68jNaes3OuepZ9VcZUPlwhPt3XIdqK9Jl1Gykhs9MOlb4Ti8F4Y2jTPFkeVas6q0bJqcyMhxLj63rXHz328lmgEpZtmoz2O6urBiXBCfu1G4uxe01DjXA7nzxhsqUySULjD1x4Z8k8YODmLqGA17fIPTZlB7yC3TuOVy1C4MXmlTzu58PGHMuLXaBofc8SBtlMpQKCPczwczGCrzBzei52o0eemkvLIMShjZoZfErFYSkqJuV1aOhUegmiLVy7gsnMj4NSx0kiI57mYkNHlRnAhikoBjNYOP5MZOW1IeN5DIkqTFWyzHGjn5HuARlCAZAOhw2rXnfUAksL6Lxg7UTc22wGEMrEceEHwG1RlTk7aVqgaBnYiqZ9q8exPnbFRTBZULNwAPoxEsn7lGlNSSKtdwTU3YcVm0IcNRmrM7idtNBGBuovuJrKguBOEex1XHULUPz3ONux0ZYRw17AdY7aBnHhwLRgnaLK5OOjohrbtcGEs6K5xx3qS3mVQG1qOnHOeEMHtHm9C0mM7bPHv64Dr6ZSz1SDzfxZKYY7F08vg1XJt81uBcspBHK83X6eaNhCgCTAJPjSkZ4wjNdclVIVPTojMAUCNSrCkRUtWISdbTvfgUvXecWCojj78bB6a9250m7doXJCl5xp6EzLrivF1M4r65X3lGvND0VB33zWRQMcHNmFMWf6o5QCcfGeKQ0S0nM4FQh8tdt8HUvHpz3J0tsjsUJwXHE1xw9vof4XaXAsVdrNAWhcaHjjVRsmsoJ8hh8T4FHswRJ4SPkdGxB92SxZqPjgyZ8BiCWZVWgiG9Vw9PZ7VJbDcx2phrRH3mhTslO83603S6ChnxhSoHL6MityrdPOKYbS6e21AMS47Zt47xBf1U6vA1MgwGyHSfiuobfpjAscFESsF2LnVPtMHWAKjHba74gnot5agk5o0SOZye1unPSmC3PzdFEp9RRJqq3bVQXTsokqldLVDoA8zwrOJvwZdPKRjN9G7t9FQNRtjxWgKsmD000s2ELMEjHF0PfuHpqBQgMLsQNQo4DVuwavGqZ8I0u5D08FvQCZdjD9Wqle4ErxXenjs0Gat22GeMd6tj4MGKmodkah1CVpdbuGDQuC8dGfiy4gBWTmk8K8Y4fgIw9BMo9G8yvUH7yMekHkfU2DaksBqwd4bpPgzBcdNtyoHns5G6P5rdw77CloNaZ7agCPPkiJZvvuYNGPqePmxIjXeJ88prnlwe3Ar5NvEDDSLTBSPNfRl0SqmEgm6BdDVv9k5lXrMezW8MNfX3SCTaYnZhAzQLefwO4Q5iZahkSMeJ8TQYsQ1hulPhMr8h3fUMT3hfpmDKBrX5qc9L0IKm1WblnLEX7H8xFK7mAcfII4TflgVk0RUvU26wT2QqT4UVSoUR8QWYctWIEREH03svh15G7LPW0Mqp4y3prPzAOIzGw1cH42DbFfsSLlSyLvKwckuA01NLn7uL9FxCixC5Li4EdGFx2npuj2Z5Z9SRVKdIqaqv8wp0t3vDRlt20DDSbNr3Ov8QTbj8q9hJqxT4G44qRYmJeRW6EZBustS3DdoSy1C2y5fBqfcwouBLEOqPC38KqfoYh6Gc7JH6sHRTljoRs7Zmh7PezaEBtG5Gi3MOvEX34CCOomsqFPptyIABR1puEElqcWPJDK4RPxxuMRutCzQKCeJXAlRaesqh1yTuBlhZcev1USGHwNYNw0DpTszRWOrf7KrqUQoXtRDEMMhbCDKbASiTfMBUNgGJZnnp3uKgk2IqjsCkdgC9csQrhNHJiCAQXZNQlpPUvpVRq24KLd6xgVcD56MI8L29iYRpx0TUerR0Cat3aPGKqrkdghbVPr54wx2akuIoZeREU2EcxjKf9Mj1AtCVGUlOAh37UV2whFvJjoMSCUxjY7Dg7B2OT7oWn4iQl9kqzLf4Mo0tAhYSVOBcmzHnxieuuDlrsqmP6gXfNykQh8zaMeJOSsq1abY9XiyvcpDdIZo00ISEy9B03xIa6bBYGUMEoZuR6znZQnQcO21qyEAtugWwkVdkMWAf7So7zKNMCNU514d8O717auFNyCXGTOkEOJm3s4OgoHj5XPq6Js0waT9zGaMYHOHh3dKuh1bATMD9FCKbnXlPO \ No newline at end of file diff --git a/finalproject/nand_8 b/finalproject/nand_8 index fd7e9e7dd..011123b22 100644 --- a/finalproject/nand_8 +++ b/finalproject/nand_8 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_9 b/finalproject/nand_9 index 6fd120106..ac2747c70 100644 --- a/finalproject/nand_9 +++ b/finalproject/nand_9 @@ -1 +1 @@ -ac3rL6c1sGGUB5tx8k54FBHDgRxAUjnUbZK0RRmzyCilLaBLRQ8WDsvI9eTGRCPBMwbZUaP69YxVQ1kbppDntd9tqSkCZku46IopnsjvPq7eutt8VfRWM3Obb8JP4MLcXCgaobnIUq1nk0lKcBJhEWPqtuSrgu60H9ZfCUMag9XMEI5RuOpqbbQiRyS71CcBhLrGruO12FyNLuwvduvHAslvxaFIfvDVsfiguI6dfF6GSk8G3jdQLVOAD5YIoNYQlmuz69uNv7rprTTxm7NGXSfZA83VJeYQl7WzWiPrnyhuZbLnzU75MYO0EO7hsde1opiF5MBpDPohXWdsS40zKPfzX6dUtY2rEz6lKXIbltrrvW2sveSiDj2cEvHLQ341KxXi7pwcdOCsSqH8AO5khVp1pkxc3ZwzW9ubtFCZOrYYmlSdgIHYYdmTxZMWiyHjxClYWKdS92r9ZMasj2aJGT227jUpUBKWQy8S3aHkfypMK1d3UAfvQYsMJzwUsUboi34eMPbkRiaHcl9V3pGfYxPiLdrHTpg7bf7S19riq3pXod6ZcxYXAxAbAoZF0TGnpSYd3dPb6pSvmwZ5T4HMjg0gJh3qAXntdYUGxttMzP1IKdVqm6n5dvoud5Hp4QUScN1rLuZ89zGVbBdXgWl47e4Pc9uEd4J4Pa59FY09mrb2vDxH1pegIav8VyrD1m6gjNP7pNWSzT5vOgdm6RpqB3KEwMU6GPrZ2Bzd0NF5GfHsZSaEfVbQns6JILwG4GlXH8dJYNsYYN1a5mDprUDsZ7S5bf63G5lg27oHcVGOvf9H1gIsESjlb8rexERPdS9WtHYP1PqUKHqBcBdXMrKJ7d56QR3h8FvfwcYg8akP5tTvVHO06yXuW4BBQfclXHJaRw4pidzL5jORj6FjRmZrYARy4vs9w22bXWFSksa7QotQyDVQixtLIEA1V5X1GRy1GOVnCTUEwwKAJ2fblL8ysRy3OebLO59onG1iNgu7gL61u55Qa9Y0dUJChUlwhX1ViTUVZ1WZz3dpeSJqGUrQLeijJH2phxYhm3wbFQznhMKNX5Qy2fm8ftFREMNQj5jT6Skap1Rhui5vgFBWC3vhptjAeTOoxL7N87nxs4bNbzi199k2mR3lcZ3ytG3VQvpOLTsGkUSUYnNsCQmf4wFD0P5w9D4ZvsByXCodw819tZkFMzHEaI5Fxf9szZ6L4hNI5doFwdbonXJQxPZVRj8FahdQmC66FxgNSYRkGqEm77jRH85vVrUqBGnSkfSQFwobRyqVcXfcf7qrzEQSw1N0SU1qOKfzbPfovqQi9q1yFklwx4DWnFPsSU6A6G8BTZkcoH0aoF8xZhWfOdJtX1ADx3K5sz77Zo54Sksc4YbPnSMRTEHsiUjXprwQaYbp1p3LuRljIFUwL3nhCmQJYUSpPaCsHZo3W9q7a7IADXIG3EqVzaZybNTwClZifl02wlVQajqXxWDcxrLFK7BbBTRGDUSGIzoYkQ4VFyaennc01KfYFEgx2XXUHgZmrlGhq2ZFPLl60gqIhnFqmGJWqM7kMi0Zic4PboYFKx6Z1UkpycA6LfJ9Z5JXJ8QAB8eSvTLEV0BVJD0z57ozLyG5MCwBzTsYHYgRoTpcI3rQjGyXETCY6lJoUgWXIjdc8dfnTYprO97qO1DxKKWercAhsAGTkiGCvg5TOWlLfF6QFOJkOzmO8WOCVBBVyMklBpO1sWmvPgLedXHNemiz0wajqPcpHW2q3KrGx7zIHd60EUH5hrP3NZusE31qqRDu2AhUng7FxTAOdVfWh8VvFqPANz1bQkKDk2kZSsm9kHh6Un4XTmZZuRQs7JenxT6xrZbaLrjSHGFbizq45zpV50b0BLz7aK5NzLt36LczufVYr3ppbJRhLbRjMi76fFzvfK2tnSCZ8GFK5DCAKjElC698bd91AAq2qSxO7eM8x3K204v5RCczSr9bHsl8xIn9b5BsY2QanFvZfDqR0SyjYW9DGiaP6wzurc3Um4EnK4XmDy6xRdUJhFGe5GK3Gt6uiAfVCrgecfV5FXfSebBmf7EByBi58wmKDfcz3GQFUXtlIxQu0JDFcREWhnot6t1eqdxutBzTYPz9cSL6M9FSBj1868h5mN8ryMLij5S65b3rg2rXkuyZ3zQp1vKYFuN8haC8KmrSpWtOil8BirF04voy2eYUlQaK5Gnp6gL52n83fWsCYLCVYW7EnzZqzvfgnh5G9h7uiEi6TaNxaNtXoOlVsu6zzRVHU6i7ci0O7SyWOraPyxlh4kZBHsj9YJLZYpazvyvCwcIsWWebUWl0XvmfQR1EnCJZgynOOTBPtJf86BlltGN5wlr57zZCoAca3jCGqRH3H2mnrYlDJkxy4pWKmO3qus1q27b0J2LI1mpct5NAC9snbVbSkLkej2eoJJmwQjS6Y2RJdODPi3QIHdYXvRW7dvm9BPnr3LFvkghCQaDs3XTGBt0TOZQ580RzeCWmn1DcgYcStyTPqkW8xN3XiSckPeAzLTACfCIRLeOsbSgrT0l07PuwI7fZjOPzyBRrJHRu6fuGntE12y5cBaMfCMtyPDEyg7R477brSRiCbG6i0kYZM7PBHrzu6lpRBY4zLO0FH28ZCB0f6II2MIXbyaVQfKrsfneJRVbZgBjqk7gObkLbCqNZCp6VkbI8h9oHCTkeFbn5nK7xrXoAnjS7hJQm3wxPMRYOEA9leWilbzVdSrNZY6X5DyskD86BwsrvGtcAJ1kvB6jPzzUf4KrVVxQPH2DhdubmMOuuyJLenwaWGt6N4GMlsvBmdzV58giasx2zN5NaUgLMyw3tbNW31iBdf69orkaCN0vRlfqhit28jQ0h5LnKl5VIC6bNXxYjwnOtqOzlJXFaX1qopocbTaoWnPOnalq8c4PezgMrILDhAj9zFgXYZbFuJHSoyY1PIylngSvGGnx77zASAp0bG3ZqY0SNIpi0Hdw3jZqVJ6EkoC4Q6F65WD0UZp9cS7mtztsM6peNK14bBtPcifkoqEbfg9qsB1seeipDSKgYVjY1OmgmSsrKSAy4o1tqia0fkDj7nKujW9fJZJll6amFly549qE7ZKuLta9iTs6DNUYRydcw7Ub1EEppI1rZOpEUKLeK4B1Q4pKGAXi47ssJ2ruGAt7PaWzD6vu9nGdaoNQagZnhtvZYR5zcBeuKeMIpjKyte5hnIIIjDPKcldLOfbmGQJaFlMlZ9jKiUUoSQpMXrfOsPOBo0y4gm0U0kgQS8I4Fte90gveuj30j74b8m6Be9VezZsm2yHKbPCkG038XGaEWpsqU7eHlj7CCauLmutL4VniJJcIQOyGUBmtpyhrSIG01ydVXMZEmgeSmxQneKIFOJbWbk5rLruohT5BQXHxteToVziNLuVhCujBAhQ3PWuYnzqPnI5Ii390h2GUIXNMgjFRquOwmpPLiSrKYzHkmo6gMFvtajmubqThl5pSOB8tdF1n7G393QBJ2lDLCAodPzZfxzpVhyC5f9GCtaHAJY6r5tZnvivekDAnwZldO43oLZwI7V3rv0LYNCwIn9cojv8eQKnsff6KFLmQtzNSBaJLxNpXC152E0iKyLSd1D7GbZfd1EGliiTeyymPI5mMbhXZ4MUAPyrGBTFASsUW1bGF7NmH9uyeS78GhEsoPZDS7JrTTrXvYeqozWe8JdiqhwttLJ6d98NqN0AK7X77TW39uQVtAuOKkavobnod2K6G79aAaxQtgm0s77IvLfYRhWooIbragOqQDHmrdjQySgorOImYG36QNA7TkIhTjSU47rawq2DvSPmLIffvI9QZR4VpnTMCgkOBwQXbc0Q01Br0zqYGVI0O8xIpNwgqv2iWDUEvzCR2vGVUa4eEnKRvxASZuBDlcFDGgezkgrLW7clZdmE1mO0Kl6WcGFjPFzETKV46enSkhzwlspGz0TXJka7NZ1z6npJlJ2XnYM7ENAarZQNM9NirRbzB6kAYHNvsEUK7K5TB82EKnAlJIzXxcnH2Tz4jhSuJz2lsfa0qenY0ENu4Cr8dRcn3Q11gggNViM9lBISO6de8jn0dWwg6h2juVjq9JyK27P19mQnGuDn30NNwurQu3E5fZJNmPkDG6WfiMIiR9ZwKlDo2WsAQsZ9KNqcW8S2GK9kXXlRwSPFg3oDI0Ec75JJasC4qHAsh3Fe6iwHwWJ5vX3vLDs5Wrul0ijQcssO6aOWGUfgTNHcwEzpJctpUzlcvUA9hQgofpMbcjV8he6gjFJ9VMRZrbOm9idKqzethAzgiVjovfWtDF9FkP1J50yLEaEKIECgGGm7dembk6UlyTUKB8R2wCw0fU81zFsPF6t5nK3raNsDE9UAtPq0OPIg5cF7JKsU8QZGhvT3ydq2KFe1UrjXiGEnyEKr7iQuD22CJWbmpIrixyqZWXpNsAJJhIouOeOi3Oz5VmIdYzmzBtw57Gg2KzePL3z9PjfTcgjDKXZEOdwtuQEdmIxqLeGefIho32PX6KmPMy09BFnMXRi77gVHdb0QveGUDqwBLVnyrIHE3u2cy4AVQlq9LanAMrKbl3GT7osu9EJ7rsWxgyEhwvcyQH9ySPEcOTrCDERkWt7IOgjKn73ZLwuZTk7F6NUgFnQR1oVHPyt7GCKu7IltubfdmB6mf4a2mdVptv0Qqez2Fh5i8hG2vdhjePYmE4ZTYduuKi7BhRTxeiUPiKTPbsP0V8EDD5HYIiGAAwfOO4y1SE3A0PIPLnB5nwxtGOaCcGwMsgBGVV7TqmtfP3NTWvl92J7Eh5fHwNgnX62g0ev0W8AlSXw8VaYXIL3Yqlqr9Le6b9KqRbtlYNN6k2pFyQDPP6yCJHEmQSHMfbFy3Id7Z8CDgicH57ZOayerS3TN5fc7zefd2x6dko8p8tgBlIcxHRCZSmZXJTjFXTMJc9khFj5dpBhiFvBQcKLihPOytKqLytdTb8yICoiSoFBVPP71CazVSmJLBsDouYt3TvNMwtUVNtT8TLrPfvafXF0Qkq1AgwA8u6vj2W63Sug5x6Z1GmMAx8kuPCreqIYo0WBBrlUD4dX7555sVZSdB19sVSu9b8JOxo21QnXa0JDihhSzSu4EeWqEi6LURr85tp81aI \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/ssd_fuse b/finalproject/ssd_fuse index 6241c18cc175dc3565dce85e259d94408abf8c12..e47f5cef1378599abe0521c61a841bd8be78b083 100644 GIT binary patch literal 35736 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 bf #include #include +#include +#include +using namespace std; #include "ssd_fuse_header.h" #define SSD_NAME "ssd_file" enum @@ -190,24 +193,68 @@ static unsigned int get_next_pca() } +//---------------------------------------------------------------- +vector dirty_pages(13, 0); + +//---------------------------------------------------------------- static int ftl_read( char* buf, size_t lba) { + cout << "[Read]" << endl; // TODO nand_read(buf, L2P[lba]); } static int ftl_write(const char* buf, size_t lba_range, size_t lba) { + cout << "[Write]" << endl; // TODO - printf("[Free block]: %d\n", free_block_number); - L2P[lba] = get_next_pca(); - P2L[(L2P[lba] & 0xFFFF0000)*10 + (L2P[lba] & 0xFFFF)] = lba; + // detect dirty page + if (L2P[lba] != INVALID_PCA) { + dirty_pages[L2P[lba]>>16]++; //get nand + } + PCA_RULE temp; + temp.pca = get_next_pca(); + L2P[lba] = temp.pca; + P2L[temp.fields.nand*10 + temp.fields.lba] = lba; nand_write(buf, L2P[lba]); } - +//---------------------------------------------------------------- + +static void gc() { + cout << "[GC]" << endl; + int free_b = 2; // free n blocks + while(free_b--) { + int del = 0, pages = dirty_pages[0]; + for (int i = 1; i < 13; i++) { + if (dirty_pages[i] > pages) { + del = i; + pages = dirty_pages[i]; + } + } + if (pages == 0) continue; + cout << del << endl; + PCA_RULE temp; + char *buf = (char *)malloc(512); + for (int i = 0; i < 10; i++) { + temp.pca = L2P[P2L[del*10+i]]; + printf("%x\n", temp.pca); + if (temp.fields.nand == del && temp.fields.lba == i) { // is valid page + // todo + ftl_read(buf, del*10+i); + ftl_write(buf, 0, del*10+i); + } + P2L[del*10+i] = INVALID_LBA; + } + free(buf); + nand_erase(del); + dirty_pages[del] = 0; + } + return; +} +//---------------------------------------------------------------- static int ssd_file_type(const char* path) { @@ -271,7 +318,7 @@ static int ssd_do_read(char* buf, size_t size, off_t offset) tmp_lba = offset / 512; tmp_lba_range = (offset + size - 1) / 512 - (tmp_lba) + 1; - tmp_buf = calloc(tmp_lba_range * 512, sizeof(char)); + tmp_buf = (char *)calloc(tmp_lba_range * 512, sizeof(char)); for (int i = 0; i < tmp_lba_range; i++) { // TODO @@ -314,10 +361,13 @@ static int ssd_do_write(const char* buf, size_t size, off_t offset) remain_size = size; curr_size = 0; - tmp_buf = malloc(512); + tmp_buf = (char *)malloc(512); for (idx = 0; idx < tmp_lba_range; idx++) { // TODO + // garbage collection + if (free_block_number < 3) + gc(); ftl_read(tmp_buf, tmp_lba+idx); if (idx == 0) { if (offset % 512) @@ -380,9 +430,9 @@ static int ssd_readdir(const char* path, void* buf, fuse_fill_dir_t filler, { return -ENOENT; } - filler(buf, ".", NULL, 0, 0); - filler(buf, "..", NULL, 0, 0); - filler(buf, SSD_NAME, NULL, 0, 0); + filler(buf, ".", NULL, 0, (enum fuse_fill_dir_flags)0); + filler(buf, "..", NULL, 0, (enum fuse_fill_dir_flags)0); + filler(buf, SSD_NAME, NULL, 0, (enum fuse_fill_dir_flags)0); return 0; } static int ssd_ioctl(const char* path, unsigned int cmd, void* arg, @@ -411,16 +461,18 @@ static int ssd_ioctl(const char* path, unsigned int cmd, void* arg, } return -EINVAL; } + static const struct fuse_operations ssd_oper = { .getattr = ssd_getattr, - .readdir = ssd_readdir, .truncate = ssd_truncate, .open = ssd_open, .read = ssd_read, .write = ssd_write, + .readdir = ssd_readdir, .ioctl = ssd_ioctl, }; + int main(int argc, char* argv[]) { int idx; @@ -430,11 +482,11 @@ int main(int argc, char* argv[]) curr_pca.pca = INVALID_PCA; free_block_number = PHYSICAL_NAND_NUM; - L2P = malloc(LOGICAL_NAND_NUM * PAGE_PER_BLOCK * sizeof(int)); + L2P = (unsigned int *)malloc(LOGICAL_NAND_NUM * PAGE_PER_BLOCK * sizeof(int)); memset(L2P, INVALID_PCA, sizeof(int) * LOGICAL_NAND_NUM * PAGE_PER_BLOCK); - P2L = malloc(PHYSICAL_NAND_NUM * PAGE_PER_BLOCK * sizeof(int)); + P2L = (unsigned int *)malloc(PHYSICAL_NAND_NUM * PAGE_PER_BLOCK * sizeof(int)); memset(P2L, INVALID_LBA, sizeof(int) * PHYSICAL_NAND_NUM * PAGE_PER_BLOCK); - valid_count = malloc(PHYSICAL_NAND_NUM * sizeof(int)); + valid_count = (unsigned int *)malloc(PHYSICAL_NAND_NUM * sizeof(int)); memset(valid_count, FREE_BLOCK, sizeof(int) * PHYSICAL_NAND_NUM); //create nand file From 4d1e44d6311dce94fba9c5f91a425c4909ef0068 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Tue, 7 Jun 2022 02:12:20 +0800 Subject: [PATCH 09/19] finish --- finalproject/hsj.sh | 0 finalproject/log.lo | 97 +++++++++++ finalproject/log.log | 350 ++++++++++++++++++++++++++++++++++++++ finalproject/nand_0 | 1 + finalproject/nand_1 | 2 +- finalproject/nand_10 | 2 +- finalproject/nand_11 | 2 +- finalproject/nand_12 | 1 + finalproject/nand_2 | 2 +- finalproject/nand_3 | 1 - finalproject/nand_4 | 2 +- finalproject/nand_5 | 2 +- finalproject/nand_6 | 2 +- finalproject/nand_7 | 2 +- finalproject/nand_8 | 2 +- finalproject/nand_9 | 2 +- finalproject/ssd_fuse | Bin 35736 -> 23472 bytes finalproject/ssd_fuse.cpp | 78 +++++---- finalproject/test.sh | 46 ++++- 19 files changed, 548 insertions(+), 46 deletions(-) create mode 100644 finalproject/hsj.sh create mode 100644 finalproject/log.lo create mode 100644 finalproject/log.log diff --git a/finalproject/hsj.sh b/finalproject/hsj.sh new file mode 100644 index 000000000..e69de29bb diff --git a/finalproject/log.lo b/finalproject/log.lo new file mode 100644 index 000000000..4e4887046 --- /dev/null +++ b/finalproject/log.lo @@ -0,0 +1,97 @@ +0 8 +8 16 +next block 1 +next block 2 +24 16 +next block 3 +40 16 +next block 4 +next block 5 +56 16 +next block 6 +next block 7 +72 16 +next block 8 +88 12 +next block 9 +29 3 +next block 10 +29 3 +29 3 +29 3 +next block 11 +29 3 +29 3 +29 3 +next block 12 +29 3 +[GC] 10 ,10 pages +[NAND ERASE] 10 +[GC] 12 ,9 pages +next block 10 +[NAND ERASE] 12 +29 3 +29 3 +29 3 +next block 12 +[GC] 11 ,10 pages +[NAND ERASE] 11 +[GC] 12 ,9 pages +next block 11 +[NAND ERASE] 12 +29 3 +29 3 +29 3 +next block 12 +[GC] 10 ,10 pages +[NAND ERASE] 10 +[GC] 12 ,9 pages +next block 10 +[NAND ERASE] 12 +29 3 +29 3 +29 3 +next block 12 +29 3 +[GC] 11 ,10 pages +[NAND ERASE] 11 +[GC] 12 ,9 pages +next block 11 +[NAND ERASE] 12 +29 3 +29 3 +29 3 +next block 12 +[GC] 10 ,10 pages +[NAND ERASE] 10 +[GC] 12 ,9 pages +next block 10 +[NAND ERASE] 12 +29 3 +29 3 +29 3 +next block 12 +[GC] 11 ,10 pages +[NAND ERASE] 11 +[GC] 12 ,9 pages +next block 11 +[NAND ERASE] 12 +29 3 +29 3 +29 3 +next block 12 +29 3 +[GC] 10 ,10 pages +[NAND ERASE] 10 +[GC] 12 ,9 pages +next block 10 +[NAND ERASE] 12 +29 3 +29 3 +29 3 +next block 12 +[GC] 11 ,10 pages +[NAND ERASE] 11 +[GC] 12 ,9 pages +next block 11 +[NAND ERASE] 12 diff --git a/finalproject/log.log b/finalproject/log.log new file mode 100644 index 000000000..740c4ba59 --- /dev/null +++ b/finalproject/log.log @@ -0,0 +1,350 @@ +0 8 +8 16 +next block 1/free block 11 +next block 2/free block 10 +24 16 +next block 3/free block 9 +40 16 +next block 4/free block 8 +next block 5/free block 7 +56 16 +next block 6/free block 6 +next block 7/free block 5 +72 16 +next block 8/free block 4 +88 12 +next block 9/free block 3 +88 3 +Change to Invalid: 88 8 88 +next block 10/free block 2 +Change to Invalid: 89 8 89 +Change to Invalid: 90 9 90 +88 3 +Change to Invalid: 88 10 100 +Change to Invalid: 89 10 101 +Change to Invalid: 90 10 102 +88 3 +Change to Invalid: 88 10 103 +Change to Invalid: 89 10 104 +Change to Invalid: 90 10 105 +88 3 +Change to Invalid: 88 10 106 +Change to Invalid: 89 10 107 +next block 11/free block 1 +Change to Invalid: 90 10 108 +88 3 +Change to Invalid: 88 10 109 +Change to Invalid: 89 11 110 +Change to Invalid: 90 11 111 +88 3 +Change to Invalid: 88 11 112 +Change to Invalid: 89 11 113 +Change to Invalid: 90 11 114 +88 3 +Change to Invalid: 88 11 115 +Change to Invalid: 89 11 116 +Change to Invalid: 90 11 117 +next block 12/free block 0 +88 3 +[GC] 10 ,10 pages +[NAND ERASE] 10 +[GC] 12 ,9 pages +temp pca: 12 0 c0000 90 +Change to Invalid: 90 12 120 +temp pca: 12 1 c0001 90 +Change to Invalid: 90 12 121 +temp pca: 12 2 c0002 90 +Change to Invalid: 90 12 122 +temp pca: 12 3 c0003 90 +Change to Invalid: 90 12 123 +temp pca: 12 4 c0004 90 +Change to Invalid: 90 12 124 +temp pca: 12 5 c0005 90 +Change to Invalid: 90 12 125 +temp pca: 12 6 c0006 90 +Change to Invalid: 90 12 126 +temp pca: 12 7 c0007 90 +Change to Invalid: 90 12 127 +temp pca: 12 8 c0008 90 +Change to Invalid: 90 12 128 +temp pca: 12 9 c0009 90 +Change to Invalid: 90 12 129 +next block 10/free block 0 +[NAND ERASE] 12 +Change to Invalid: 88 11 118 +Change to Invalid: 89 11 119 +Change to Invalid: 90 10 100 +88 3 +Change to Invalid: 88 10 101 +Change to Invalid: 89 10 102 +Change to Invalid: 90 10 103 +88 3 +Change to Invalid: 88 10 104 +Change to Invalid: 89 10 105 +Change to Invalid: 90 10 106 +88 3 +Change to Invalid: 88 10 107 +next block 12/free block 0 +[GC] 11 ,10 pages +[NAND ERASE] 11 +[GC] 12 ,9 pages +temp pca: 12 0 c0000 88 +Change to Invalid: 88 12 120 +temp pca: 12 1 c0001 88 +Change to Invalid: 88 12 121 +temp pca: 12 2 c0002 88 +Change to Invalid: 88 12 122 +temp pca: 12 3 c0003 88 +Change to Invalid: 88 12 123 +temp pca: 12 4 c0004 88 +Change to Invalid: 88 12 124 +temp pca: 12 5 c0005 88 +Change to Invalid: 88 12 125 +temp pca: 12 6 c0006 88 +Change to Invalid: 88 12 126 +temp pca: 12 7 c0007 88 +Change to Invalid: 88 12 127 +temp pca: 12 8 c0008 88 +Change to Invalid: 88 12 128 +temp pca: 12 9 c0009 88 +Change to Invalid: 88 12 129 +next block 11/free block 0 +[NAND ERASE] 12 +Change to Invalid: 89 10 108 +Change to Invalid: 90 10 109 +88 3 +Change to Invalid: 88 11 110 +Change to Invalid: 89 11 111 +Change to Invalid: 90 11 112 +88 3 +Change to Invalid: 88 11 113 +Change to Invalid: 89 11 114 +Change to Invalid: 90 11 115 +88 3 +Change to Invalid: 88 11 116 +Change to Invalid: 89 11 117 +next block 12/free block 0 +[GC] 10 ,10 pages +[NAND ERASE] 10 +[GC] 12 ,9 pages +temp pca: 12 0 c0000 89 +Change to Invalid: 89 12 120 +temp pca: 12 1 c0001 89 +Change to Invalid: 89 12 121 +temp pca: 12 2 c0002 89 +Change to Invalid: 89 12 122 +temp pca: 12 3 c0003 89 +Change to Invalid: 89 12 123 +temp pca: 12 4 c0004 89 +Change to Invalid: 89 12 124 +temp pca: 12 5 c0005 89 +Change to Invalid: 89 12 125 +temp pca: 12 6 c0006 89 +Change to Invalid: 89 12 126 +temp pca: 12 7 c0007 89 +Change to Invalid: 89 12 127 +temp pca: 12 8 c0008 89 +Change to Invalid: 89 12 128 +temp pca: 12 9 c0009 89 +Change to Invalid: 89 12 129 +next block 10/free block 0 +[NAND ERASE] 12 +Change to Invalid: 90 11 118 +88 3 +Change to Invalid: 88 11 119 +Change to Invalid: 89 10 100 +Change to Invalid: 90 10 101 +88 3 +Change to Invalid: 88 10 102 +Change to Invalid: 89 10 103 +Change to Invalid: 90 10 104 +88 3 +Change to Invalid: 88 10 105 +Change to Invalid: 89 10 106 +Change to Invalid: 90 10 107 +next block 12/free block 0 +88 3 +[GC] 11 ,10 pages +[NAND ERASE] 11 +[GC] 12 ,9 pages +temp pca: 12 0 c0000 90 +Change to Invalid: 90 12 120 +temp pca: 12 1 c0001 90 +Change to Invalid: 90 12 121 +temp pca: 12 2 c0002 90 +Change to Invalid: 90 12 122 +temp pca: 12 3 c0003 90 +Change to Invalid: 90 12 123 +temp pca: 12 4 c0004 90 +Change to Invalid: 90 12 124 +temp pca: 12 5 c0005 90 +Change to Invalid: 90 12 125 +temp pca: 12 6 c0006 90 +Change to Invalid: 90 12 126 +temp pca: 12 7 c0007 90 +Change to Invalid: 90 12 127 +temp pca: 12 8 c0008 90 +Change to Invalid: 90 12 128 +temp pca: 12 9 c0009 90 +Change to Invalid: 90 12 129 +next block 11/free block 0 +[NAND ERASE] 12 +Change to Invalid: 88 10 108 +Change to Invalid: 89 10 109 +Change to Invalid: 90 11 110 +88 3 +Change to Invalid: 88 11 111 +Change to Invalid: 89 11 112 +Change to Invalid: 90 11 113 +88 3 +Change to Invalid: 88 11 114 +Change to Invalid: 89 11 115 +Change to Invalid: 90 11 116 +88 3 +Change to Invalid: 88 11 117 +next block 12/free block 0 +[GC] 10 ,10 pages +[NAND ERASE] 10 +[GC] 12 ,9 pages +temp pca: 12 0 c0000 88 +Change to Invalid: 88 12 120 +temp pca: 12 1 c0001 88 +Change to Invalid: 88 12 121 +temp pca: 12 2 c0002 88 +Change to Invalid: 88 12 122 +temp pca: 12 3 c0003 88 +Change to Invalid: 88 12 123 +temp pca: 12 4 c0004 88 +Change to Invalid: 88 12 124 +temp pca: 12 5 c0005 88 +Change to Invalid: 88 12 125 +temp pca: 12 6 c0006 88 +Change to Invalid: 88 12 126 +temp pca: 12 7 c0007 88 +Change to Invalid: 88 12 127 +temp pca: 12 8 c0008 88 +Change to Invalid: 88 12 128 +temp pca: 12 9 c0009 88 +Change to Invalid: 88 12 129 +next block 10/free block 0 +[NAND ERASE] 12 +Change to Invalid: 89 11 118 +Change to Invalid: 90 11 119 +88 3 +Change to Invalid: 88 10 100 +Change to Invalid: 89 10 101 +Change to Invalid: 90 10 102 +88 3 +Change to Invalid: 88 10 103 +Change to Invalid: 89 10 104 +Change to Invalid: 90 10 105 +88 3 +Change to Invalid: 88 10 106 +Change to Invalid: 89 10 107 +next block 12/free block 0 +[GC] 11 ,10 pages +[NAND ERASE] 11 +[GC] 12 ,9 pages +temp pca: 12 0 c0000 89 +Change to Invalid: 89 12 120 +temp pca: 12 1 c0001 89 +Change to Invalid: 89 12 121 +temp pca: 12 2 c0002 89 +Change to Invalid: 89 12 122 +temp pca: 12 3 c0003 89 +Change to Invalid: 89 12 123 +temp pca: 12 4 c0004 89 +Change to Invalid: 89 12 124 +temp pca: 12 5 c0005 89 +Change to Invalid: 89 12 125 +temp pca: 12 6 c0006 89 +Change to Invalid: 89 12 126 +temp pca: 12 7 c0007 89 +Change to Invalid: 89 12 127 +temp pca: 12 8 c0008 89 +Change to Invalid: 89 12 128 +temp pca: 12 9 c0009 89 +Change to Invalid: 89 12 129 +next block 11/free block 0 +[NAND ERASE] 12 +Change to Invalid: 90 10 108 +88 3 +Change to Invalid: 88 10 109 +Change to Invalid: 89 11 110 +Change to Invalid: 90 11 111 +88 3 +Change to Invalid: 88 11 112 +Change to Invalid: 89 11 113 +Change to Invalid: 90 11 114 +88 3 +Change to Invalid: 88 11 115 +Change to Invalid: 89 11 116 +Change to Invalid: 90 11 117 +next block 12/free block 0 +88 3 +[GC] 10 ,10 pages +[NAND ERASE] 10 +[GC] 12 ,9 pages +temp pca: 12 0 c0000 90 +Change to Invalid: 90 12 120 +temp pca: 12 1 c0001 90 +Change to Invalid: 90 12 121 +temp pca: 12 2 c0002 90 +Change to Invalid: 90 12 122 +temp pca: 12 3 c0003 90 +Change to Invalid: 90 12 123 +temp pca: 12 4 c0004 90 +Change to Invalid: 90 12 124 +temp pca: 12 5 c0005 90 +Change to Invalid: 90 12 125 +temp pca: 12 6 c0006 90 +Change to Invalid: 90 12 126 +temp pca: 12 7 c0007 90 +Change to Invalid: 90 12 127 +temp pca: 12 8 c0008 90 +Change to Invalid: 90 12 128 +temp pca: 12 9 c0009 90 +Change to Invalid: 90 12 129 +next block 10/free block 0 +[NAND ERASE] 12 +Change to Invalid: 88 11 118 +Change to Invalid: 89 11 119 +Change to Invalid: 90 10 100 +88 3 +Change to Invalid: 88 10 101 +Change to Invalid: 89 10 102 +Change to Invalid: 90 10 103 +88 3 +Change to Invalid: 88 10 104 +Change to Invalid: 89 10 105 +Change to Invalid: 90 10 106 +88 3 +Change to Invalid: 88 10 107 +next block 12/free block 0 +[GC] 11 ,10 pages +[NAND ERASE] 11 +[GC] 12 ,9 pages +temp pca: 12 0 c0000 88 +Change to Invalid: 88 12 120 +temp pca: 12 1 c0001 88 +Change to Invalid: 88 12 121 +temp pca: 12 2 c0002 88 +Change to Invalid: 88 12 122 +temp pca: 12 3 c0003 88 +Change to Invalid: 88 12 123 +temp pca: 12 4 c0004 88 +Change to Invalid: 88 12 124 +temp pca: 12 5 c0005 88 +Change to Invalid: 88 12 125 +temp pca: 12 6 c0006 88 +Change to Invalid: 88 12 126 +temp pca: 12 7 c0007 88 +Change to Invalid: 88 12 127 +temp pca: 12 8 c0008 88 +Change to Invalid: 88 12 128 +temp pca: 12 9 c0009 88 +Change to Invalid: 88 12 129 +next block 11/free block 0 +[NAND ERASE] 12 +Change to Invalid: 89 10 108 +Change to Invalid: 90 10 109 diff --git a/finalproject/nand_0 b/finalproject/nand_0 index e69de29bb..a64c83377 100644 --- a/finalproject/nand_0 +++ b/finalproject/nand_0 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_1 b/finalproject/nand_1 index 538747f63..6d4c3b817 100644 --- a/finalproject/nand_1 +++ b/finalproject/nand_1 @@ -1 +1 @@ -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 \ No newline at end of file +ntAwSEikAhwoqtnTkZlOJHmJCIqlW5kpqQAn35tKzLQWctLAPbmim5E6KCaawTa0X4xf49NEH1knLMcyAE8JBhPOfsFXVmgxNzCNfgc2ZzavKFkrskA8thk1vf73zVu6arDTm1dRMFwT5grGwWdXJbboMcm7Tnlx7JQz8bqmyKa2YWMTJ3kSD25QxjbqIP8WL7cjEiPHeLVY7Yo78SqgxmkaNvN5dV6MewsGokgDl3tczN7W3Gx1sTN5jRT8pjgnYOi9E2SQFZzYqoZwfjLIZWW5U9KPxr6ywYj675VrXZS2j6iyLZUkuunW4f8wvM3Q6APZPsgYL0hnjwo8C5UgE0jIEvQiP4wu7PmEA3bQp1CiITgPCJeUMcNzjK2tOF7g4yiGv0YLKc2TEJus0vm0SrEOuOOI7DIRVpfB4DCaYiXX2RBjR3DKbSB05WxhNf57sNThLDpL1maUwQqHMZBGOTPdntiowqs8O4MI6FkgNLo8RsztGDBcQyoF40WPgC8Xe6flIATXzgLfCbmqd1x1SnniEA31J01ygvX0OFZ424BxN9jMj6wmkmTphfVHeCjethKNuj1F5DWG9FO594vfniqNOIzo9wNFz9uES9GR99liGt4XgmQqTaxKfutgOfgwzYme3bZSDypUKRnWSyvBYbfFTFJY87C29JMAEaaeerfMsFkBSRxlbfNsMQUx65HTytBwI8Ivy4B3YSzyPzeH304EZVuAIYJRMnidd0rhIDYY9hqRmwmWVSat9ktberUOgegGkCdVRV3qNbfg0B6WpKobthobugppeNngcEjVLD2cvypJn8FbfwAGOWy6Yqu0xMz8qygucaEaaKy1dUp0mm4X0OgEWxL88fyyWfJqOXQxuk2Vy7uFN5V1koASFqnDUnhZpGAgkHqJGjYNgSeRn50nIL6h0chW8DwKYEhvTz7vSMQOtTpECthDuuYsdBoLcZjJH3YB7oos2SmUwH3TTLFW6eCYHExPp7Y41ayZ0XseaUCquoW2RHQJoeXz6EGhaCz6ziN4lrAA34nSnLoIhzcozsKpry2sKVcJrCLwAQ46AxAwXPGbewZqdMiWKlGQa92AWgOCUcxjAXXmQpJin0reIRyI3MzQQ9mErYMN2WmdafE7rdSgnCq0UgW9pRLkf6inD7vZ7n0nYshJisdFj2KYbpyrRII7JmTfqINrjtoGiBZ8VInJ0ZMQlsu0Pc75Oj06woQL7IiUdAV8zvoyqMIUegKVeiTntbomiVsQXeUXol38hb5fKctzOy9GUONpi8lT2qvx2KpcSFy425Xk3YqQdDIisPyNu4egcmOkIcnMsQTfKCGNReg82y5qu8Yck362SkR2W5C8PPgaH6TwFfHCrYmLuB5AbuFCXdm5WoSuZrzPdLH0phN4ZyAB4x5HwIfCAdKlM3QL4YkR5GjoHVaqcp2qbIeNgJyQLTS5vtJudj2tV24bjfNs3fGRipexrOxkKZ3zvXGdblLd9uCS7h6g75wy8TyOTQhcVszUw8J4zKol7HRQECvjcwekroZ83MuSe7qWzamBIytbY513Bl44I2tRejrCVsPwrKOujqe3FfBoSAg8A8qXdxsoCo8SLf9fBF1Puu7MqFxFAMR7iODWCHb7ED4PBuRB0X91maoHx6RBooeKspTn5AjgHZ2IynRJcMZqG2653Ow0ZpZ0m65zC05X6IsjtJhILNeneO0Flm59Kl4opsNK4iEZCwRFKOLT4sOO70BxFBB0B9eNNPeNysj0jHFCwGcbcA90qUREKZpyZzTmGIIcF05T0DCwb86gHsxEB66BfLrP26iruCLhSpMZiR3LbOs5FngVltyDLUj9nkOub48X8iYMsvkZM1VR1eBLJaWAXwsgPo1nt4wwvaLsjCNjvc0ipVVZAj0QuopUrMPVlmsC2sQ7bElHa9vLzBKgiuf67nyhftp7KNTKLrOb1a4HfVzz88kvMAMLWOp5ifUKCgdziwYYmDkgVEGKeTC2QPDx4bWRSiT4pdkSEF7qOWmr3izFXY4pudBsSOVViIE4ZrM1mA3KWqIAAJjWt439sY9SlPx7VkwFGtZXwH5vbDG5W3yhhfUaTb4zKuvGBfuqMru74x149wisB7Ylfnkv5QrqpYj1XulqPxXmYQON39DCFlimp3x39kmcy69mOCMqaDHOYOQ98sJnkYeQEW6ExaCJlTGeciGiYda5uVUVmjlVY2GOTPuEzsnOoIyIUYf6AvYPLiKxHXAV0pWwpShu2x8FvknPYQAUp8UV3mcuFYAv48fEnKIVcu4DnuXydkd5haWqni1slCMA06qlVjSFuBMoaV8Uqo5caSCncib9Qdrn7CJCJeWwcuBgS2GBzwAsjWBVAPIOyL3TeUcsu0DYue6EPflg1J2p8A5Biu6BWIO7pwmV8BcyYBIJFjm5G2jCdlg9t2rVLlNHZtJl4tAnEcH1oLcjYxYiP8LNDGtZqe2JhemTxCTTNHTLzUtvSHeOpTVVreUChX4V83YYIIrQBdIdL4ON5NRK54pj8SEXUlPybIEfJFwiSRSjcljot9PyfM8lXCfJzdP0AdpmlVGzCD48NbbvIzkDZM8GSz6mbLQDerKRD1em6gQUKf7ZHWQpQVeyaSsXsrvT907AWSjmz1Rjx0NTqnS1dlPo8sPIrOm6agh8MPXj84iBEd3HPM7bBfsi1YtCD8MjD9jLPe5NC7FPbgXWTnDZKr0XUfISZ21qQKWEEfXoDZ9RsoUEiYqQ4zLFZmE5wy6ZWuAumR1zUK9wIvAIgXMbuXbJeCH1O0A8ePf48lx9UzyANuN0BwrIYoCNAEB0x2cxczPQ9lIfh1gnBGY1dHcBBtt6atHxj3ixoOSlHNfppwK5N5VbBvqh6oe8TdsejJhRW3yqTz49qAWmyAAySGd34P0QHejR4fuXgSCQg9HUJStBqZui3rxm0sKDxSPH1wFVNSNJDJq5egwIEyPmJ7LzHdpdfUKLYb4u2DGEYIr0IAQQjwvbGoyTSyNzUatXn65Efe5OPxzrS6PwbRFDx0RCVDfuKVPqSWA61dFuIGLOl5Cs4M6Cy9tXmiehu0WcnkARPXVcfdyFCnes67QTSd5j8Yxu9Dba5AlEYY2xn77BwWeAefkVC4Lbf9DFxAd4EtDp0Z7Xrhyc9iRnQcPjR9SH3LJPkYYJ1VR8LsFCM8Lei2WRBBW8b79QojnKw70VvGkZMdqiw02u1iUHLRzxTbf3dlcc6aG2EpQqoTd644pWHwNkzVFpHQdXVIpSe8rCPUMq2EJuvmFeQ3xxGyClKLm0wnHMubH8Yxww9QLqmRbnoeAAbxgAEVUqBbMXEMhRDl6EYFdq00uo4xbHvErNsbSG0r57jULckDuCA3q8DmI4slQyq6V0EWEXYbRgAEsYwwwMIIMePcgd1Vw7G3nlpKy1H3htrk84XFbXJxPT1gDDbbEqQUBYVRNMMSLvPzsF3btKK0ZgcXCAYKctJOSMtnBnPjS3Pj1CjQRRC1h4wuImfsOUcC6wXnYltVzTfnr7WQVencz0VIHazO8md5I7aXlzdxuoc8nDuddqEUTZtSjmfTsR5xgSWvrt2MbQFQwl6BF3OPBuegUY2M2WAl4OirnJIPRfDPaKu2UWadfmovtHWI2mdTqjiZHUT4GDeWHs16yeH7hGpnLoYTfqYf74JQvAUL0m1OTlgprMCD1DUCyLNxZLYEqoTlfQIxxmGv9x7YwerGsHwVMdhiWESOYjsJgQmpdZjSuusnKUe2ABBlBXf7Q1n0ciDNEB5WbHljKSnGH5ECgBHipMh0YQCzcSnfawNKBv8qpPrEPUUELydeQG3LY0W4yzErqX0poS0f3YQw5Q3mB2GhsSnf1H6zddCkuzrjsk0KfUm0DgPtsR1KlrSL46CGg5PfAQr1zo6p5GpBYa9rANPN9r9lUI5G8UwyWgVY3dvkkfu3scLRrk5dVEijDcnqKl4rK4hbImRzZT9r9uqkvhnl26FKAXixFzjKntzyNkCworzDitoJzpLvsJThJxKEa1vaEJQp24SzNb35iL791v2dgFdnzJMFRuBhBN3HMYoIxeQveiR9vXO9fp8PJOHbtyk9sGqRBhz3grEUD1RGq1o7rtHsYSh2jPIJiNXTVzI0FxzVxYsELO8oNbbJBagZ4rwK50n7kpcUWz2krqzzRTJSK7Vh9TIUogLXkudD9Pgw9rJ6lDef32cxVCaNVVjP3vGwIZgWAyA8otusW1JGmN3fEzAGBWbIIKIEzqPNskVdKg5em4Y8yrRBuSTY17IadsmKEyKoIwqyIvQnSfu9ODPkaCYKUo8uSq89izVKmuj9MmDkjJXnWvDkaXaFWpimOEsjFTG6CDjTbMfGeynwj8Cq0N0puSvtamMdL22PcjaGcGOT6sdvqHuYOaDCUS8XU3ziTZlHQTTjHC9gIZHaSpbJ1uzgzKNtiiu81d5UONZdxHKzRme0ZSXODINljnM0SADGY4w0NSLQu7ojFq33IiyYNpwwyTPrpxVLFhgcgYeKX9rhUF2pb2cL2duUvOwjFDZmlx6wSGzfhQ9hPpSR7vaghaNhZ1Vds2fy671Po6K25OT8FMTvdqvM2hvtZEKuQxxWLuxuatqamFxWtEZOgYoZXHQx5o4aXjQKLH315tUiaFX4UMkbpH8YoddXUHww5OMenO43YcVwYdTjv4gxDi9FQ6D8bh1nvpa7DIc4pgLdmUDfNJAcETnjS2VnLV8foY5Mx91mhQWgjgqZdu74DYmgkO7yE0pmhayBsBFdrG4iOluavvBHpJJ0vmMsGj9JAPnjgTUxcpb0DdFBZlozrKi3SA1SVzQ94VVUHyEEAsY9L3XcU0Xcu2eD8ckUiHfLbsOwgzudZxw2tjImgzh1h72a2wZkr1QcxBElxshYVxzJQIMoaNoUphG2J9je77gp29C3p9Haoiw8wx624Mdf2SFIU92aBHsE8grtUTdaLAmtRx2Czf6vDIxpeIoPqmubxHiTos2xvYeLXobsLUx8NmVvGcHVv7T6Y4a075MvrnMKhgX7eo1BCogKbUCAa94b0VeddEKuepRMQfnIOjWzOB0sLHMvTiDyjngexBKQYYx3FW3Kmco7wdqnLJeW3rjjljqGVHEV0h2bAnVbJY \ No newline at end of file diff --git a/finalproject/nand_10 b/finalproject/nand_10 index 5231e0904..041c20060 100644 --- a/finalproject/nand_10 +++ b/finalproject/nand_10 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_11 b/finalproject/nand_11 index c1a01966f..ada01e4ec 100644 --- a/finalproject/nand_11 +++ b/finalproject/nand_11 @@ -1 +1 @@ -gV8Bt7AkzceHJ6HqQ9flemhz8DDPdEsZkrRBX4Do88UYnWERgL2A9Cn2J4Gbi8TEiJR5RKNMMzOyApiUgvTamCEAJvhcDjDCJhiwkaxMnRmGWehIfvIstTSdETHUNOstHTr3gtu4JrkCA6mF0Kuxl1KUpI4bTJBAr49qXPTPJJSCqWaiWPOauPUcWL8afoPIDEPBWNwO9DVXJenPzkj77dKdxwgszwo2XG3P5gUAUtW4TePjY9QgL5xnDzF8m6nBmmhVK2rWcR3OVUIbkjz5HUHDQf6emLX6VBuPeXmA0sK3gH6euU5vC2vfIvFwZ5SJKgbWspdnkfXxCuBt2WUGrJ4aso5zevTfrw3b1m3XGh85TvENziKBkBXTw2r7OpY1zmvbaPUABKjXE5zp5UQjPSrFepCSilIzjAxLjynmEj3hSLkL4E6kMjAut3mWlEiKmUSWRsFWExnRuWG3L1VU4cNozrr1LNoLYjbdkYV8SG7MbWbXYdFAFcndAeC0T4I0 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_12 b/finalproject/nand_12 index e69de29bb..2682a4ac4 100644 --- a/finalproject/nand_12 +++ b/finalproject/nand_12 @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/finalproject/nand_2 b/finalproject/nand_2 index 49f85efc4..336cff7f8 100644 --- a/finalproject/nand_2 +++ b/finalproject/nand_2 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_3 b/finalproject/nand_3 index 546ab67c5..e69de29bb 100644 --- a/finalproject/nand_3 +++ b/finalproject/nand_3 @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/finalproject/nand_4 b/finalproject/nand_4 index 593d34dc8..80fe167c6 100644 --- a/finalproject/nand_4 +++ b/finalproject/nand_4 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_5 b/finalproject/nand_5 index ed6d3820e..0191f7173 100644 --- a/finalproject/nand_5 +++ b/finalproject/nand_5 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_6 b/finalproject/nand_6 index fea1a913d..35f23cf01 100644 --- a/finalproject/nand_6 +++ b/finalproject/nand_6 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_7 b/finalproject/nand_7 index e49f8169f..25828f2b0 100644 --- a/finalproject/nand_7 +++ b/finalproject/nand_7 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_8 b/finalproject/nand_8 index 011123b22..f43b1e476 100644 --- a/finalproject/nand_8 +++ b/finalproject/nand_8 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/nand_9 b/finalproject/nand_9 index ac2747c70..685f05248 100644 --- a/finalproject/nand_9 +++ b/finalproject/nand_9 @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/finalproject/ssd_fuse b/finalproject/ssd_fuse index e47f5cef1378599abe0521c61a841bd8be78b083..82b6f526c9a0a3cbfac59cb6d511e9dcb1fcb652 100644 GIT binary patch literal 23472 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 #include #include +#include #include #include using namespace std; @@ -128,7 +129,7 @@ static int nand_write(const char* buf, int pca) static int nand_erase(int block_index) { - printf("[NAND ERASE]\n"); + printf("[NAND ERASE] %d\n", block_index); char nand_name[100]; FILE* fptr; snprintf(nand_name, 100, "%s/nand_%d", NAND_LOCATION, block_index); @@ -140,11 +141,12 @@ static int nand_erase(int block_index) } fclose(fptr); valid_count[block_index] = FREE_BLOCK; + free_block_number++; return 1; } static unsigned int get_next_block() -{ +{ for (int i = 0; i < PHYSICAL_NAND_NUM; i++) { if (valid_count[(curr_pca.fields.nand + i) % PHYSICAL_NAND_NUM] == FREE_BLOCK) @@ -194,27 +196,29 @@ static unsigned int get_next_pca() } //---------------------------------------------------------------- -vector dirty_pages(13, 0); //---------------------------------------------------------------- static int ftl_read( char* buf, size_t lba) { - cout << "[Read]" << endl; // TODO + //printf("[Read phy] %x\n", L2P[lba]); nand_read(buf, L2P[lba]); } static int ftl_write(const char* buf, size_t lba_range, size_t lba) { - cout << "[Write]" << endl; // TODO // detect dirty page if (L2P[lba] != INVALID_PCA) { - dirty_pages[L2P[lba]>>16]++; //get nand + printf("[Change to invalid] %u %u\n", lba, (L2P[lba]>>16)*10+(L2P[lba]&0xffff)); + valid_count[L2P[lba]>>16]--; //get nand + + P2L[(L2P[lba]>>16)*10+(L2P[lba]&0xffff)] = INVALID_LBA; } PCA_RULE temp; temp.pca = get_next_pca(); + printf("[New] %u\n", (temp.pca>>16)*10+(temp.pca&0xffff)); L2P[lba] = temp.pca; P2L[temp.fields.nand*10 + temp.fields.lba] = lba; @@ -224,33 +228,46 @@ static int ftl_write(const char* buf, size_t lba_range, size_t lba) //---------------------------------------------------------------- static void gc() { - cout << "[GC]" << endl; - int free_b = 2; // free n blocks - while(free_b--) { - int del = 0, pages = dirty_pages[0]; - for (int i = 1; i < 13; i++) { - if (dirty_pages[i] > pages) { + int free_b = 7; // free n blocks + while(free_b > 0 || free_block_number < 2) { + // run gc + int del = -1; + unsigned int pages = 11; + for (int i = 0; i < 13; i++) { + if (i == curr_pca.fields.nand) continue; + if (valid_count[i] < pages) { del = i; - pages = dirty_pages[i]; + pages = valid_count[i]; } } - if (pages == 0) continue; - cout << del << endl; + if (del == -1 || pages == FREE_BLOCK) { + break; + } + printf("[GC] %d ,%d pages\n", del, 10-pages); PCA_RULE temp; char *buf = (char *)malloc(512); for (int i = 0; i < 10; i++) { - temp.pca = L2P[P2L[del*10+i]]; - printf("%x\n", temp.pca); - if (temp.fields.nand == del && temp.fields.lba == i) { // is valid page + //temp.pca = L2P[P2L[del*10+i]]; + if (P2L[del*10+i] != INVALID_LBA) { + //if (temp.fields.nand == del && temp.fields.lba == i) { // is valid page // todo - ftl_read(buf, del*10+i); - ftl_write(buf, 0, del*10+i); + //printf("temp pca: %d %d %x %d\n", del, i, L2P[P2L[del*10+i]], P2L[del*10+i]); + ftl_read(buf, P2L[del*10+i]); + ftl_write(buf, 0, P2L[del*10+i]); + P2L[del*10+i] = INVALID_LBA; + } + else { + free_b--; } - P2L[del*10+i] = INVALID_LBA; } free(buf); nand_erase(del); - dirty_pages[del] = 0; + + } + printf("curr pca: %x\n", curr_pca.pca); + printf("finish GC\n"); + for (int i = 0; i < 13; i++) { + printf("%x ", valid_count[i]); } return; } @@ -322,10 +339,10 @@ static int ssd_do_read(char* buf, size_t size, off_t offset) for (int i = 0; i < tmp_lba_range; i++) { // TODO - ftl_read(tmp_buf+512*i, tmp_lba+i); + ftl_read(tmp_buf+(512*i), tmp_lba+i); } - memcpy(buf, tmp_buf + offset % 512, size); + memcpy(buf, tmp_buf + (offset % 512), size); free(tmp_buf); @@ -366,15 +383,14 @@ static int ssd_do_write(const char* buf, size_t size, off_t offset) { // TODO // garbage collection - if (free_block_number < 3) + if (free_block_number == 0) gc(); + //if (L2P[tmp_lba+idx] != INVALID_PCA) // read-modify-write ftl_read(tmp_buf, tmp_lba+idx); if (idx == 0) { - if (offset % 512) - process_size = offset % 512; - else - process_size = 512; - memcpy((char *)tmp_buf+512-process_size, (char *)buf+curr_size, process_size); + process_size = 512 - (offset % 512); + if (size < process_size) process_size = size; // size < 512 + memcpy((char *)tmp_buf+(offset % 512), (char *)buf+curr_size, process_size); } else if (idx == tmp_lba_range-1) { process_size = remain_size; @@ -384,9 +400,9 @@ static int ssd_do_write(const char* buf, size_t size, off_t offset) process_size = 512; memcpy((char *)tmp_buf, (char *)buf+curr_size, process_size); } - curr_size += process_size; remain_size -= process_size; + printf("[process] %d [curr] %d [remain] %d\n", process_size, curr_size, remain_size); ftl_write(tmp_buf, 0, tmp_lba+idx); } free(tmp_buf); diff --git a/finalproject/test.sh b/finalproject/test.sh index 594f76a40..673963f51 100644 --- a/finalproject/test.sh +++ b/finalproject/test.sh @@ -23,11 +23,49 @@ case "$1" in cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 11264 > ${TEMP} for i in $(seq 0 9) do - dd if=${TEMP} skip=$(($i*1024)) of=${GOLDEN} oflag=seek_bytes seek=$(($i*5120)) bs=1024 count=1 conv=notrunc 2> /dev/null - dd if=${TEMP} skip=$(($i*1024)) of=${SSD_FILE} oflag=seek_bytes seek=$(($i*5120)) bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} iflag=skip_bytes skip=$(($i*1024)) of=${GOLDEN} oflag=seek_bytes seek=$(($i*5120)) bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} iflag=skip_bytes skip=$(($i*1024)) of=${SSD_FILE} oflag=seek_bytes seek=$(($i*5120)) bs=1024 count=1 conv=notrunc 2> /dev/null + done + dd if=${TEMP} iflag=skip_bytes skip=10240 of=${GOLDEN} oflag=seek_bytes seek=0 bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} iflag=skip_bytes skip=10240 of=${SSD_FILE} oflag=seek_bytes seek=0 bs=1024 count=1 conv=notrunc 2> /dev/null + ;; + "test3") + cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 51200 | tee ${SSD_FILE} > ${GOLDEN} 2> /dev/null + cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 11264 > ${TEMP} + for i in $(seq 0 49) + do + dd if=${TEMP} iflag=skip_bytes skip=$(($i*512)) of=${GOLDEN} oflag=seek_bytes seek=$(($i*1024)) bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} iflag=skip_bytes skip=$(($i*512)) of=${SSD_FILE} oflag=seek_bytes seek=$(($i*1024)) bs=1024 count=1 conv=notrunc 2> /dev/null + done + dd if=${TEMP} iflag=skip_bytes skip=10240 of=${GOLDEN} oflag=seek_bytes seek=0 bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} iflag=skip_bytes skip=10240 of=${SSD_FILE} oflag=seek_bytes seek=0 bs=1024 count=1 conv=notrunc 2> /dev/null + ;; + "test4") + cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 51200 | tee ${SSD_FILE} > ${GOLDEN} 2> /dev/null + cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 51200 > ${TEMP} + for i in $(seq 0 400) + do + skip_b=$(shuf -i 10240-20480 -n 1) + seek_b=$(shuf -i 10240-20480 -n 1) + echo $skip_b $seek_b + dd if=${TEMP} iflag=skip_bytes skip=${skip_b} of=${GOLDEN} oflag=seek_bytes seek=${seek_b} bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} iflag=skip_bytes skip=${skip_b} of=${SSD_FILE} oflag=seek_bytes seek=${seek_b} bs=1024 count=1 conv=notrunc 2> /dev/null + if [ ! -z "$(diff ${GOLDEN} ${SSD_FILE})" ]; then + echo -1 + exit 1 + fi + done + ;; + "mytest") + cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 51200 | tee ${SSD_FILE} > ${GOLDEN} 2> /dev/null + cat /dev/urandom | tr -dc '[:alpha:][:digit:]' | head -c 51200 > ${TEMP} + skip_b=$(shuf -i 0-50176 -n 1) + seek_b=$(shuf -i 0-50176 -n 1) + for i in $(seq 0 100) + do + dd if=${TEMP} iflag=skip_bytes skip=${skip_b} of=${GOLDEN} oflag=seek_bytes seek=${seek_b} bs=1024 count=1 conv=notrunc 2> /dev/null + dd if=${TEMP} iflag=skip_bytes skip=${skip_b} of=${SSD_FILE} oflag=seek_bytes seek=${seek_b} bs=1024 count=1 conv=notrunc 2> /dev/null done - dd if=${TEMP} skip=10240 of=${GOLDEN} oflag=seek_bytes seek=0 bs=1024 count=1 conv=notrunc 2> /dev/null - dd if=${TEMP} skip=10240 of=${SSD_FILE} oflag=seek_bytes seek=0 bs=1024 count=1 conv=notrunc 2> /dev/null ;; *) printf "Usage: sh test.sh test_pattern\n" From 7ea0806a874083079992fb49221f1cb9ade45d5c Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Thu, 9 Jun 2022 15:09:06 +0800 Subject: [PATCH 10/19] lab7 --- lab7/include/initramfs.h | 25 +++++++ lab7/include/vfs.h | 2 + lab7/kernel8.elf | Bin 37040 -> 39608 bytes lab7/kernel8.img | Bin 27472 -> 29504 bytes lab7/obj/initramfs_c.o | Bin 0 -> 5776 bytes lab7/obj/main_c.o | Bin 4744 -> 4816 bytes lab7/obj/vfs_c.o | Bin 6888 -> 8048 bytes lab7/src/initramfs.c | 150 +++++++++++++++++++++++++++++++++++++++ lab7/src/main.c | 1 + lab7/src/vfs.c | 48 +++++++++---- 10 files changed, 214 insertions(+), 12 deletions(-) create mode 100644 lab7/include/initramfs.h create mode 100644 lab7/obj/initramfs_c.o create mode 100644 lab7/src/initramfs.c diff --git a/lab7/include/initramfs.h b/lab7/include/initramfs.h new file mode 100644 index 000000000..56f1699ba --- /dev/null +++ b/lab7/include/initramfs.h @@ -0,0 +1,25 @@ +#ifndef _INITRAMFS_H +#define _INITRAMFS_H + +#include "vfs.h" + +#define EOF (-1) + +struct initramfs_internal { + int type; + char *name; + struct vnode *vnode; + int size; + void *data; +}; + +int initramfs_register(); +int initramfs_setup_mount(struct filesystem* fs, struct mount* mount); +struct vnode* initramfs_create_vnode(struct initramfs_internal* initramfs_node); + +int initramfs_lookup(struct vnode* dir, struct vnode** target, const char* component_name); +int initramfs_create(struct vnode* dir, struct vnode** target, const char* component_name); +int initramfs_write(struct file* file, const void* buf, size_t len); +int initramfs_read(struct file* file, void* buf, size_t len); +int initramfs_mkdir(struct vnode* dir, struct vnode** target, const char* component_name); +#endif \ No newline at end of file diff --git a/lab7/include/vfs.h b/lab7/include/vfs.h index e8b9ca0fb..f4122a89a 100644 --- a/lab7/include/vfs.h +++ b/lab7/include/vfs.h @@ -59,6 +59,7 @@ struct vnode_operations { extern struct mount *rootfs; void rootfs_init(void); +void mount_initramfs(void); int register_filesystem(struct filesystem *fs); int vfs_open(const char *pathname, int flags, struct file **target); @@ -66,6 +67,7 @@ int vfs_close(struct file *file); int vfs_write(struct file *file, const void *buf, size_t len); int vfs_read(struct file *file, void *buf, size_t len); int vfs_mkdir(const char *pathname); +int vfs_chdir(const char *pathname); int vfs_mount(const char *target, const char *filesystem); int vfs_lookup(const char *pathname, struct vnode **target); #endif diff --git a/lab7/kernel8.elf b/lab7/kernel8.elf index b7a2d8335b779727edf9bba71a5fabc1e0eba4af..e68d04e5f97fc05c9fcfa41026e1a8ee91d4687f 100644 GIT binary patch delta 10655 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 delta 3997 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 diff --git a/lab7/obj/vfs_c.o b/lab7/obj/vfs_c.o index 4d4f06ef4ba513c40d49e121e42c7f902adad15f..d511798517ac0c34fa6eb99f2793a4b7664ef5a0 100644 GIT binary patch literal 8048 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 = &initramfs_lookup; + initramfs_v_ops->create = &initramfs_create; + initramfs_v_ops->mkdir = &initramfs_mkdir; + initramfs_f_ops = (struct file_operations*)malloc(sizeof(struct file_operations)); + initramfs_f_ops->write = &initramfs_write; + initramfs_f_ops->read = &initramfs_read; + return 0; +} + +int initramfs_setup_mount(struct filesystem* fs, struct mount* mount) { + struct initramfs_internal* initramfs_root = (struct initramfs_internal*)malloc(sizeof(struct initramfs_internal)); + initramfs_root->type = DIRECTORY; + initramfs_root->name = (char *)malloc(2); + strcpy(initramfs_root->name, "/"); + struct node *root_vnode = initramfs_create_vnode(initramfs_root); + mount->root = root_vnode; + mount->fs = fs; + initramfs_root->vnode = root_vnode; + return 0; +} + +struct vnode* initramfs_create_vnode(struct initramfs_internal* initramfs_node) { + struct vnode* vnode = (struct vnode*)malloc(sizeof(struct vnode)); + vnode->f_ops = initramfs_f_ops; + vnode->v_ops = initramfs_v_ops; + vnode->internal = initramfs_node; + return vnode; +} + +int initramfs_create(struct vnode* dir, struct vnode** target, const char* component_name) { + return -1; +} + +// vnode operations +int initramfs_lookup(struct vnode* dir, struct vnode** target, const char* component_name) { + // component_name is empty, return dir vnode + if (!strcmp(component_name, "")) { + return -1; + } + else if (!strcmp(component_name, ".")) { + *target = dir; + return 0; + } + else if (!strcmp(component_name, "..")) { // todo: cross filesystem + *target = dir; + if (dir->mount_parent) { + *target = dir->mount_parent; + return 0; + } + return -1; + } + // search component_name in dir + if (dir->mount != NULL) + dir = dir->mount->root; + printf("[INITRAMFS LOOKUP]%s\n", component_name); + char *program_pos; + cpio_newc_header *fs = (cpio_newc_header *)0x8000000; + char *current = (char *)0x8000000; + int name_size; + int file_size; + char *name_pos; + while (1) { + fs = (cpio_newc_header *)current; + name_size = hex_to_int(fs->c_namesize, 8); + file_size = hex_to_int(fs->c_filesize, 8); + current += 110; + if (strcmp(current, "TRAILER!!!") == 0) { + uart_puts("No such file!\n"); + break; + } + name_pos = current; + if (strcmp(current, component_name) == 0) { + current += name_size; + while ((current - (char *)fs) % 4 != 0) + current++; + program_pos = (char *)current; + break; + } else { + current += name_size; + while ((current - (char *)fs) % 4 != 0) + current++; + current += file_size; + while ((current - (char *)fs) % 4 != 0) + current++; + } + } + char *new_program_pos = (char *)malloc(file_size); + for (int i = 0; i < file_size; i++) { + *(new_program_pos+i) = *(program_pos+i); + } + printf("name pos : %x\n", name_pos); + printf("program pos : %x\n", new_program_pos); + struct initramfs_internal* file_node = (struct initramfs_internal*)malloc(sizeof(struct initramfs_internal)); + file_node->type = REGULAR_FILE; + file_node->name = name_pos; + file_node->size = file_size; + file_node->data = (void *)new_program_pos; + file_node->vnode = initramfs_create_vnode(file_node); + *target = file_node->vnode; + // for (int i = 0; i < MAX_ENTRIES; i++) { + // struct initramfs_internal* file_node = ((struct initramfs_internal*)dir->internal)->child[i]; + // if ((file_node != NULL) & !strcmp(file_node->name, component_name)) { + // *target = file_node->vnode; + // printf("[lookup] 0x%x\n", *target); + // return 0; + // } + // } + // *target = NULL; + return 0; +} + +int initramfs_write(struct file* file, const void* buf, size_t len) { + return -1; +} + +int initramfs_read(struct file* file, void* buf, size_t len) { + if (((struct initramfs_internal *)file->vnode->internal)->type != REGULAR_FILE) { + printf("Read on not regular file\n"); + return -1; + } + struct initramfs_internal* file_node = (struct initramfs_internal *)file->vnode->internal; + + char *dest = (char*)buf; + char *src = &(file_node->data[file->f_pos]); + size_t i = 0; + for (; i < len && file->f_pos < file_node->size; i++) { + dest[i] = src[i]; + file->f_pos++; + } + return i; + +} + +int initramfs_mkdir(struct vnode* dir, struct vnode** target, const char* component_name) { + return -1; +} + + diff --git a/lab7/src/main.c b/lab7/src/main.c index 5c7945490..96cc5dcbd 100644 --- a/lab7/src/main.c +++ b/lab7/src/main.c @@ -70,6 +70,7 @@ void main() { init_printf(NULL, putc); memory_init(); rootfs_init(); + mount_initramfs(); task_init(); core_timer_enable(); cpu_timer_register_enable(); diff --git a/lab7/src/vfs.c b/lab7/src/vfs.c index 915bad847..553b6ef8c 100644 --- a/lab7/src/vfs.c +++ b/lab7/src/vfs.c @@ -2,6 +2,7 @@ #include "memory.h" #include "printf.h" #include "tmpfs.h" +#include "initramfs.h" #include "typedef.h" #include "utils.h" #include "sched.h" @@ -19,6 +20,11 @@ void rootfs_init() { tmpfs->setup_mount(tmpfs, rootfs); } +void mount_initramfs() { + vfs_mkdir("/initramfs"); + vfs_mount("/initramfs", "initramfs"); +} + int register_filesystem(struct filesystem *fs) { // register the file system to the kernel. // you can also initialize memory pool of the file system here. @@ -26,6 +32,10 @@ int register_filesystem(struct filesystem *fs) { printf("[%u] Register tmpfs\n", get_timestamp()); return tmpfs_register(); } + if(!strcmp(fs->name, "initramfs")) { + printf("[%u] Register initramfs\n", get_timestamp()); + return initramfs_register(); + } return -1; } @@ -158,18 +168,32 @@ int vfs_mount(const char *target, const char *filesystem) { struct vnode *mount_dir; int lookup_res = parent_dir->v_ops->lookup(parent_dir, &mount_dir, path_remain); if (lookup_res < 0) return lookup_res; - printf("[Mount] [%s]\n", ((struct tmpfs_internal *)mount_dir->internal)->name); - - // mount fs on mountpoint - struct mount *mt = (struct mount*)malloc(sizeof(struct mount)); - struct filesystem* tmpfs = (struct filesystem*)malloc(sizeof(struct filesystem)); - tmpfs->name = (char*)malloc(sizeof(char) * strlen(filesystem)+1); - strcpy(tmpfs->name, filesystem); - tmpfs->setup_mount = &tmpfs_setup_mount; - tmpfs->setup_mount(tmpfs, mt); - mount_dir->mount = mt; - - mount_dir->mount->root->mount_parent = parent_dir; + //printf("[Mount] [%s]\n", ((struct tmpfs_internal *)mount_dir->internal)->name); + + if (!strcmp(filesystem, "tmpfs")) { + // mount fs on mountpoint + struct mount *mt = (struct mount*)malloc(sizeof(struct mount)); + struct filesystem* tmpfs = (struct filesystem*)malloc(sizeof(struct filesystem)); + tmpfs->name = (char*)malloc(sizeof(char) * strlen(filesystem)+1); + strcpy(tmpfs->name, filesystem); + tmpfs->setup_mount = &tmpfs_setup_mount; + tmpfs->setup_mount(tmpfs, mt); + mount_dir->mount = mt; + + mount_dir->mount->root->mount_parent = parent_dir; + } + if (!strcmp(filesystem, "initramfs")) { + struct mount *mt = (struct mount*)malloc(sizeof(struct mount)); + struct filesystem* tmpfs = (struct filesystem*)malloc(sizeof(struct filesystem)); + tmpfs->name = (char*)malloc(sizeof(char) * strlen(filesystem)+1); + strcpy(tmpfs->name, filesystem); + tmpfs->setup_mount = initramfs_setup_mount; + register_filesystem(tmpfs); + tmpfs->setup_mount(tmpfs, mt); + mount_dir->mount = mt; + + mount_dir->mount->root->mount_parent = parent_dir; + } return 0; } From fe40586a12abbc36aeb2d9978a84983cebf7f334 Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Thu, 9 Jun 2022 15:11:44 +0800 Subject: [PATCH 11/19] fix lab5 (6 not good) --- lab5/obj/exception_c.o | Bin 6560 -> 6568 bytes lab5/obj/freelist_c.o | Bin 3184 -> 3184 bytes lab5/obj/main_c.o | Bin 4624 -> 4624 bytes lab5/obj/mbox_c.o | Bin 1856 -> 1856 bytes lab5/obj/memory_c.o | Bin 10464 -> 10464 bytes lab5/obj/printf_c.o | Bin 4856 -> 4856 bytes lab5/obj/sched_c.o | Bin 6216 -> 6216 bytes lab5/obj/uart_c.o | Bin 4128 -> 4128 bytes lab5/obj/utils_c.o | Bin 3464 -> 3464 bytes lab6/include/utils.h | 1 - lab6/kernel8.elf | Bin 53600 -> 53584 bytes lab6/kernel8.img | Bin 22224 -> 22208 bytes lab6/obj/exception_c.o | Bin 14808 -> 14680 bytes lab6/obj/freelist_c.o | Bin 6400 -> 6400 bytes lab6/obj/main_c.o | Bin 7200 -> 7200 bytes lab6/obj/mbox_c.o | Bin 4576 -> 4584 bytes lab6/obj/memory_c.o | Bin 17744 -> 17744 bytes lab6/obj/mmu_c.o | Bin 8400 -> 8400 bytes lab6/obj/printf_c.o | Bin 11368 -> 11368 bytes lab6/obj/sched_c.o | Bin 11632 -> 11632 bytes lab6/obj/uart_c.o | Bin 7872 -> 7880 bytes lab6/obj/utils_c.o | Bin 7752 -> 7752 bytes lab6/src/exception.c | 4 +--- 23 files changed, 1 insertion(+), 4 deletions(-) diff --git a/lab5/obj/exception_c.o b/lab5/obj/exception_c.o index 7a670f1449352146b8d86e0cb6d7ed7bcec680f6..03c63d41900662bad5f8c2e8a06203bdd3dddac3 100644 GIT binary patch delta 95 zcmZ2ryux^b24luX&3X=gJwr_eOFa`k0|qeIyq?38kFj9$Pce2zMxDuw66Q>sI3_2G qiA@fW&|us#xl+QO@yFzyK+<6HPaw%L*;3M;lR*rkJ8`n3xI6%t8y9Z? delta 82 zcmZ2syuf&Z24liT&3X=YO$AFm6Fq~?+c`Y>7&A6AinB8^YE9;pFlXE_*-^qCNHzk= f50ei9NsY;jlJ<-YlN}}PIe&;UfI;G9PjPtwp-mL* diff --git a/lab5/obj/freelist_c.o b/lab5/obj/freelist_c.o index 43f39357c911d8dd94c254c5a9cb9c1495ccf5ce..de18d23c330154e2993c4dd7beb770a6583a6b39 100644 GIT binary patch delta 40 wcmew$@j+t49A-{ELrn!sJrg~H%}bfJ*%@^vU*s}pTE;xtkVR~>0(Sr-0RI;YApigX delta 40 wcmew$@j+t49A-{U1xq~>Jp%@Y%}bfJ*%`GaU*s}pTEaZpkVR~>0(Sr-0QIyAz5oCK diff --git a/lab5/obj/main_c.o b/lab5/obj/main_c.o index e7563e34065108f0af90735552288939c83b959c..3fde698d1128dc81d3cd5c0af8faea1ccf75f16d 100644 GIT binary patch delta 40 wcmbQBGC^g79t)?Qp{9bRo{65pW^)!x9!8zXg#zYG7A%twvWRUyAP~R^0L!WhAOHXW delta 40 wcmbQBGC^g79t)?Yf~B5`o&f{HW^)!x9!9Ong#zYGW-OBrvWRUyAP~R^0K!KJy#N3J diff --git a/lab5/obj/mbox_c.o b/lab5/obj/mbox_c.o index 63b2a3e79cb6c1e26bd42cc7f75273db65690bef..95b25e244b6af9bfb91ea3f99427fc9f2bd4d07e 100644 GIT binary patch delta 40 wcmX@WcYtrhFGfy1Lrn!sJrg~H&CE=5nHhB^FJv`mVqu!x$Rf7+18V>y0Psi)761SM delta 40 wcmX@WcYtrhFGfyH1xq~>Jp%@Y&CE=5nHjYvFJv`mVq%)y$Rf7+18V>y0OsWivj6}9 diff --git a/lab5/obj/memory_c.o b/lab5/obj/memory_c.o index c182ffc5246f1f9ee5c571135d209d500b6f5294..ab92dc3d59f53b2db92166024c16200347ff2ffe 100644 GIT binary patch delta 40 wcmaD5_#kk@YCcXqLrn!sJrg~H&0F|-Bp7ujJF1&AZRMMMkzZ`{1oZ$$02@~f_W%F@ delta 40 wcmaD5_#kk@YCcX)1xq~>Jp%@Y&0F|-Bp9_OJF1&AZRVSNkzZ`{1oZ$$01@;IlmGw# diff --git a/lab5/obj/printf_c.o b/lab5/obj/printf_c.o index d6ad6d17009d2e5da9d3d61e22fa5ca0a70229bd..3903e8ab464349ad4fc282bd336a04827444fd5f 100644 GIT binary patch delta 35 rcmeyN`a^ZYDo##4Lrn!sJrg~H&6_!wvNP&TjubR!+_HJ1U^*iJ*l`Os delta 35 rcmeyN`a^ZYDo##K1xq~>Jp%@Y&6_!wvNLK;jubR!+_ZV3U^*iJ(ESS2 diff --git a/lab5/obj/sched_c.o b/lab5/obj/sched_c.o index 1d1bab0ee8c865d12b1386a5f7cbd60153414306..66c5838ec56d17dcd55f8f3c1c8287f441b6fc06 100644 GIT binary patch delta 35 rcmX?MaKd227IscOLrn!sJrg~H&3oBj^D*j7UMXhIxNq}Av2;cN*;fnw delta 35 rcmX?MaKd227Isce1xq~>Jp%@Y&3oBj^D$~oUMXhIxM%Z2v2;cN(c=r6 diff --git a/lab5/obj/uart_c.o b/lab5/obj/uart_c.o index 0662e989304a205ee526a18b98879d2e2947b27f..f88c90f1ccad28bd84d1bf207ff57be5d3c13260 100644 GIT binary patch delta 40 wcmZ3Wus~tMA~sGvLrn!sJrg~H&8yk2vNP&TZsap(TEjM3kymW<1-<}A0QSlYwg3PC delta 40 wcmZ3Wus~tMA~sG<1xq~>Jp%@Y&8yk2vNLK;Zsap(TE#Y5kymW<1-<}A0PSZBQvd(} diff --git a/lab5/obj/utils_c.o b/lab5/obj/utils_c.o index e0e1f20ee23bba0ee2688421671633882319c7a3..62bed4ebb7ca8f754ae9cda082d4b414872cf873 100644 GIT binary patch delta 39 vcmeB>?vUPK!@{X&sHtG7XQF4Y*_CB6JEP9zKvv<&f4Ef`-8L)oq%#5l$r%a# delta 39 vcmeB>?vUPK!@{YlV5w)KXTZR)*_CB6JEPX*Kvv<&f4Ef`T{bK7q%#5lz#$2m diff --git a/lab6/include/utils.h b/lab6/include/utils.h index b0d595549..d70bbff5b 100644 --- a/lab6/include/utils.h +++ b/lab6/include/utils.h @@ -5,7 +5,6 @@ int strcmp(char *s1, char *s2); int hex_to_int(char *p, int size); void *get_user_program_address(); -void shell_input(char *input); int log2(int x); int pow2(int x); unsigned long cstr_to_ulong(char *s); diff --git a/lab6/kernel8.elf b/lab6/kernel8.elf index 0d4a6f6ca85b225f35796d1e1112363e37dd4536..6c77907397a6a22bb11b308532761984491cbeab 100644 GIT binary patch delta 4347 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 CxKFD9 delta 4365 zcmaJ^3s6&M7XHso2#LH!Ok$)E0g;DXC{R$8TtpYGS`cZ)J~S#;u!?}FAU=}%C_Z-d zdg%J7ZDYr}t955_Q>R3%4Yam8D>ZiA)!A`7VcKbn+ikVFEpcqwb93))U3X{iOwRrP z|2yw<{&T_ihQ|MfX74yi6w?a8cWTjFp%E{|vW^|}+eJUG+pN#vxGj2IV0s!|!>YNb z7%16>jUOD1dOxv7FTUCyRf< ze#=bg!||i9YZHsbU1*5Es&y2LPrCc#wV}z(CgL#G(QgwxjImqHVH5XA`y#=U$k<*w zlSER6QUF-TFvdps!-RmH)}hM!1zKyBbsLT!n*@v9bH?%jN$5;1h%!kd ztyFQ<1)@lMf2qTBNK5Yo7Vswsfr0x&`~4OcV66R<4va~Qh2LXJS`r+^8EF=H6_=(x zqdiPcqc_boax*R1bRkeiZU*D`gE+^4->0Qd-at@2{rnk{E=o;BX<&!6FK2S9rj`c! z%N-upvS`qs#AvPf#W=A5pG$XX1x}1a$go(KlS_9r?1Vpwl0ep;r#;6UmHpD0CicW< zI5{IR%tGJ>Az-24@!5<%n2PC{g)q&%Br}UMdpR-g$D#cK=cuGWJrR_hpi_l-BI_BG zT_X-kVJ8TlGI|FQheo`E@w_F%p`N%j;s8$L6SZEA=*K!f5nQ;Ff5I~29*IU#_M(IU zmEyLON)c3%7=?HE_29?)>~ffd=dvflO$=mblHAywa-wTfE-VcIBfm?jufkoGaeC?wN@-Bh^an7`RT=ppRxM*gl*kM< zk<;;BUV=fZxF_vWL86bKkRJin_(XmY(Vh7gD8ys=xiMs$F{&69nS8iqosKv2mrN66 z%|Q=nEpa5MI+Z>AVb?S*t9E`yP88y!dFrY7p=kQ9F(*bb|vwE}Ton z7&GB@5Zt{J=$1S1lZiIU)9|8oW^yP*a)>b>3kI*OtMQGZUp*3ghms#F1fG`T^)VJI zc2j19?1Ec2X+NacL&YU@k%C90P5ZyK^-fMA=e{5+xQ7*ofr;tGyMv^Crr;^1x2#bw zev9L6ng7SDCfjNWjeWq%2z6bJKiM{KR+1yNX1?mSLodFp8u9DJeUf2nTPCoWW9oUL zLENpb1%tRlCBP4-=C$($HzI^n{%Lu`?y zJXN!}G&h<>h~IF;;M-TpVqHy{=qxRGZ1?xF-!MyRD#s^(B93Ib*GBq<|7&P}EnSdM zdP^>XJwgn+>c?+NlQPm~vIx6HRO;Nx1l(EvEmYw8 zipL-lPgNvxiIMIvahX@_qWiwAOQy5M;3gkLuYxza^wR_|X zKLWJlh?U(ih`yD1Fb+fNvrN0k$|5VsG3kNBt0=@U7tX973n#IuzK(=$)YpQ;J#E!1 z02i>oAtP1IU}Sv=iG+vjA{m3muH-f9dvY2M>hdtRaT5I@(9mek@63?xJS&?aJ26a> zb?Oc)h}7NE1BZuimyl-NAf9Wa_Q}A{8dEIS(`5yTL8c&Ek;FDrSB*(cHfX>lO=I9L zZYR0{k2gsp`bN_XOZGTfF8OD<=n6?LT^EkR>Ug-03s&b)=kHye09&zhbs^Na2Ud@Q zc(r@9`rnYKVXYLCKD0U*=`BoLW1&1wBKj3puNea^*tRAYuHqloG(#;WuT3FkkFQOJ z&vDh-BATCX(MbzlS(^*@F=X9jIw@V32EW6V>l$Dde!4E6X8Zkh<6#7*x75(do|Y2u z;gyyID&XywNn|UlH6HXht2GPW#rYtOMvjSa+wrQl`qqZW*M$Lv3sXpb( zglVL9jEiiMQlYu7oQBVnPXDgc@%T1plFc7C7eOaZa4hFoF}~@@qLN*8Od-=o=kw&oCg()@qsikOPg(rZ zSxhA!`(h5ARKM6jMY{N61VA)i+cJZWtXqqzPwiWI$i%(0zJ-^!&ZQfWv~4!rz{YJA z@2L~HhSNXu-Z*=Q$v6!#LX zaeF(op;VvquVjW87w|}z(X8HF)kIWq0nC9{NW&lw zkcOH}xocFOQ^5ttvN6XaC1sJv2z#;B!<*IikocuX<|G%f$73|BZK9&8t!%taX!a!8 zN;2Ij=^0ILjy$bG>lvfDbFz$%Q_y$?y^eDT&9ljgXWJ4j~+!rZ_Jc^I-sbysG#?;=d6)q<@mR=S(IACyS(*e%740V zrEiO5?3d|2|J_s?tIl^N7f%tb!G5CDL+6YXM%p=^2Fv_&Wi(QboTEfP^N zyh8lDaez1l%z4jfJ~~^rtbPn4=(8emns5=J_Hr3jlQ2?2ucAn3^b;~_Qs4{)9f3XX z8An}DmC-x}ola;p(=j#=zk4r>MuF99Gz*Ff)xg>y6R<9v<1M41anQ?~)o-|@PI}HL zWQ?&4260Nt?w_S0puiFf&K57 znFp0`Z@a>&Qwl@3`2!;rZ~g}fF$WYstO|A#cYLt$=Nnp~ptBUT6XCqkT=h`=^AxlL za|q2;imZN#ml7IH5hmjzLi3cnpRM@RLa5~ZAc};xE3%^%bcdq33VY7;G~90!ZAR;d zMjF5qKIEa+UH4&VD0OCIA0N}AxYaUGmVO*h_3;LE=3T&nz5;`K(P}a6;{rpMa_zdX zj&^F=eR%w18+{xHf;8>24Nha-Wg8cTc;a#~e2W8gbQjZnHgIAc(Xa40(RLj0*$i8h LvK+!jU&6luPTgIv diff --git a/lab6/kernel8.img b/lab6/kernel8.img index 3997ef51ca59d61efa2d6df54a74d1c1a821a5da..4a39845d7b014abafe131dca40d6efbe65fa619f 100644 GIT binary patch delta 1797 zcmaJ>U2GIp6h3!$pt~(CTb6cP*LG*S#Vy_4cA=%e*c~iCMJm*`7K8-X06~6yC=juj z;DP}mhT`qnxJDmXe9=^a!o09ik_`_U0h0!WASPy(2ZKLBC;=H2#xpa!3Hso}+;h&o z-}(E_+&g)KWlpe47eFGb>&_?uKj4DI+w>i#Pd;546oh?tT<=_qDPfH;XsHo4DAbv% zB8q)89QUR{A|^zy{(_vX!?R8&n^3-Xu4Zhd;+r*-u|k~Z`b^9`&A-L0YX!TA;n~+j z=;DXbQTCk}>*51SwoELjRl7JZq*9`C8USuXEXt17ShF>K7!$DKZ_~PS2r@|!+qY?vVtN=sLLR&24oGc0cR}UFW@)cicku;+9Yc~ zQZ_HZ@Ns}a3E*8&fq(HxPc~D`Y*5w=%oQw^E;UPxqk~H8&XpEt{3zLKcRc;RNYV?M z>Xo&h|JIYL2Q+{~m&dTw=VG7Y9G{qV~+*}Km@u$GY97;+bO5_ z=W#I`{}rDLNMhW^Z{To1Vlf;GtYqbw4O9qf3H}w>!&3NK-740MU)FW7-;m7>5vXDA zDq8o>eT!D1elx9G>pfu*d9VNy1Gbc>U!EM$6?iF0;fKo~eI{{ALAL z8{WZ#4!5Q!)8y(#Ex6c79u3W}>h0EyP--{*H?Da9lXh!5x&B8(9wy^>$WzwWtuX*i zCw_u?eq_8J3efrWkk>(H7Bg5M4zfNR3U^kKkHO9&;+1^Ux(CuldEW@03^$cVECk2` zC&X=^j8owaOWLelW<1i37+x_KKWDQ?`^=b+V|+AeW`_}L4?k!)#^Tt~xRU{%q*cP2 zh(gs~jSLXw_4AG~P%g})drS??j}k{uH0`dWf~HYA3NZ1a`wuAk z3OT)mr0EWJeg_w{hW@9jJ*_*9Q`cizX6N-joZj~4_8ejAOwbnO%a-jtnNO0k^MsLj zCUq)9=_mPp)y_xrIym?{c?`(u@BhdZNSFh8jO5_^@lIPsuk7G&(5CTVnO(#je0Lrc zcko^LKr=EU#-o&?N6EyI->d)e+k!8&Z>RB{Zy%ufly?~G){a)ERK#m-#={h z_B)H<{+<@*#B`4&sKv?;JwMT-tek)LJgfR@ipV|%?dmDH-CGC4K4$hm0htp19v<)Y zu#c5jaqL8m3JOpko8}l7cHT*y!q5K&1?I2nOSbA0URe zkSGiiy_}LoqoEijaghY_VnV@~hQvgpm<2!J&)1j`LBoer*dt0k@1x0LjDOs7&$;K^ zbAI=C?tL$RhE1Gd^=^Pnp;&Zv0`RxokU2u*D2@EN`mi7zvg6aPEtnMsgnm<9#8N`D zp(>)-Tj{tz12So$^QYgCv#ogEs11?su`=q#qLi66C^|epi1KRwgi`Q`WsT6uv7DfEN;v?y19B&STemx;oFCvFTGO}8DK;?%nR0+y zwL;R;q?cLxZqh|de;uO@K{lvtYG`3Bh$Ft3$58T?1Ye#gu2TZEg#I-_?oP*c4PpLs5-NFR|kKt2uv!Wz$ zC$gY7u!|r~+F)D_5(!l8IkE+ilLdXv<{tkUR|WkQUUD9gG%p<6jemlE~ z+WZLZo425cx|5% zMj9ovINrRCa+ZfTlN=1c>F{X9u^esn;N9>Vfgr^qOIQkbMZ6o@;u-_O9jAL$nN51^ zbUTPrBT-_SPsk>n(|rS`uSi6OOGGB{LB!_}EqJ;WV!CWVDO$w_aAUNCoc!NV%)`Er1krs1%cSaJdv?&+pT}Mp=3SO~y%N z2j53d{S#-{SqFc)v@!4C!x&gmS4%;={}nWZ8&Cd(*6vEIXhaYo2xroT~Nhu2^27KJPGdXa0Ev>V#|-+GjX$S{Zh$SzM+Ul zde@K8sQj}ywv!%68O=IGmagIkR26S^1O;#^?v=ln*GOJout~;)A@5m8|^D#?u)jW zLoWvC$Dr)#y=k+5)n}*V#iFu3Rb+EP?KjPo%bb6)?42pozJnwEJ~oA?`hEWZ|LlB~ diff --git a/lab6/obj/exception_c.o b/lab6/obj/exception_c.o index 9056109f3af1d87d7eed2358c6a2a3b641288069..36e2f6771fe7be7e4b787bdaea5515eba1affc35 100644 GIT binary patch delta 1223 zcmZ8gUr19?96rCzo4d8Gbgk>1F0WK~Tj=I0y&D8u5o8pU*hA5SS`G~??red9kP+0& zK;;){VxdqZ(nISK*dOQ*Qbs)#^k7ht4+TL`LN7%`zq6g-;(_!1&iTII_uX^v&K6EB z^bLohst{?Da8RnLT6D6RPeZvo+Aj8sF?NZyq>I(MB^?K=u3Q4xfg#sBbjkZ2f6A@H zvgCx9*zT^@UIvDMF~>-6B^epK@(ogPjPx^KasLd*-9i0XVBE>s9>00Ki@|fbt-##iuAJ_hi-XA~x|+WP|X)@ScAC%pnr1=d*|m45;DV*A>9Z!Fd*)kdW?F-g*5 zb$EI0bw^F3mGZxL%F%d4OGdXv8*!sLAD?hgWRXcH|_Gge}iiYp}Kg)YE2HXD-ujc6TweFOxZ8=GrqSJCF8e za7HumyJlG7y7{umL2;~VN~{qnymT$+u~YZqpG|Hsu})WTOm|~mcdL`j`$Wbx7O3l! z?y5*o@@8A|ZCun9byoNcQtNH%L#zlX>T99;Naf2}(eV~rb!E?j?U}_(C)Av{0smd| zg6|i+U!?u#2XHE+z!<(EoaPvx6`lNRM1`A|pEf>X<28(jl|A+1SKzLgP3^VujW&K# z@XO!*I*x=D&o`TEi*+~LRt9q@H|&Nywi2fCO2ZJiFcRfVHhL3&T57Djj5g=CDymDk z!*mutB&z%Zr?Eh4UZ@?*)H!Q$s{;IA@_Spe{6phT#tvYz$$;&cZAuXqno@GwRZ_m- zFH&@jH>c=8S;Bi*Ak=V)unOZw3JzeFumuZ*7jVf)$zQ8V?s`ln4De$%!FvmY9k`T8 b$-{w?K99+yAs?zO?MCrT(tsW;Bt!oIuFmBA delta 1280 zcmZ8hUr1Y57(ZXkwMos*qA}dYKQ%#&*G`QWqc>%1(~cEW5L)R=pJvh;V!`QEBe){W z_GPv(YWTvI3N3xGw1quPt`CYYc73Rp2rYEbfgA1Ho=O9yU@2wa$vuI~4t(Et&+pH7 z&OJFduV!A&E~`*n>$)I08Dj-pkXn2!dFp^qD3&Sm=I_!KsB0#0!6M8fhiU=NV4Lf& z+U!*LFk|?^HR5o(%(HH(21U|bnvu;aEo3+xNmPbBkIq}#aXY3C(USJzsB7aI^G-W?W31(4DM(}2X#E{HST!t%8u24 z{`S%|M6pl7#}XX|@u@qWyLI2-VaIo-+_dHBs@RChQZz7NOA5$#CF@*lED39{cXWL7kG7FRs1EEshc4#N!9gSxN-uox~llR z!1>-P_gm--IMS)WY9+7ZwN6Fbw<)7S#mgrfZa+~K*Qi4b-;g&aenGy9X7fH2I6pJ{ zyZ?susv^I)x%$lk^@5YW&>P)DP{0?IlNju|1wMS#GXzUm?s)+3%-g+LCrzMV3HpRv zrQUo` z=rD+D0}0s1GUZ*=1{2VS)0B(2MmdFL$~&m(3HSx4^@RK2h~++po4O9|SSChAEuMha fI2}*8?=@NcYut?M?!`81b{`MoI{b^;@y`DMjV|)& diff --git a/lab6/obj/freelist_c.o b/lab6/obj/freelist_c.o index 583e13dfa146d69c9fee1265cc7ee13f54c48e47..084920d9d2d8c1862d24530c3a694d20c9101c6c 100644 GIT binary patch delta 40 wcmZoLYB1Vxn3Ge_P*cHD&qU8)^BK-5yo@@N6UEJ$&T>u;K}Ma)jZ)@JJe-pka*A!fAQiv}0MZ)@O#lD@ delta 40 wcmZ2rvA|*j6DOypf~B5`o&f{HW^T?>K}M~~jZ)@JT%3~^a*A!fAQiv}0LZur>Hq)$ diff --git a/lab6/obj/mbox_c.o b/lab6/obj/mbox_c.o index cb80b331560ab3b332c360f74436e009835710ba..52ce9088512edb762c3e0f5df3a964e2e30a5545 100644 GIT binary patch delta 113 zcmaE${6cwx2IGp2n&xc$dWM<`mU7Q!OI~|M#s!lr`SvqrOt$2& zXPhy4Cx1Jm&SXacbEYh|$rstgCQlI1U@VxtQ^1~a!{nbp^2TIKL3_p*lPd-7Ie&0N L%-b-zkyjo7D1{)y delta 96 zcmaE%{6Kkv2IGQ_n&xcmnhKVBCVB>&^Vu%4F64gkCU9`FDF diff --git a/lab6/obj/memory_c.o b/lab6/obj/memory_c.o index e15e750fa041f3bfdc05a7fd6cf4b6452ebaef5f..466101cd3ad202abe7c808fe049036d5d692c2e4 100644 GIT binary patch delta 41 xcmcc6#dx8Maf6l|r=Fpvf~B5`p222gxms05oyi-W&6!N(CI`xkZE^`<1ONo+3!VS~ delta 41 xcmcc6#dx8Maf6l|r>26Xo{63T1H)!xxms05t;rjm&6$kkCI`xkZE^`<1OWTl3p)S+ diff --git a/lab6/obj/mmu_c.o b/lab6/obj/mmu_c.o index 68031435463ffdc5691f6ef08aabf8d508b57323..4c21f0b5549c0df4265f6e80a912a0097fb38d8c 100644 GIT binary patch delta 40 wcmccMc)@YQOg>IMLrn!sJrg~H&5QW@1Q>ND8_JtAE#{lt$S=0JK|X*H00>75`v3p{ delta 40 wcmccMc)@YQOg>Ic1xq~>Jp%@Y&5QW@1Q@j@8_JtAE##Zr$S=0JK|X*H0RGhrm;e9( diff --git a/lab6/obj/printf_c.o b/lab6/obj/printf_c.o index 1f84ae1874ea64d2ac94f47cd4ddfc3cce2a6d76..df11ff2694b8735b8c1791de3d1f436bb82aba77 100644 GIT binary patch delta 39 vcmaD6@gibFwj`&Xp{9bRo{65p<`T&eK}Ma)AEksR-_cTGEZxkgoz4gV3o;B` delta 39 vcmaD6@gibFwj`&ff~B5`o&f{H<`T&eK}M~~AEksR-_cTGEZ)qhoz4gV0y+!% diff --git a/lab6/obj/sched_c.o b/lab6/obj/sched_c.o index c8e10f026a21e9f35df35f701e1b6a44cc918cf0..7d80f3404abee5059375a3d1bb64262857056e69 100644 GIT binary patch delta 40 wcmewm^&x5lk1(g6p{9bRo{65pW>MkY5{x>NFKU}Ji3v|OWEI=2pcB9d0RK7*2><{9 delta 40 wcmewm^&x5lk1(gEf~B5`o&f{HW>MkY5{z1tFKU}Ji3m?NWEI=2pcB9d0QJ`jrT_o{ diff --git a/lab6/obj/uart_c.o b/lab6/obj/uart_c.o index c6c7feb9c8af7298dc7731568c2a3cca82928549..f6086fa87453b83b11ce404ef9cc4f9c72cd537d 100644 GIT binary patch delta 113 zcmX?Ld%|{t2IGm1n$P+8^$ax?EcHzE3>d&*vpByaH)F=+NU8sf3noWO?`OO)SyHB+ zi9urWESWY&oym%_=1fxjlM4mJCKt$RFe*%*DQnLtG5IEtte7k*XV3Uza-^I+r-CHJ LycLrdO34EN6yP3Z delta 96 zcmX?Md%$*r2IGN^n$P*zH5DxNO!N#k%kw*OGbT(*`eny?ij(ozC_sFPBR*>b~{8A>K5dis93%39O delta 39 vcmX?MbHZkW9xtb+f~B5`o&f{HW^>*`enzdyj(ozC_sFO)nr(h4lgpgd, USER_PC, file_size, new_program_pa); // map user program's code mappages((pagetable *)current_thread()->pgd, USER_STACK_LOW, USER_STACK_SIZE, user_stack_pa); // map user program's stack mappages((pagetable *)current_thread()->pgd, 0x3c000000, 0x3000000, 0x3c000000); // map user program's mbox - for (int i = 0; i < file_size; i++) { *((char *)new_program_va+i) = *(program_pos+i); } - preempt_enable(); asm volatile("msr sp_el0, %0" : : "r"(USER_SP)); asm volatile("msr elr_el1, %0": : "r"(USER_PC)); asm volatile("msr spsr_el1, %0" : : "r"(0x0)); update_pgd(current_thread()->pgd); - printf("go!\n"); + preempt_enable(); asm volatile("eret"); trapframe->x[0] = 0; } From f20e6a4b844866d589f9b99894c0b553e2da57fa Mon Sep 17 00:00:00 2001 From: soulrrrrr Date: Wed, 15 Jun 2022 10:45:41 +0800 Subject: [PATCH 12/19] basic 1 --- lab8/Makefile | 65 ++++++++ lab8/include/exception.h | 52 ++++++ lab8/include/fat32.h | 100 ++++++++++++ lab8/include/freelist.h | 27 ++++ lab8/include/fs.h | 1 + lab8/include/gpio.h | 45 ++++++ lab8/include/initramfs.h | 25 +++ lab8/include/mbox.h | 48 ++++++ lab8/include/mbr.h | 15 ++ lab8/include/memory.h | 38 +++++ lab8/include/printf.h | 84 ++++++++++ lab8/include/sched.h | 60 +++++++ lab8/include/sdhost.h | 5 + lab8/include/shell.h | 2 + lab8/include/sys.h | 62 ++++++++ lab8/include/tmpfs.h | 29 ++++ lab8/include/typedef.h | 12 ++ lab8/include/uart.h | 36 +++++ lab8/include/utils.h | 18 +++ lab8/include/vfs.h | 73 +++++++++ lab8/initramfs.cpio | Bin 0 -> 405504 bytes lab8/kernel8.elf | Bin 0 -> 46800 bytes lab8/kernel8.img | Bin 0 -> 35408 bytes lab8/linker.ld | 45 ++++++ lab8/obj/exception_c.o | Bin 0 -> 10944 bytes lab8/obj/fat32_c.o | Bin 0 -> 7528 bytes lab8/obj/freelist_c.o | Bin 0 -> 3184 bytes lab8/obj/fs_c.o | Bin 0 -> 1704 bytes lab8/obj/initramfs_c.o | Bin 0 -> 5624 bytes lab8/obj/main_c.o | Bin 0 -> 4936 bytes lab8/obj/mbox_c.o | Bin 0 -> 1856 bytes lab8/obj/memory_c.o | Bin 0 -> 10488 bytes lab8/obj/printf_c.o | Bin 0 -> 5832 bytes lab8/obj/sched_c.o | Bin 0 -> 6576 bytes lab8/obj/sdhost_c.o | Bin 0 -> 5520 bytes lab8/obj/shell_c.o | Bin 0 -> 7096 bytes lab8/obj/start_s.o | Bin 0 -> 8672 bytes lab8/obj/sys_s.o | Bin 0 -> 1312 bytes lab8/obj/tmpfs_c.o | Bin 0 -> 5656 bytes lab8/obj/uart_c.o | Bin 0 -> 4128 bytes lab8/obj/utils_c.o | Bin 0 -> 3824 bytes lab8/obj/vfs_c.o | Bin 0 -> 8520 bytes lab8/sfn_nctuos.img | Bin 0 -> 51200000 bytes lab8/src/exception.c | 334 +++++++++++++++++++++++++++++++++++++++ lab8/src/fat32.c | 227 ++++++++++++++++++++++++++ lab8/src/freelist.c | 70 ++++++++ lab8/src/fs.c | 19 +++ lab8/src/initramfs.c | 149 +++++++++++++++++ lab8/src/main.c | 103 ++++++++++++ lab8/src/mbox.c | 112 +++++++++++++ lab8/src/memory.c | 249 +++++++++++++++++++++++++++++ lab8/src/printf.c | 228 ++++++++++++++++++++++++++ lab8/src/sched.c | 156 ++++++++++++++++++ lab8/src/sdhost.c | 307 +++++++++++++++++++++++++++++++++++ lab8/src/shell.c | 96 +++++++++++ lab8/src/start.S | 277 ++++++++++++++++++++++++++++++++ lab8/src/sys.S | 92 +++++++++++ lab8/src/tmpfs.c | 148 +++++++++++++++++ lab8/src/uart.c | 220 ++++++++++++++++++++++++++ lab8/src/utils.c | 137 ++++++++++++++++ lab8/src/vfs.c | 212 +++++++++++++++++++++++++ 61 files changed, 3978 insertions(+) create mode 100644 lab8/Makefile create mode 100644 lab8/include/exception.h create mode 100644 lab8/include/fat32.h create mode 100644 lab8/include/freelist.h create mode 100644 lab8/include/fs.h create mode 100644 lab8/include/gpio.h create mode 100644 lab8/include/initramfs.h create mode 100644 lab8/include/mbox.h create mode 100644 lab8/include/mbr.h create mode 100644 lab8/include/memory.h create mode 100644 lab8/include/printf.h create mode 100644 lab8/include/sched.h create mode 100644 lab8/include/sdhost.h create mode 100644 lab8/include/shell.h create mode 100644 lab8/include/sys.h create mode 100644 lab8/include/tmpfs.h create mode 100644 lab8/include/typedef.h create mode 100644 lab8/include/uart.h create mode 100644 lab8/include/utils.h create mode 100644 lab8/include/vfs.h create mode 100644 lab8/initramfs.cpio create mode 100644 lab8/kernel8.elf create mode 100644 lab8/kernel8.img create mode 100644 lab8/linker.ld create mode 100644 lab8/obj/exception_c.o create mode 100644 lab8/obj/fat32_c.o create mode 100644 lab8/obj/freelist_c.o create mode 100644 lab8/obj/fs_c.o create mode 100644 lab8/obj/initramfs_c.o create mode 100644 lab8/obj/main_c.o create mode 100644 lab8/obj/mbox_c.o create mode 100644 lab8/obj/memory_c.o create mode 100644 lab8/obj/printf_c.o create mode 100644 lab8/obj/sched_c.o create mode 100644 lab8/obj/sdhost_c.o create mode 100644 lab8/obj/shell_c.o create mode 100644 lab8/obj/start_s.o create mode 100644 lab8/obj/sys_s.o create mode 100644 lab8/obj/tmpfs_c.o create mode 100644 lab8/obj/uart_c.o create mode 100644 lab8/obj/utils_c.o create mode 100644 lab8/obj/vfs_c.o create mode 100644 lab8/sfn_nctuos.img create mode 100644 lab8/src/exception.c create mode 100644 lab8/src/fat32.c create mode 100644 lab8/src/freelist.c create mode 100644 lab8/src/fs.c create mode 100644 lab8/src/initramfs.c create mode 100644 lab8/src/main.c create mode 100644 lab8/src/mbox.c create mode 100644 lab8/src/memory.c create mode 100644 lab8/src/printf.c create mode 100644 lab8/src/sched.c create mode 100644 lab8/src/sdhost.c create mode 100644 lab8/src/shell.c create mode 100644 lab8/src/start.S create mode 100644 lab8/src/sys.S create mode 100644 lab8/src/tmpfs.c create mode 100644 lab8/src/uart.c create mode 100644 lab8/src/utils.c create mode 100644 lab8/src/vfs.c diff --git a/lab8/Makefile b/lab8/Makefile new file mode 100644 index 000000000..4664620ca --- /dev/null +++ b/lab8/Makefile @@ -0,0 +1,65 @@ +# +# Copyright (C) 2018 bzt (bztsrc@github) +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, copy, +# modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +# + +ARMGNU ?= aarch64-linux-gnu + +SRC_DIR = src +BUILD_DIR = obj + +C_FILES = $(wildcard $(SRC_DIR)/*.c) +ASM_FILES = $(wildcard $(SRC_DIR)/*.S) +OBJ_FILES = $(C_FILES:$(SRC_DIR)/%.c=$(BUILD_DIR)/%_c.o) +OBJ_FILES += $(ASM_FILES:$(SRC_DIR)/%.S=$(BUILD_DIR)/%_s.o) +DEP_FILES = $(OBJ_FILES:%.o=%.d) +-include $(DEP_FILES) + +CFLAGS = -Wall -ffreestanding -nostdlib -nostartfiles -Iinclude -mgeneral-regs-only +ASMFLAGS = -Iinclude + +all: clean kernel8.img + +$(BUILD_DIR)/%_c.o: $(SRC_DIR)/%.c + $(ARMGNU)-gcc $(CFLAGS) -c $< -o $@ + +$(BUILD_DIR)/%_s.o: $(SRC_DIR)/%.S + $(ARMGNU)-gcc $(ASMFLAGS) -c $< -o $@ + +kernel8.img: $(OBJ_FILES) + aarch64-linux-gnu-ld -nostdlib -nostartfiles $(OBJ_FILES) -T linker.ld -o kernel8.elf + aarch64-linux-gnu-objcopy -O binary kernel8.elf kernel8.img + +clean: + rm kernel8.elf *.o >/dev/null 2>/dev/null || true + rm -rf $(BUILD_DIR)/* || true + +run: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none + +cpio: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -initrd initramfs.cpio -drive if=sd,file=sfn_nctuos.img,format=raw + +debug: + qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -display none -S -s + diff --git a/lab8/include/exception.h b/lab8/include/exception.h new file mode 100644 index 000000000..d614f7434 --- /dev/null +++ b/lab8/include/exception.h @@ -0,0 +1,52 @@ +#ifndef _EXCEPTION_H +#define _EXCEPTION_H + +#include "typedef.h" + +// save_all, load_all 的 register 用 struct 包起來,方便操作 +typedef struct Trapframe { + uint64_t x[31]; // general register from x0 ~ x30 + uint64_t sp_el0; + uint64_t elr_el1; + uint64_t spsr_el1; +} Trapframe; + +typedef struct cpio_newc_header { + char c_magic[6]; + char c_ino[8]; + char c_mode[8]; + char c_uid[8]; + char c_gid[8]; + char c_nlink[8]; + char c_mtime[8]; + char c_filesize[8]; + char c_devmajor[8]; + char c_devminor[8]; + char c_rdevmajor[8]; + char c_rdevminor[8]; + char c_namesize[8]; + char c_check[8]; +} cpio_newc_header; + +extern void enable_irq(); +extern void disable_irq(); +void sync_exception_router(uint64_t esr_el1, uint64_t elr_el1, Trapframe *trapframe); +void syscall(uint64_t syscall_num, Trapframe* trapframe); +void sys_getpid(Trapframe *trapframe); +void sys_uart_read(Trapframe *trapframe); +void sys_uart_write(Trapframe *trapframe); +void sys_exec(Trapframe *trapframe); +void sys_fork(Trapframe *trapframe); +void sys_exit(Trapframe *trapframe); +void sys_mbox_call(Trapframe *trapframe); +void sys_kill(Trapframe *trapframe); +void sys_open(Trapframe *trapframe); +void sys_close(Trapframe *trapframe); +void sys_write(Trapframe *trapframe); +void sys_read(Trapframe *trapframe); +void sys_mkdir(Trapframe *trapframe); +void sys_mount(Trapframe *trapframe); +void sys_chdir(Trapframe *trapframe); + + +#endif /* _EXCEPTION_H */ \ No newline at end of file diff --git a/lab8/include/fat32.h b/lab8/include/fat32.h new file mode 100644 index 000000000..4e8f5cd4c --- /dev/null +++ b/lab8/include/fat32.h @@ -0,0 +1,100 @@ +#ifndef _FAT32_H +#define _FAT32_H + +// Ref: https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Bootsector +// FAT32 Extended BIOS Parameter Block +#include "typedef.h" +#include "vfs.h" + +// block size +#define FAT_BLOCK_SIZE 512 +#define FAT_ENTRY_PER_BLOCK (FAT_BLOCK_SIZE / sizeof(int)) +#define EOC 0xFFFFFFF + +struct fat32_boot_sector { + char jump[3]; // 0x0 + char oem[8]; // 0x3 + + // BIOS Parameter Block (DOS2.0 BPB) + uint16_t bytes_per_logical_sector; // 0xB-0xC + uint8_t logical_sector_per_cluster; // 0xD + uint16_t n_reserved_sectors; // 0xE-0xF + uint8_t n_file_alloc_tabs; // 0x10 + uint16_t n_max_root_dir_entries_16; // 0x11-0x12 + uint16_t n_logical_sectors_16; // 0x13-0x14 + uint8_t media_descriptor; // 0x15 + uint16_t logical_sector_per_fat_16; // 0x16-0x17 + + // DOS3.31 BPB + uint16_t physical_sector_per_track; // 0x18-0x19 + uint16_t n_heads; // 0x1A-0x1B + uint32_t n_hidden_sectors; // 0x1C-0x1F + uint32_t n_sectors_32; // 0x20-0x23 + + // FAT32 Extended BIOS Parameter Block + uint32_t n_sectors_per_fat_32; // 0x24-0x27 + uint16_t mirror_flag; // 0x28-0x29 + uint16_t version; // 0x2A-0x2B + uint32_t root_dir_start_cluster_num; // 0x2C-0x2F + uint16_t fs_info_sector_num; // 0x30-0x31 + uint16_t boot_sector_bak_first_sector_num; // 0x32-0x33 + uint32_t reserved[3]; // 0x34-0x3F + uint8_t physical_drive_num; // 0x40 + uint8_t unused; // 0x41 + uint8_t extended_boot_signature; // 0x42 + uint32_t volume_id; // 0x43-0x46 + uint8_t volume_label[11]; // 0x47-0x51 + uint8_t fat_system_type[8]; // 0x52-0x59 +} __attribute__((packed)); + +struct fat32_metadata { + uint32_t fat_region_blk_idx; + uint32_t n_fat; + uint32_t sector_per_fat; + uint32_t data_region_blk_idx; + uint32_t first_cluster; + uint8_t sector_per_cluster; +}; + +struct fat32_dirent { + uint8_t name[8]; // 0x0-0x7 + uint8_t ext[3]; // 0x8-0xA + uint8_t attr; // 0xB + uint8_t reserved; // 0xC + uint8_t create_time[3]; // 0xD-0xF + uint16_t create_date; // 0x10-0x11 + uint16_t last_access_date; // 0x12-0x13 + uint16_t cluster_high; // 0x14-0x15 + uint32_t ext_attr; // 0x16-0x19 + uint16_t cluster_low; // 0x1A-0x1B + uint32_t size; // 0x1C-0x1F +} __attribute__((packed)); + +struct fat32_internal { + int type; + char *name; + struct vnode *vnode; + struct fat32_internal *parent; + struct fat32_internal *child[MAX_ENTRIES]; + uint32_t first_cluster; + uint32_t dirent_cluster; + uint32_t size; +}; + +extern struct fat32_metadata fat32_metadata; + +int fat32_register(); +int fat32_setup_mount(struct filesystem* fs, struct mount* mount); +struct vnode* fat32_create_vnode(struct fat32_internal* fat32_node); +// vnode operations +int fat32_lookup(struct vnode* dir, struct vnode** target, const char* component_name); +// int fat32_create(struct vnode* dir, struct vnode** target, const char* component_name); +// int fat32_ls(struct vnode* dir); +// int fat32_mkdir(struct vnode* dir, struct vnode** target, const char* component_name); +// int fat32_load_dentry(struct dentry* dir, char* component_name); + +// file operations +int fat32_read(struct file* file, void* buf, uint64_t len); +int fat32_write(struct file* file, const void* buf, uint64_t len); + +#endif \ No newline at end of file diff --git a/lab8/include/freelist.h b/lab8/include/freelist.h new file mode 100644 index 000000000..665a1fd79 --- /dev/null +++ b/lab8/include/freelist.h @@ -0,0 +1,27 @@ +#ifndef FREELISTS_H +#define FREELISTS_H + +#define BELONG_LEFT -1 +#define ALLOCATED -2 +#define RESERVED -3 + +struct Node { + struct Node *next; + struct Node *prev; + int index; +}; + +struct Freelist { + struct Node *head; +}; + +typedef struct Node Node; +typedef struct Freelist Freelist; + +void freelist_init(Freelist *, Node *); +void freelist_push(Freelist *, Node *, int); +void freelist_remove(Freelist *, Node *, int); +void freelist_print(int, Freelist *); +void print_freelists(); + +#endif diff --git a/lab8/include/fs.h b/lab8/include/fs.h new file mode 100644 index 000000000..1bf1bb025 --- /dev/null +++ b/lab8/include/fs.h @@ -0,0 +1 @@ +extern struct filesystem tmpfs, initramfs, fat32; \ No newline at end of file diff --git a/lab8/include/gpio.h b/lab8/include/gpio.h new file mode 100644 index 000000000..52fa671d0 --- /dev/null +++ b/lab8/include/gpio.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#define MMIO_BASE 0x3F000000 + +#define GPFSEL0 ((volatile unsigned int*)(MMIO_BASE+0x00200000)) +#define GPFSEL1 ((volatile unsigned int*)(MMIO_BASE+0x00200004)) +#define GPFSEL2 ((volatile unsigned int*)(MMIO_BASE+0x00200008)) +#define GPFSEL3 ((volatile unsigned int*)(MMIO_BASE+0x0020000C)) +#define GPFSEL4 ((volatile unsigned int*)(MMIO_BASE+0x00200010)) +#define GPFSEL5 ((volatile unsigned int*)(MMIO_BASE+0x00200014)) +#define GPSET0 ((volatile unsigned int*)(MMIO_BASE+0x0020001C)) +#define GPSET1 ((volatile unsigned int*)(MMIO_BASE+0x00200020)) +#define GPCLR0 ((volatile unsigned int*)(MMIO_BASE+0x00200028)) +#define GPLEV0 ((volatile unsigned int*)(MMIO_BASE+0x00200034)) +#define GPLEV1 ((volatile unsigned int*)(MMIO_BASE+0x00200038)) +#define GPEDS0 ((volatile unsigned int*)(MMIO_BASE+0x00200040)) +#define GPEDS1 ((volatile unsigned int*)(MMIO_BASE+0x00200044)) +#define GPHEN0 ((volatile unsigned int*)(MMIO_BASE+0x00200064)) +#define GPHEN1 ((volatile unsigned int*)(MMIO_BASE+0x00200068)) +#define GPPUD ((volatile unsigned int*)(MMIO_BASE+0x00200094)) +#define GPPUDCLK0 ((volatile unsigned int*)(MMIO_BASE+0x00200098)) +#define GPPUDCLK1 ((volatile unsigned int*)(MMIO_BASE+0x0020009C)) diff --git a/lab8/include/initramfs.h b/lab8/include/initramfs.h new file mode 100644 index 000000000..56f1699ba --- /dev/null +++ b/lab8/include/initramfs.h @@ -0,0 +1,25 @@ +#ifndef _INITRAMFS_H +#define _INITRAMFS_H + +#include "vfs.h" + +#define EOF (-1) + +struct initramfs_internal { + int type; + char *name; + struct vnode *vnode; + int size; + void *data; +}; + +int initramfs_register(); +int initramfs_setup_mount(struct filesystem* fs, struct mount* mount); +struct vnode* initramfs_create_vnode(struct initramfs_internal* initramfs_node); + +int initramfs_lookup(struct vnode* dir, struct vnode** target, const char* component_name); +int initramfs_create(struct vnode* dir, struct vnode** target, const char* component_name); +int initramfs_write(struct file* file, const void* buf, size_t len); +int initramfs_read(struct file* file, void* buf, size_t len); +int initramfs_mkdir(struct vnode* dir, struct vnode** target, const char* component_name); +#endif \ No newline at end of file diff --git a/lab8/include/mbox.h b/lab8/include/mbox.h new file mode 100644 index 000000000..87bf5fb8c --- /dev/null +++ b/lab8/include/mbox.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +/* a properly aligned buffer */ +//extern volatile unsigned int mbox[36]; + +#define MBOX_REQUEST 0 + +/* channels */ +#define MBOX_CH_POWER 0 +#define MBOX_CH_FB 1 +#define MBOX_CH_VUART 2 +#define MBOX_CH_VCHIQ 3 +#define MBOX_CH_LEDS 4 +#define MBOX_CH_BTNS 5 +#define MBOX_CH_TOUCH 6 +#define MBOX_CH_COUNT 7 +#define MBOX_CH_PROP 8 + +/* tags */ +#define MBOX_TAG_GETSERIAL 0x10004 +#define MBOX_TAG_LAST 0 + +int mboxc_mbox_call(unsigned char ch, unsigned int *mbox); +int get_board_revision(); +int get_arm_memory(); diff --git a/lab8/include/mbr.h b/lab8/include/mbr.h new file mode 100644 index 000000000..5e271f156 --- /dev/null +++ b/lab8/include/mbr.h @@ -0,0 +1,15 @@ +#ifndef _MBR_H +#define _MBR_H + +struct mbr_partition { + unsigned char status_flag; //0x0 + unsigned char partition_begin_head; //0x1 + unsigned short partition_begin_sector; //0x2-0x3 + unsigned char partition_type; //0x4 + unsigned char partition_end_head; //0x5 + unsigned short partition_end_sector; //0x6-0x7 + unsigned int starting_sector; //0x8-0xB + unsigned int number_of_sector; //0xC-0xF +}; + +#endif diff --git a/lab8/include/memory.h b/lab8/include/memory.h new file mode 100644 index 000000000..899c64394 --- /dev/null +++ b/lab8/include/memory.h @@ -0,0 +1,38 @@ +#ifndef MEMORY_H +#define MEMORY_H + +#define MEMORY_BASE 0x0 +#define CPIO_SIZE 247296 +#define PAGE_SIZE 0x1000 // 4KB +#define MAX_PAGES 0x40000 // total 0x40000000 +#define LOG2_MAX_PAGES 18 +#define LOG2_MAX_PAGES_PLUS_1 19 +#define NULL 0 +#include "freelist.h" +#include "typedef.h" + +struct block_meta { + int size; + short free; + short pagetail; + struct block_meta *next; +}; + +struct blocklist { + struct block_meta *head; +}; + +typedef struct block_meta block_meta; +typedef struct blocklist blocklist; +#define BLOCK_SIZE (sizeof(block_meta)) + +void memcpy(void *dest, void *src, uint64_t size); +void memory_init(void); +int find_allocate_list(Freelist *, int); +int allocate_page(Freelist *, Node *, int *, int, int); +void free_page(Freelist *, Node *, int *, int); +void *malloc(size_t); +void free(void *); +void reserve_memory(ulong start, ulong end); +void print_memory(); +#endif diff --git a/lab8/include/printf.h b/lab8/include/printf.h new file mode 100644 index 000000000..7b53b8421 --- /dev/null +++ b/lab8/include/printf.h @@ -0,0 +1,84 @@ +/* +File: printf.h +Copyright (C) 2004 Kustaa Nyholm +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +This library is really just two files: 'printf.h' and 'printf.c'. +They provide a simple and small (+200 loc) printf functionality to +be used in embedded systems. +I've found them so usefull in debugging that I do not bother with a +debugger at all. +They are distributed in source form, so to use them, just compile them +into your project. +Two printf variants are provided: printf and sprintf. +The formats supported by this implementation are: 'd' 'u' 'c' 's' 'x' 'X'. +Zero padding and field width are also supported. +If the library is compiled with 'PRINTF_SUPPORT_LONG' defined then the +long specifier is also +supported. Note that this will pull in some long math routines (pun intended!) +and thus make your executable noticably longer. +The memory foot print of course depends on the target cpu, compiler and +compiler options, but a rough guestimate (based on a H8S target) is about +1.4 kB for code and some twenty 'int's and 'char's, say 60 bytes of stack space. +Not too bad. Your milage may vary. By hacking the source code you can +get rid of some hunred bytes, I'm sure, but personally I feel the balance of +functionality and flexibility versus code size is close to optimal for +many embedded systems. +To use the printf you need to supply your own character output function, +something like : + void putc ( void* p, char c) + { + while (!SERIAL_PORT_EMPTY) ; + SERIAL_PORT_TX_REGISTER = c; + } +Before you can call printf you need to initialize it to use your +character output function with something like: + init_printf(NULL,putc); +Notice the 'NULL' in 'init_printf' and the parameter 'void* p' in 'putc', +the NULL (or any pointer) you pass into the 'init_printf' will eventually be +passed to your 'putc' routine. This allows you to pass some storage space (or +anything really) to the character output function, if necessary. +This is not often needed but it was implemented like that because it made +implementing the sprintf function so neat (look at the source code). +The code is re-entrant, except for the 'init_printf' function, so it +is safe to call it from interupts too, although this may result in mixed output. +If you rely on re-entrancy, take care that your 'putc' function is re-entrant! +The printf and sprintf functions are actually macros that translate to +'tfp_printf' and 'tfp_sprintf'. This makes it possible +to use them along with 'stdio.h' printf's in a single source file. +You just need to undef the names before you include the 'stdio.h'. +Note that these are not function like macros, so if you have variables +or struct members with these names, things will explode in your face. +Without variadic macros this is the best we can do to wrap these +fucnction. If it is a problem just give up the macros and use the +functions directly or rename them. +For further details see source code. +regs Kusti, 23.10.2004 +*/ + + +#ifndef __TFP_PRINTF__ +#define __TFP_PRINTF__ + +#include + +void init_printf(void* putp,void (*putf) (void*,char)); + +void tfp_printf(char *fmt, ...); +void tfp_sprintf(char* s,char *fmt, ...); + +void tfp_format(void* putp,void (*putf) (void*,char),char *fmt, va_list va); + +#define printf tfp_printf +#define sprintf tfp_sprintf + +#endif \ No newline at end of file diff --git a/lab8/include/sched.h b/lab8/include/sched.h new file mode 100644 index 000000000..eac3e053d --- /dev/null +++ b/lab8/include/sched.h @@ -0,0 +1,60 @@ +#ifndef _SCHED_H +#define _SCHED_H +#include "typedef.h" +#include "vfs.h" + +struct cpu_context { + unsigned long x19; + unsigned long x20; + unsigned long x21; + unsigned long x22; + unsigned long x23; + unsigned long x24; + unsigned long x25; + unsigned long x26; + unsigned long x27; + unsigned long x28; + unsigned long fp; + unsigned long lr; + unsigned long sp; +}; + +struct Thread { + struct cpu_context cpu_context; + int state; + int counter; + int priority; + int preempt_count; + int pid; + int status; + uint64_t kernel_sp; + uint64_t user_sp; + struct vnode *pwd; + struct file *fd_table[MAX_FD_NUM]; +}; + +typedef struct Thread Thread; +#define INIT_TASK \ +/*cpu_context*/ { {0,0,0,0,0,0,0,0,0,0,0,0,0}, \ +/* state etc */ 0,0,1,0,0,0,0x80000,0,0,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} \ +} +#define NR_TASKS 64 +#define THREAD_SIZE 4096 + +#define TASK_RUNNING 0 +#define TASK_ZOMBIE 1 + +Thread *current_thread(); +int thread_create(void *func); +void preempt_disable(void); +void preempt_enable(void); +void _schedule(); +void schedule(); + +void idle(); +void timer_tick(); +void kill_zombies(); +void task_init(void); + + +#endif //_SCHED_H \ No newline at end of file diff --git a/lab8/include/sdhost.h b/lab8/include/sdhost.h new file mode 100644 index 000000000..13afb07cb --- /dev/null +++ b/lab8/include/sdhost.h @@ -0,0 +1,5 @@ + +void sd_init(); +void sd_mount(); +void readblock(int block_idx, void *buf); +void writeblock(int block_idx, void *buf); \ No newline at end of file diff --git a/lab8/include/shell.h b/lab8/include/shell.h new file mode 100644 index 000000000..b89f34fb4 --- /dev/null +++ b/lab8/include/shell.h @@ -0,0 +1,2 @@ +void shell(void); +void shell_input(char *input); \ No newline at end of file diff --git a/lab8/include/sys.h b/lab8/include/sys.h new file mode 100644 index 000000000..eaad7f615 --- /dev/null +++ b/lab8/include/sys.h @@ -0,0 +1,62 @@ +#ifndef _SYS_H +#define _SYS_H + +#define SYS_GETPID 0 +#define SYS_UART_READ 1 +#define SYS_UART_WRITE 2 +#define SYS_EXEC 3 +#define SYS_FORK 4 +#define SYS_EXIT 5 +#define SYS_MBOX_CALL 6 +#define SYS_KILL 7 + +#define SYS_OPEN 11 +#define SYS_CLOSE 12 +#define SYS_WRITE 13 +#define SYS_READ 14 +#define SYS_MKDIR 15 +#define SYS_MOUNT 16 +#define SYS_CHDIR 17 + +#endif + +#ifndef __ASSEMBLY__ + +#include "typedef.h" + +/* Function in sys.S */ +extern int getpid(); +extern size_t uartread(char buf[], size_t size); +extern size_t uartwrite(const char buf[], size_t size); +extern int exec(const char *name, char *const argv[]); +extern int fork(); +extern void exit(int status); +extern int mbox_call(unsigned char ch, unsigned int *mbox); +extern void kill(int pid); + +// syscall number : 11 +extern int open(const char *pathname, int flags); + +// syscall number : 12 +extern int close(int fd); + +// syscall number : 13 +// remember to return read size or error code +extern long write(int fd, const void *buf, unsigned long count); + +// syscall number : 14 +// remember to return read size or error code +extern long read(int fd, void *buf, unsigned long count); + +// syscall number : 15 +// you can ignore mode, since there is no access control +extern int mkdir(const char *pathname, unsigned mode); + +// syscall number : 16 +// you can ignore arguments other than target (where to mount) and filesystem (fs name) +extern int mount(const char *src, const char *target, const char *filesystem, unsigned long flags, const void *data); + +// syscall number : 17 +extern int chdir(const char *path); + +#endif \ No newline at end of file diff --git a/lab8/include/tmpfs.h b/lab8/include/tmpfs.h new file mode 100644 index 000000000..d6211494d --- /dev/null +++ b/lab8/include/tmpfs.h @@ -0,0 +1,29 @@ +#ifndef _TMPFS_H +#define _TMPFS_H + +#include "vfs.h" + +#define EOF (-1) + +struct tmpfs_internal { + int type; + char name[MAX_COMPONENT_NAME_LEN]; + struct tmpfs_internal *parent; + struct tmpfs_internal *child[MAX_ENTRIES]; + struct vnode *vnode; + int size; + void *data; +}; + +extern struct mount *rootfs; + +int tmpfs_register(); +int tmpfs_setup_mount(struct filesystem* fs, struct mount* mount); +struct vnode* tmpfs_create_vnode(struct tmpfs_internal* tmpfs_node); + +int tmpfs_lookup(struct vnode* dir, struct vnode** target, const char* component_name); +int tmpfs_create(struct vnode* dir, struct vnode** target, const char* component_name); +int tmpfs_write(struct file* file, const void* buf, size_t len); +int tmpfs_read(struct file* file, void* buf, size_t len); +int tmpfs_mkdir(struct vnode* dir, struct vnode** target, const char* component_name); +#endif \ No newline at end of file diff --git a/lab8/include/typedef.h b/lab8/include/typedef.h new file mode 100644 index 000000000..7d8bb46e9 --- /dev/null +++ b/lab8/include/typedef.h @@ -0,0 +1,12 @@ +#ifndef _TYPEDEF_H +#define _TYPEDEF_H + +#define uint unsigned int +#define ulong unsigned long +#define uint64_t unsigned long +#define uint32_t unsigned int +#define uint16_t unsigned short +#define uint8_t unsigned char +#define size_t unsigned long +//#define DEBUG 0 +#endif /* _TYPEDEF_H */ \ No newline at end of file diff --git a/lab8/include/uart.h b/lab8/include/uart.h new file mode 100644 index 000000000..7217f4bba --- /dev/null +++ b/lab8/include/uart.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2018 bzt (bztsrc@github) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +void uart_init(); +void uart_send(unsigned int c); +char uart_getc(); +char uart_getc_pure(); +void uart_int(int i); +void uart_uint(unsigned int i); +void uart_ulong(unsigned long i); +void uart_puts(char *s); +void uart_hex(unsigned int d); +void uart_hex_long(unsigned long d); +void putc(void *p, char c); diff --git a/lab8/include/utils.h b/lab8/include/utils.h new file mode 100644 index 000000000..5bfe11bd2 --- /dev/null +++ b/lab8/include/utils.h @@ -0,0 +1,18 @@ +#ifndef UTILS_H +#define UTILS_H + +#define DEBUG 0 +int strcmp(const char *s1, const char *s2); +void strcpy(char *dest, const char *src); +int hex_to_int(char *p, int size); +void *get_user_program_address(); +int log2(int x); +int pow2(int x); +unsigned long cstr_to_ulong(char *s); +void* simple_malloc(void **now, int size); +void debug(char *, int); +unsigned long get_timestamp(); +void assert(int e); + +int strlen(char *str); +#endif \ No newline at end of file diff --git a/lab8/include/vfs.h b/lab8/include/vfs.h new file mode 100644 index 000000000..f4122a89a --- /dev/null +++ b/lab8/include/vfs.h @@ -0,0 +1,73 @@ +#ifndef _VFS_H +#define _VFS_H + +#include "typedef.h" + +#define O_CREAT 00000100 + +#define REGULAR_FILE 0 +#define DIRECTORY 1 + +#define MAX_PATHNAME_LEN 256 +#define MAX_FILESIZE 4096 +#define MAX_COMPONENT_NAME_LEN 16 // 15+'\0' +#define MAX_ENTRIES 16 +#define MAX_FD_NUM 16 + +struct mount { + struct vnode *root; + struct filesystem *fs; +}; + +struct vnode { + struct mount *mount; + struct vnode *mount_parent; + struct vnode_operations *v_ops; + struct file_operations *f_ops; + void *internal; +}; + +// file handle +struct file { + struct vnode *vnode; + size_t f_pos; // RW position of this file handle + struct file_operations *f_ops; + int flags; +}; + +struct filesystem { + const char *name; + int (*setup_mount)(struct filesystem *fs, struct mount *mount); +}; + +struct file_operations { + int (*write)(struct file *file, const void *buf, size_t len); + int (*read)(struct file *file, void *buf, size_t len); + int (*open)(struct vnode *file_node, struct file **target); + int (*close)(struct file *file); + //long lseek64(struct file *file, long offset, int whence); +}; + +struct vnode_operations { + int (*lookup)(struct vnode *dir_node, struct vnode **target, + const char *component_name); + int (*create)(struct vnode *dir_node, struct vnode **target, + const char *component_name); + int (*mkdir)(struct vnode *dir_node, struct vnode **target, + const char *component_name); +}; + +extern struct mount *rootfs; +void rootfs_init(void); +void mount_initramfs(void); +int register_filesystem(struct filesystem *fs); + +int vfs_open(const char *pathname, int flags, struct file **target); +int vfs_close(struct file *file); +int vfs_write(struct file *file, const void *buf, size_t len); +int vfs_read(struct file *file, void *buf, size_t len); +int vfs_mkdir(const char *pathname); +int vfs_chdir(const char *pathname); +int vfs_mount(const char *target, const char *filesystem); +int vfs_lookup(const char *pathname, struct vnode **target); +#endif diff --git a/lab8/initramfs.cpio b/lab8/initramfs.cpio new file mode 100644 index 0000000000000000000000000000000000000000..27081bf16ea10b683d66832ceb49ea78af53f653 GIT binary patch literal 405504 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

<>iM# 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 o1KN;R;5%@-${u#>hh1yJH6rdwj=2Fx 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 b#5K?w@(cg?9HX!HgCDV2v%<(IXSe?^$7->9 literal 0 HcmV?d00001 diff --git a/lab8/kernel8.img b/lab8/kernel8.img new file mode 100644 index 0000000000000000000000000000000000000000..83a07254a9d5bebb8a5b9d56c84d447097a7dc0d GIT binary patch literal 35408 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 a({B2A8axTp@0;g-^W15k2?Kv3>3; diff --git a/lab8/obj/exception_c.o b/lab8/obj/exception_c.o new file mode 100644 index 0000000000000000000000000000000000000000..73b7212ae182080b6fdbf9258a37b7b9ff23e598 GIT binary patch literal 10944 zcmbuFU2Igx6~|}s5}aVb0jD^H#+P7%NgQJWY9K*k%}0UO36wYuEl$?U?iz2gz02-( zyD6k~Riq*nsSsR=N`VkH52Q+^s8ZXwr4{N&WHm2oNFpARXbpLw3aYTu2Q1;b|1dgGo1~Y8$yI?;GdqZrvp~DytD89Z_p|4#;_poy{7c{yd>Ne$ zf1us4*^Hf;7qm(Ch}bbRHaM3#>}uib%~;nQ=CHR(nYCstR>K_j5h=6AjCr$}!yb_` zt!B*J!5ntA@Mbess%8#*o77!w#?H@T4*Q7It%v`&F^4^JJKJ^ee`dw57G4Ygqs(D% zleTK$e-(4sN2IN4_&=9|ppk2c}8rUll>(cCCtR7Hyld_j7`(9-?D0{K8?^gDg zl)XUNwaT8O>^qb_OW9FnH+WU=%HPDnzuq)YXpWg;Y&dc#c7o;$*1$NGuay0hol~FC ze8OC}bJ}3eE@e9kyTRD`JGsLQTc36e4v#L4jjuN5XI6i)ncp?TtSjxn+>M$$ODI>O zG7Yiu4aR(YhkU^Lu{QYt-$-K;>+W{y{|4w| zU3u1r*gC6EYl+&YwMqGCkJ>*g?L(KCv|m|Qe=M&nt0V0r2FASfcF=!ZAAmm(z!$`$ zgnpP}UrodY1uhII#JTYegK==NB)~88hakvW0A?p4(snqGky=n?DJ}@{(No! zZgO&A33bsojJ+AB`BOuF(A-!V8(%_wfqe;M5`(?O#MU7`Q|8eq=2U5QY#8IX{~H)b z8b9cj<7Kt6KL=OjZN^_){kt^RyjcCa#$bGKEmghv9?d1hh3EepJnx*bUv9Oa4;}J* zt0DjG{peQorI@%*<4^NA;K8_+mg7E#`Bi0pP3?FX2Rna>!zbb95a%Hto*8_*gt3`N zF+sTq>X#4~s(Xoa(1vDh5+9VY>J|F*kVzR?(Vm_2L(KgM2DVmCvHQl*{ z_=#rO543|Zd(+;xnqUpILLc$BjC4`Ymcer_atNHBcjzkty*wD+Mw|nqCG9xPyQCZpG;zIVQjEIf@d@OQ<~(xW2M2I92};6%t4+b!E<-= zC+1(JS?J3w)J5AE|H_f8q0bb70O5>_IlBfp26} z-!G$|)9F<9>9-!&}W2O z)xA|b?6Wtd-?lx+4~d04hIEFy)!emv4)^)Ta*jiv>5TnZ`sI#WrBA_rQ^Gj}?U$c3 z5)V6m(!b>xW5kgB42@loU)BlEUb068XRpw<@GP?J(j21m7`01th|V8m*T9xNq!u>j z7Co0rI6s8>WY-2JbFYrswVxJ)fU#Q=#Py1-;Q9P^BAJV(Aazn4$@1NnY0kxJ#$g@V^wTvo*4w346fO#nA-*|b9PsQ&i;f}bBq zT7^O`oy>G+l3wB2{!~8Om-d>rKk>wr;-+I)+xGS?yOu1$LygkoS+6jV?D4uYz3C-r zFPG2m%P0E0T(;mn;#n7LxnxhKH>H5R_X;^dJ96oMR5yFbc-mW5@Rp_UA0eAI^=1oc z-0iUj3UKb8r}7y;P4_|3%6)+L>`Et6mExv+&&rSOPi69?YYlD~_m5=<`hCmE2srt~ z)y$?Iu4j!(y{(%zJ>oSzxfhiNymc*WT3R1mHDK>n{qUjImew^bt5yU&=vOWGFY<$3 zCR)5FvZ$uPV6B^a=0kLCn;Sb-eR@{%!w;~Wjm=+622#@u{It#WPDM{w%{USip!&Nh z6RDYgIDb3W_kfDTk&e($+uWU}?l^t>#uL@geE7kIavLvD9?~KDVIQ7WKAa6 z8)A&}S;K3G_lv=IGhZLHZR0oNv5Id+&JT<4NzSj;^*2`Pzs~vZD8CBq7qx$p^LvAQ z+qZA4{Og>5GRU{_PpSNR8dsz)`r+7oi}O98wVbbG*UtG=B`i_1c)g#TF2BmKQ%+`; zsd7kgTLq=*Qk9u`6UKWy(#<@W|6%RoE#FCjPPKg)I$7|t+C}!h%G`Dn$M*&^U-j3{ z1F)sc<=(C@Fns?ovQ}Z1(^p}U&N&_ryWYUsm|tOT*BRIj<~a`OA>31X27jb;mAPG0 zVEdR~;n1DoQ0188yN*qE9>98*Ile8~WY-O>pE9rE5J~xC%r`T)>jmtW%m?vtfs(}I zSFp*?I^GEF`T+Y4^TydQknFm^_4oLr^4FQ$^#FFBd8!5ml3fS5{u6&x{s!|d+*2aG z>EeGmg#RamUk~9?#C1CTxgq?X5WXUWw}$XXLU>yU-xQiOVTu^Ok>gD^plJO$Me|%Kb^;Y zA(`myHGX$4p37(Y{cb|>eQ7_JNm+9sk@w?y95gC--=|}Vy-gR>No#ax^ZS`(d~5XW z%@*TUn*{e~&9D%Hnq(hIjDsts!`sm~m$j}ibs6eL@lN`wB)BS$j@3Do`{fWK3 z>3Al8z*tA&c+#XYg{icV?oZ+LmQMHO{5a>Do^&zpXXEIz!7(w}mkShf1Af8uAtu>m zxk}KA!6`J}jk9Ci_BQY!o`fHWhMy?xH)uv2qwXi;l^}etoBK{i(08(ezLRCULq^bd zYuUb&m9%~LGkxhiIh@Yt2Xej%?)^-1KNddH&fsDeVLtE_v80pv0&xA5>SBJE!&A&j z#~zsYUiLT9@tEiMDmub_=B|!B7ept<HY#cXi}BLLBe7k|Q*r#eKsj|PzOYP<=~291abNMf6(3am z%ZeXWe39ZO6{qu@q?Z-{ia=aP6vwyaa;oL$ImH3rAj+vpaj#4kgS=QYLe zRpsAOT(D6Zr4s^ZPkDO|5A{-EL>pJ&}TG%|PNu#>s?Kf+oa%*B7-Rb#$(9 z9F93U!iPe1&MU6t@R8#9?q5m#z9MnB#yL^u5(nYc%-uLNJ32UO+SKak2wxMTGZ>Mgv%w7LG z9UYJ3+2!a6Plf0lR$RwnMDbP1|Bsl9|E=8a73Si<@T*Ek$0y3~siG5O9sK_vHi?e# z8s=^sniYRY`PuI1Z)5$Pj=t~?rKA1KIXb&p$9Hsu7ejQ;D~|u)p`1Q)^t&XUj=u1# zN=N%y&4+S{XOVSkm`gl`*D`nG*{JxMvX?l2I{JgGzs=DX-mY}CpNAEvZ$OgdtT+?8 zd?d74>$!mNA-?Z)xO_)C4kHd0n=-q}`tV{x`0)VU&=prI_%sUYG&H{%SpwU LL~tqpy7m7L&WLH! literal 0 HcmV?d00001 diff --git a/lab8/obj/fat32_c.o b/lab8/obj/fat32_c.o new file mode 100644 index 0000000000000000000000000000000000000000..e8db68fb73aae4ac7626901c6b4d3d2dad411159 GIT binary patch literal 7528 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 literal 0 HcmV?d00001 diff --git a/lab8/obj/freelist_c.o b/lab8/obj/freelist_c.o new file mode 100644 index 0000000000000000000000000000000000000000..de18d23c330154e2993c4dd7beb770a6583a6b39 GIT binary patch literal 3184 zcmbtWL2F!96h3d>q>W~piA|+K#2GM1gwA790;XNPT5Y5R(a<8U(n<1UikT#x_a?*! zZ3GvAZd&NVg)O*|+CQKJDy?&t&D`9~q>3lJd(ZjqIo~<= z-22|-%A3@`w-H1wI#^5o7OfYyF3>w|u&e zYjF(^&o{!%#!OnE<{@xvTxiLR=9Q3#vtpYoigcR7Z2Kvo zN6yrvXz^m4#2u(qLM|oK(Q33RvJiJ)8>Zzya0 zljG%}JQ0k)s&T{&Nt}0ihO%ofc_X=kYU~SwkK!Qd)L=O?HK_2i;3?0*R|kn+g!&fS zkVPI&4Hj=^Z~5>4@jF&^ZB--y=7C#%7i68GUc%|K^k}==y5IGSLgeGGoA_XI zC8q$+vR8cS+XLnmvKMFAr-MEG`&IAUMW6azNZCFe*n{JJqr=vI)wuvG3U2HaHVdB< z`)4!C)aL><#AD7}ujuh?5BweA%(Egq>imGs_VDL(?#53a$ZZbhX>^T77j}Tzl}23c zSoNs3yc*F;{o+zGYl32GRO$&llbEVeWg+hPD@VPI2(2_&(~^_AhjGMqSBC_D-ocLu zJ_1~ywdNTW{59bA{>B8KbnrJUp68?%o;CzG^^D2dXM&r048Cdc*!5hqaK0NxZaDm9 zS@_)HH~1G8kInzBg%2BY%-=culd^W#;WzkC7LU!JIy|B9{N?Z%{O=w-{Ow`sL;uA^ z*%NB);O709cJQnOsqdD>W9~Zz@kh0!GKV>->$z&QdbC&xl4vcVV4;#!D42_53hK++ zm|w2dBHY7ZX*r34skhIU;-oVFAsjd?s^W52YLS%lzo#M?(1KleoJm6-Adl_lz;?fc zBZ7sPZP}EUCS`I6|NgMr&j!T&PP_u0aretR=>i-C5jt&PJcfrkUH5+*KaN=Dbhb$* z{&lR`V(K^82`C(I-V1|YmV&rGTTK0CW`3jFeqXs8l110|J&AYgzb)~bHYs$s{uy9= zrXe0%s^WM-Kt4Z)OuRWiuE)*IA!WHJsT4c_EQiO9=YQk7ZFNZQPaW&FxcldCWViUA MB~ir=hVI7y0~KGlga7~l literal 0 HcmV?d00001 diff --git a/lab8/obj/fs_c.o b/lab8/obj/fs_c.o new file mode 100644 index 0000000000000000000000000000000000000000..6b10bb405ab9f0e5b17a36348f6c7b5350963ab7 GIT binary patch literal 1704 zcmbtT%}N773{GAD6@PAmAT0dklVAn3MkQFPnVoq}HU6+HR~zJVS* z_)0#3CbJWpPFFz<>?HZ}B{P%F-0$q~4rDUGl7VOFdW-@*d0pE#rVo=a0Xk~cWArZ@ zm%1H9#-?yR(3=~E_sgYHE^lR*538Mq?qo}DUrGZ{1pc*X*%~ zD{Zc{oQ>ykM1Xh`^S18gKSIQt8|3za>;jlNAx#ZP#$f< lINB5Vx#y>Qx&IC!II=~L$r0l2KZ~)n{5=bvh+Hz={7(;ZW3&JO literal 0 HcmV?d00001 diff --git a/lab8/obj/initramfs_c.o b/lab8/obj/initramfs_c.o new file mode 100644 index 0000000000000000000000000000000000000000..c191ead209581a301cfac79cdaf21dd3cc7d9d33 GIT binary patch literal 5624 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 K7CB?0+y4!1q%*Pr literal 0 HcmV?d00001 diff --git a/lab8/obj/mbox_c.o b/lab8/obj/mbox_c.o new file mode 100644 index 0000000000000000000000000000000000000000..95b25e244b6af9bfb91ea3f99427fc9f2bd4d07e GIT binary patch literal 1856 zcmbu9&ubGw6vw~YO@G*y5@W$)OOryuDt1Yvg7uOOrB! zt|ckZN_2Ibt2V|kiq1=Xj`CPOF>xB1_Nh^wNkw^k8RJN0fU8j&$LWmu6&GH8LG=D7 zU>~P}CwraF1}0;6lD3a2XOAB+kYc_C=9}!sGygoWclfKb!Ez#rwn6IxABv1e7vEgM z3{q5E`;+N>>#R_X!&Kj}eR^oNiYyn?Ssbk&>lw5QXcgyh6r9ax(LN-0X4{JYeMR4j zb?Q=)a`ogi63QA{&bNJX8iwNkmz;bbk9+fDZDr+FW?{3mUkmp$%hr;WUCixsEBE|* z*2*qfxhpZ}rqM zzVFqD)#{;Vt=-#PY=mxk4_4q+UCY~X9tE!NiA?`DOj9^(nSL_1SoXDc^!iE7iFp0y zeAnW{a>|Lu7nz^Ut0K#i;|-dWy6Tru4_legeea5R-F-xW zEhUzz@%Pk)tE94?+Fiu8NHj$L4_F*KBN;FME36(pH(Ovwz?-7rbHqmJ(c>A{drt^Q Z0@}<_MBo2;n(G(8ATG*=63bLQ{x<|)v`9H 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 B7PbHY literal 0 HcmV?d00001 diff --git a/lab8/obj/sched_c.o b/lab8/obj/sched_c.o new file mode 100644 index 0000000000000000000000000000000000000000..7970f91b93387ad0d6f7a4834347cbe72c1f590d GIT binary patch literal 6576 zcmeHLO>9(E6h5z01OaKwk5oZsYO7#?VQLz!CWhC5P_-dIhFBAmVcL0RCY`^|yuwJU zR97rmQ0+4HTyYFLoS#J~EN7~=vB8WMjpB_x{Y0t|~z(lVZN@43_K?Yy`!8W!I0 zdhh+tIp6uYKkp4Ep6uCEXIY?{1@FPaOrZeR*DZ`~F|?rpRzYPKd{b$F;wpf(2%pAh ze5PTn2!-fu$p__<&o27`ZbSjXr3SmW4E3modT1)49gY2SFtq(vB@8gO8u`YjeUb0y zM?QLU-Us8zH-UO()Dt`}BaiY^C%MY=BcD!5n~$qDmTMPV(1+zh(I4=AH$U=;m(GF3 zIv)xi@(ZnF--;O4LwRPsT~@v&W|v!F?4Xs!JW%G3%ihY`Vs0fFACf>yO87osAm`FM?T{^$r@0ev@WHsP^|302f6Om*Bbf6T5D@mvcy`KA&zScFceku zq+OiZY8Q6`41Oi|Lm3bwZt`71e(J^EKtD95z46XmC0s%~;_C82xY7zm+-&%d_gm}Y z7y_D4Yt&jp`v-7cS^!qiSgcJe`$E1Fj>%VQz7qbtQdv)XhH}5^gSV=Fc1S-FfZuH7 zCwXawsy*&|md~I~X$7qX)ea`){!?{b*rR^j9}9A|Kjpp;;JzyPp}0xU)6aRLPvXaV z+&El^wI*Lw>v|ZPp}c91djr09UzIW9c(*Z^vB~p_ynfmbey#`lrLj1dSbK_J=CJsj z5&tc$*ZjyrUKXw?p1lK9W0KPv)7mAuW`Jjt=D*9cJfZ3!bWxwqwe+WIvcOHXrP>7W ztdYL1M|TloBB#<)tkF`tJa(y>))6txpU;NUvG9CU_>O|EW|5=1e^BQ?ZFmRJC@crqyKC3ufh~vnhSTnF;IUvwFtojWSj^gA zdN>pebp+cVk~l`!$Prq{4?=xmleJ-`UtH+TjQ3LCwW=|U9~K*N7-GCb;(;^uXMNB7 z{1Zy0d_T+Eq`dJ=-C1j|CeQwj{4~q!X@hsI3Z1#*?2;3j{dt!6YVx|URG|1Su{=OM z#!deBX!h4xeoo3o{6|<$FS15HSTt7l#Jh#@=QaG0#@o&EEtfv-H7I zZ6=43XE9DvAA8Y_r2cZTS9M(K<0+`oe6aW~Z$iB$JuiIeQM(79CiJZGR~5V;@zq-W z#rZ%i$hew|^MTkC_%z~UwxMFk=LN^lF|PKx!sCozW_@u!aC{V>TKq41;3qxs z*F5mo5vMq>@KTC%huAp}{Wn-Y#9J$Xb87G6Lp=K#Cwpq|<5MgCX~aqYChLpyh}aj5 zFRRA^HgO)Yzl2XMo*z8$Ul1q$81sm8i`XBGpJH5`SHvLSA9rHGerSt9BAsv}ZZtm# zZ3Rf@#4ry>95<47jzzMG81xV4a!wkR#O*9Z3_&*MIH{}~i6!#UzNAx~J83cf%Y6>1 zXfm1U2X`PF$>tJicK~w3X~mk$WZZ!~L_}o6NR>a9aQovCHv@x-WHNF*lj=)2c^E*C zkcgpzn@BkrZlZq>q`OEWHv}As7(3~hqNfBSlqzKpbT3d_gZn_Qvl_26@WVnIU<2Z6 z?Ff==l1ION3an2&IzFNCtl=?r7d`N68s5xf>aO#c;@5A7n~alR9iL^K;-|YnH5=#D z9>pGie^uLV#ybr>%sBDr@u>HKiJxSB;@?nZ2ROwz@$2{`%{tHp}tM=Fu#Q7)))ebgLcrVYx z2ClwOTmwJP^9cjL%<~Hdeg*wgQ*z~3eJ9+MVoAsCCgQ3&?s^AHp$&1n?G*K;(9U`A^6XHqGA z@k213ah>4aeTTN^-6+0prIizp4CJCIhjaZWT>yAx|ArgrWJUd5jA~VT8dKYc57~!kqP3^l zp6a7FmA~qrMWGt&dPh~DI#@$D$(R{`f$hf(a+CH5+SjUIFV`=?_EbOmu2S}@ek3-1 yBLuVZhaF7u!rp}#ePf#Tq-L%?LNG}N*ydzc{cEIyzwK(<7x*KGepl(uwEq)#>*vt` literal 0 HcmV?d00001 diff --git a/lab8/obj/sdhost_c.o b/lab8/obj/sdhost_c.o new file mode 100644 index 0000000000000000000000000000000000000000..584686477b326e4e2d8e6781e2ca870cbd38f820 GIT binary patch literal 5520 zcmcIneQaA-6+h2*laRDs>JB=Qu6Cpfwkq|KE{KI9^`&8JfieZp6%!yiZtN`X;wG_Q zwse8;B8G_6A{tRqX(CyqO=>oQG{nbovH(L)oZ3o zi0IB(Jp6mF*{)a-x>^PnBYG!Ot)>{~2fPbc!s$2HXI^<>JxmJ}a+7rPa?x_1PvXo~ zSN3!J=kz`*baK_69{J|l&1&_MySs)*S&s4Rn{ma@XRgn@x}wkgg+8>ANt^d> zU{99N_bqFi%-+aHgkBXJn>XvD*3El2KzGF+B74<~5gvP$Qahr&F7uk^l5tut#)%Fv zX84(=e2+e}Hbl#}mf$~$u1;f{&@M4e&g~CtJ6+?)y?U=>^_q$m=ai1mCp~Mq=-mOE z?yy&p%gGE;ipY)bK(0yRr0j0fJQShNEB-dNdsmcYI^V0ZOmZXlIuFXf4)`N_${pGt z_TQpihm3yq@lUXSeMZ~1KBMI==p@%oz71Oc$FR2CXru$a{Ec-SpI<{jYW^H?jZ^{Kc z3v4@|W!rA@HSqI#2+u2Z&ft7{p#6;bz|VK%C(H-T`2IiTMe4C}UP$F79>@#p=G>K$ zOH-p|P|em=Mm=bL_7%bc>}Rwyd0(j@m4o^8vE*DTIJgODbo(StMsqg-=VH5 zaiVip%hO2*CK?uY_uM`!U4d13%qvT6pWZ$U-ROuCc5a4nrQY_xG>fK)o=J#zO}b{-aOz z#ky$n)mGHngXh=0zyIKtyYtE|?>nf?uR|YXZ|L~~YG=U?XfxVCFD5sh0oqlUEz z*5$+61?zGQH30 z*dF7T5#1$tFVFou+dsRLXfKxCf;)mQhL)@^UB3pZrVk3e3yFnXd@-^V4t-iPu-*xw zf0<|KJt=zU1-CV>p3ngb5v_&Im(OaI`8wjPnuE|0(3tui^!4Hy+EU$7uYpk~KTEQ9pO%m-QHV zM@SzP+~il)4KU_o{x`%Vl~-V&6ucWB$UJQIOEiF)`6mQdbpnj*k?}DJh0*gx!Cx0# z)d#Sw;Kns$FJMG-8&8{t_IE4JOkrx?#LFAa-=bq!aj3IBJ2w=+XvEMi{|zuW--VFUb11N>JFa4Ka-$4gFP znD$RoHaC_zOZifIbht$Ovow)ElP=|)sR`kd&6AnDlP+ZeriTkW4QGm3KW!vGGENXo zpBftCM#$$@8t9nia>Q(VPPCCmI}GT@WfeqVx*KVJf6)L^-7Uc zLrxcRP9~diGW1x^VR|7mhNIx)ol&@F4$~ zefVA<|J#DIJ-dAPKLuxd{P=C39_}4xbjg+aIQaJ& z5OcTS4+QYz4fszq;2&zhpKZYJG~l0Zz(3!B|9k`f?=|3GZovOz!8wok-rpF~S{RRS zpz58@+ik$5btcAl*k&~^lc}Ao4$QMfSbPk{Qz$I_OAoD>DxC0xar%b&l`Kp zWx}6QH4JY0WN#3c`;ZFaQh!bWH+_;4rLzSma|*Ll)bprW715p&PHx(vgu45QQ>79m zisO1SJYFc|&^r=m#+_W^*uy6emYfW_PeO_1M$;q3Od%)kzV9gx4eWxrQ`2Y5syFb; z@%JKT;XBWmjmJOkkYY$e{x9;f$kZhDA}IeKTn7R~ literal 0 HcmV?d00001 diff --git a/lab8/obj/shell_c.o b/lab8/obj/shell_c.o new file mode 100644 index 0000000000000000000000000000000000000000..15b0a8b9587d1c55ba5ae716f31fd8ce56a8ec6d GIT binary patch literal 7096 zcmbuDe`s6R6~~V(C3Q15QImAbnyr4>>`f`ovyvHRm;Rx|?qXONCb*;j|&_dF}M*i5wbCy3k7$bxH5krl4 z&U@#`H&=RMY}c0Vy`Ou|_ndq0dsou?$qUE6(-Vn+ln7jh&7M$z`ku{p%5SFN3Fw23 z@m-&+pMkg6qi_-N1$H6InX0+j^NE-~VnWL$3YP@S*^wOGMMAo~J`h{opta+BNwS2jY##w-AT1$E@cdsWIG#XEFZfKHS3niozmZqC5BD z3ntF~p#OO|$@6){4r1`6hq@m6^nd=?$ph;f)8Frs>)9>-Tu}q(3Mq>7NbDdF9E)`s z>+Leu*JUi;Wo)W_9lqIR9&hlTc^~22Kf<}={q+Ivcc<%`_I5XFscRg^{`#5U`}e-L z1J*W%A-GPj!I*a~HP)ZN`!$HMx!%J|&D9+#f8Q|PSRd^r+LFGfjIAQWdwI+oPBs1g zLG6EFynZA4r}Z-*UR{Y=e?}kJw#~2%|KG9(&5ydJS3?>iN4YZXwMcYl2 z>wMa^9D5;OE?IMhMJu1J2YHn&90{6a230=`t71Ek4rJ4Ax|6_s9w%&N3bm?hJDqhN z8GL2FdWhmsZRU#$)TZ)+tr;9$+~9sKd3 zq?sHs5AF|m;EqRlP$I7$hgkiY$lktwppU}V$6*XRhqvE;{P63)id_C>TX7X)xOH6B!_if1OGcl{%FuY-z)f`=p)YeTjv# zYA;cEtPKV_y|BA&g!1g|K#6Z{<2#V-RO9kgosFNhHyF@I_dlz|2%|W3E{sB;Wt9~A42%YA^ejNPKSJ_ z`9d{k7Yb$u2C^_v4|?FvSFDPYFS+wjOFOPrwM*Hcg|~k-FtYr!0IIH&DOR9du}g5u z$-6e499E%RUaVChgQJ#PwrYiPX#tAqLZO_2oLwh|>M-xvHu!-oY8LWUR1f+^yNHJ^ zWP;<@a&wNI&H}y7p~xbgm)|;M(dkJiAIz7XMX>932J+d09pt)TyBYl25|mwd3#xag zti@9rm-}un@+a7rDmkY_C&^=UPEipZ;f7BEbe#d_qBG0=1lOV?e2BTOBXLCM0^7-% zDLTSOLv&IKR}a<+=AysC{YkDxUpU>zR47k6d!$TrgLqsZ)-&7|{XcSlmTS=$o?}ir zPjZ{8I=4mVHuvQ`5*^`7JWe`0xlPr1Zi~(x?#ud#j_^x7PCC1|P1RLyi_Sytzst4g z2!D?`>8RJ+4NXV#zp3d6Ur}__dEHUCT-${1GnYK&qv8Q`$y2!GtLGWRys3yzocq08 zi;nO<=A=WPMN$Tsi_RYIC%6_J;X};zd`2~$B=?`!bc9bRI_h;bt?;-ciS>-a@%K}! z|Qctg=quZPz(ofP-aYdXT06&-b6zg4(8ulE$bN0P^SMd4po z_{Yp;UX$Fv&9%%+_#H(@&F7xNpH}ogQ}|wmKVU9#r?~%+Yl$lydID#)g)g|Hg#S~~QP=Gu^KYa7Gs=8F zXFjU&Uj7Ln>#)Re`v0E|OWaEwH^E%u3Lj#w$4xTVj=3JUz+8`8XD)H? zaNGuSi7R}GxgPf%b3N{B%=Ng-%q8x9j(dr@#1;N)=6c+#nociY$M0%7!rxbP)cayZ z;rQIBRsN#s$64Rg^o8G3bc~h?z-J2Ir||olzMQiUG=1R@6&>~aWSoC*()xT&(H~$g z>n!I?g1M}-@F7J<)t^+j`h8eFBeq~%UK&68DCf}P>3#Q;RDD zq@k7}?2zXF>VFV@NmJcZ?7|AiH?;xDpKPem16T4-Qb#HO;svGr)FSyyeFO)kt=c`^ z{%FV_)@@I)zm_H#>_4T7Vq4GuII>Rr=kb>cnHTLJ`HH`MN2Gl8*odIQ@h5p>=yIS- lLHDQUUHaZ3f*TYNi|4;@zUlL)v#pbVoD)oMy812M|353^-^Ty| literal 0 HcmV?d00001 diff --git a/lab8/obj/start_s.o b/lab8/obj/start_s.o new file mode 100644 index 0000000000000000000000000000000000000000..13c5fbd98bd79e98fd7bd29e90406a9fa5c0758a GIT binary patch literal 8672 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 literal 0 HcmV?d00001 diff --git a/lab8/obj/utils_c.o b/lab8/obj/utils_c.o new file mode 100644 index 0000000000000000000000000000000000000000..5916736e31637c8979130d3d5149069cff99cc0b GIT binary patch literal 3824 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 b@Z~_~tX-TgzU5WdKl=rvm9dr4cJ==aK=<4m literal 0 HcmV?d00001 diff --git a/lab8/sfn_nctuos.img b/lab8/sfn_nctuos.img new file mode 100644 index 0000000000000000000000000000000000000000..ef6cec64df618aee4818bfa8d5a4c237296647fd GIT binary patch literal 51200000 zcmeF)Q;;Ol=#V1(6 z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?D zU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPq zfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b z0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q? zEMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}n zuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQ zzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI z0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51< z1uS3z3s}Gc7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc z7O;Q?EMNf(Sik}nuz&?DU;ztQzycPqfCVgI0Sj2b0v51<1uS3z3s}Gc7O;Q?EMNf( zSik}nuz&?DU;ztQzycPqfCc^!1zyw`-?nwL&gq&p>=GbQzytvT{rQ=%0RkilP~gv_ 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

#+eFu?d^81zWKV+pz;Xu?xGg2Yay(`*8pVaR`TT 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 zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez 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 z0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI z6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^c zPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC z0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI z6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^c zPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC z0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI z6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^c zPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC z0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI z6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^c zPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC z0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI z6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^c zPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC z0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI z6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^c zPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC0ToaI6;J^cPyrQC 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

%udj$7^OSaV)n=MQ)l zyPcg4Ih5u_ki8JHJ3}_r50_m(rUK5k;UHj?KT&V4LphlZyA%Ix=#grlNvBSbk%O|t zjv`+`(*7~lUxCmm+R-q$L)UDZKv@<=tTKIeba1Or=hcbcHcyIN8^5P@xHG!S{XJY zbZ5Z`uYOK1`FZH<;KS<9SBB~r_Z%AUqzsM!n&MPGH?yNsc&JbDl4pbRimvKE|kq5Q`TSp#fY2W?rDmMqL;E-+g4NVSR7ha4t-VUJea z)o71g{4L-!+eX#0g~}9({~2L;t`T-po)i7uUu?Uk#4tTq8HzMZS}#N7gPN=4@PB|G&owIUl=!FM%Swlzi|~3o9C@iRqf+Sm z8E}xB&J$0oEd-4Ne4n?YxiFK4%AtL}xFC5e=GN#JgA>s&PQsjh6248-OKt|gga4rJ z{Ln=Gs{1C!JB233rDl|m5XxY1qTvip48s|jJXy`?@4oy2`fs{lyT!~Qdc>6-9EbN3 zCEf+$xc}*u0)cN=W^wlrm0=dZUH%v&NrB0=Y~dtX(kIoDoqK?HNQUflZP~b6%1H5v za!GOfCyKg0^uCEPOBX7y)|imqf0l4(_?C5aPj{J@edv>M4|uJ3uRSu-?A3f@h#3Kt znG%d`81K{EVx3cP{uAs7^VACTQ@2*F693JJG~5d zlp&;|EsUy*5hf-PHk?jB0dZ^;dF}UX0{mXYZ{V(b&lc$Mjtv`RTa*!lS9phHT_vLod#GHrFDJF2Gaz?6 z$wS$Sh&cSd!4XksR0%!IOz2480GMOjK}Ma*#{K(~zbuPiW5uU-VMBENWSPwBonZqW3glG`v%E*^mD-YY`OFA6+vI+U} z_ft29HXvV!cPYt5y-w$?O+#VJ5x1Zd_1?uFM||mWg*ffF&L}TW+PbD?w$irIi`tT> z?Y87?E1$ew?S3&|8Jf^hmth;8j%Hg_p zZP#<@wu{;g#-B%;wyg8lpj>#}Y{(8hS%$W&40|gs{%hO56d&2cXms(dz->Y~-C*lL zWh|A>P0(cnuK+C*^^*xfZ^MGG0bbW6yTepbT^mAe8-hMgK2r_i5dSRw`sVcBm*Jg^Fqm z3g}KPRn68_oM}^Q^?SYYpFs;coY}JI{sMVYNC9mouTqO|w3_-9ul#|KonQBnUB;9G zH`d|Yct^pVz}*Gy_=;+Y=N}>tH`awMx_?p}!9vhx@)p*zK%Tip;EKHZpdy(C8P28j z1WxGUWp}z|iem@L)^^x$lg00OM-kzk@;PpKqebh{C%fe+=r-6ilxNYY#k?N6m<2)? zFXZ#j?B@+O--nisypcIY^5>MspzQk)GNSli1L*@^BSkA@&Mm4XJX5@8lVd6ud%ivtuCj&;ZMt_9w~Y4`n?vNGM`b`LY6as&El@EX9fAeocSTer-{ni5CTHsp?d~1PkE%2=czO}%&7Wn_O z1?U?dbial0U6j(c-}Oj+4;av37qi7H5i~v(c3-J ziZ|1TMnX;sr$g=z=v4`K0PrR_6E4ula$fjlaFuZL;TFQh;6A(nHiJJNKDp^|gd<1t z$R**5JdAnZ!f>nLqPB~{Z?s(#eC`L;+fnA zxHWKu-vs|dxVY`h{U8_aPPl5gCg>D}zYk7@-8p<2J~^z4uo#>dc|fvmgG&Ow6TTa+ z5{}?FJzokt!Eb~syM(b)xP@?pkK2AB;6}iHd>Lgp+BOW6{H&xV^17ltc_GvUfEM_S6@-;XeE&!K=+hNNfe!^>b!+b1U@gU1>09*@q z0Imo)7n~ce5zc^n6D|tg7<8O_1?0jhcs>9>3bz_ICVUcZIB4fyY0=NUdv{l@EAINb za(CA?z%?Om`g7QBAMSuD>nth^3;&0dzYqA?Imr97;OU-r&net%iFKi-8;W9Bi;1)P z-o-4~WG=V|^L?yavik1D_|~W?`K`Mt@eLhoKOj(KN+GNf-B-*#IP1NI-#C!u$Txy+ zCdr{YIoyyBU&A^s=EN<^h}OGjn6)2K)^NGk>Gy4-dwJ=O-3PHA%MyjA>sDVZG7f8} z+>14=VP@W~wC^|E%uAFR`g3J+3oncRf9$;vd{ot$_Jr{b!Zi9(BbpER1@uL40OGQom z3hwwtR$=S3OehX+hI?uqi&H_N7l7W;{HM?#v{XBJ_}wk>(!YTOd4;zwD?St2AIC@W z$9r#T9GEXGer4va@O{fb-^wK7S~hIzyiN1<5$HuSu}Py9zZqW>FUT2wBR!|#XYYtx zcYRGZetlS_Ntg2b+iaND`rf}vnp=X4x^^PJTbRjAl61|+ck#D9N z7L#!Q>7!M%@ySYF9oJP`TZ|LDKqQ=*N#1rul)uTXLi z&r~&RTp$w4m6lUq7-qMUclyEVWL)y0(~$)ixZ9EPA~oo%c;&Vn5&E@^-NUZv+dxnA zld1J+y4tq`evhG3o_9)F-YsgFJuDK+TM+~}Ig6KPi- z@9>zs1JWlntQC5^Kg|XDTIvlv*_0V7q3PpI7CgiI27C*T;G42Zc)>^ZwgY$a`!3gy zm$>SjrB+iP?z--7F?1_@y7`@MOX1Sk7*(hGz)2iF++AyIp+1fr@)&%0_wX&12fwAe zacc`_vp#Pv!dsU&UPa$s{JNm0U6?6h(hCFXo82u3zOL(O<+=Y$e2C(c6dWBVY2fI0 z*Eaq>n+`v1#>Ue!Hrzb#nAn4Cfo`5VgC(?_ttE8%j*>THXjsUh>hfEnYrVOb^YgrjmNBp;HUS=GAQ1@4bz0wIqRyp~^D((SV$v5jE)S&a+3)<9h-0l4X4BHuk?;ykFmtGI_uLg>c||^^`0A%A>qjq#g5KMM;w}H}CLM z=Dm7~J6+y)T^SF&CqtN5UB-iiR&wB&50kgj%w1s_5722VqqE&@tmYoPPjYzv24cp1|w(?Fft+t}bQ{7k(}EW!JLSAxnJJ{anuz zw*Bry$xC{kvP1d%urUv+>one%y9KAQ=P`S6;i2T`!SlcE_;t^U?Ze&R1s=b3M__BE z`bR_iqMqCAKxRRw7vA0J>0K{&t;{{{nLT$Vt;~IHDDBy){6zAjqkVDDTy*Lebb6uW z5&diOboJ-4Qr^BI7+>X7*lV1ew%dH1ckM|RpM*|`xO~ex-oJIoGdIVI?_%Pa*uNZj zj5XI*>Ks(!a|9Yo`f02R1!epvcmFYwwsw#zaG2n;1fx!=bNm<54$<^HKZ@OUuSN0e9h~+&+yqTapyp*I==CB z%iiqnGx;~Lqwtt~jeL95 zBhlCRUES*Orc4A72(eS{{8}{F_)wY{Q8A7aiyE)@$2 zs*?8lTjtkSOWLaxM|gS_+R|Ptp|hLz+RN`(X&?AY{(^jaX|G?Dv{#=gqt@^y_|i5z zgpacJD(ETMd%0t3RLr?XtLoA^I-!JU(OFKe{R#NZiYLins1q@&(on`dnri zCu#4yfyk9f<)O8oSe|nZ-WQ5k-tRN=U)J$wvSyO> z+PD{Lf3KQ8d!IaaXFz}bCsw{9_YXu^t2v)t89GCKNr%H_&J#OCYl-WOJvLp_GJPLO zzUicAzl~3*H}Tc*hPHpl--&JmN!w78Cic#LTDAQ~-f}*n{*rkYpQ_z|W#(D&ttx&r zoO|9tkN1s^DFuA7#64W`Jrhtr?Os*H{i%x&*dp#!!8LTB*SJ6LexZo_bGO2IW0Uwk zUVO7hds+$YZjJxT?*FHV|I2>-`5t~N_=%o3Y|E)o_cFguDZDYZ+Ib_tOTCGYxHt2{ zv*(}ljm*@77xyFeHh$jT#?RZEA^a(KlD9q-c_TB;r0*(8m$adzwGN&)^IJK4afa1T zE4+c|H1MRj?rU+tlX1vm|J}mbKX>`$ZW&zkbju*3ZvhTEFAv_xUN-FXexK=|lYFNFRz{m`K-mmX!CK&TIAe zRW);-)J6Qi_;ryyrG2CMB@ehoe#>!ux<#I7^G%06UM5n;2jS%r!^v}^zgCw1i{cocS&)3M<^P&cw@dyP z+%f&Uv*qpQbG2PBU?=>1Xa?s%GYa31iEY+@MsJRx_cvwqw!S$yJ$yatddrwr=6(GQ z>x0bG!Gr%yXs3e*pU~@tm%5)a=KpzI& zM}D4vl~A`;vIonf%Oy{7OqJB#|5k}_nojEeZ9=L0V}#---Me2$ z_MZ5P%ls(joI4^UI8t}++40&?*ZoJaN_?_MEOVZ$zjNZJP3r!#SNC{--KR4rO5Hz0 zSeyI)5`45#_aAZg@p5d0@$K%t8(#apO8e=$(|+VNb^ktf_wq>Dew*(GSK3_i_-*dj zeH-tR^trs-Z&LPl>ikVYsq;gGQs;+@^Yjngu%R#Y7Cg>eyPxyZyLJ@Qb>025bn3o` zI!oPO8>H^n>pgd{@F_yS?p1@-eXps|G>0bzH~pAC!{^(9A0(@-pYksE&sUlz->_uCi~Czb|GP#T_WlyO@{Q^m z@nWu4?Qnhr{l!DS9U{&t4D;d~e*695^CV|A_=K4oYzY=5tRUQ?uD*cZ>Qm6cW&V+)-KPwMSm|PX|sEepLS=Dm&V->x=n?LM+^@VdOTcvfy95) z{C=76?Lm0haloU+#V_7FQNqL1>iB8P-yO(<*tUL3=KcJa@N3?G-m~<;gGtMN-1U9I zkj^;nPe0o0rF-jqkyBh!XXhHX%h~zjeSM+q;nVb;Wan@Pz)s+EkXP(7p~#(OkGh9_ z-z#cFeNI(#etnwWhwUZqRpNG=I5`89`@W*wV{Z3UHw;Z6bH*+Ky=u;|YGPvhK~J)W zsB!xEes>~^`&dg&%4$K9#oTyV&uL?PxUX=UzJDxteN9eqzosU}KVs(cuOSQjqn^|3 zFm#%FK5AoQz&!^wp#z>sNc+u+qu_<3<2K2hCf9IFEfx;6m^s<2^!_~_s z|BE`$6WuSFJot$B->6~3~j@U+;)ODdL!ztoC#X6a@ zM0ji`ZG6wuW5gF-2XKYGd54t_suem~lu98|Y-cN#wZ@wH92DR&VTX1kr6xMTA1O10hO@6vf@cV|tW0Q9+Uk@mLK zPSOIY%EB&#lN*3@g&Ry&s@;OaIqe>kCTF^P1c+Bj>g zoYhyVMt;-p$G%^T1vzIc{k}WIb#4pvCJc>A?U$-jH64!zA+ zBCyMoH?)8w<8X?fPC4S!MayC{Mz*W(vc5oLFtMRc?5^mIspRLrYmvc+#a>$C zL&^G#l?x|A{N7Tyi18R|mOHTp$3{n|v%~70rpx_UcWbfSkFj1D?WUMRHWel`Bn;jR z@HP}Cd@fZuJ9aW&<`hTSo4}c)&W?5HdFgCh?B-SgJLGFW_!)1Ea8}t)TmU-l%kAx} zfkO#xpT+pIJJ<4iEi`33ZSSa6Gbv|#N4PMDaCPBqJ@;+vuvL=Zf-_I^dDvY~8KMg! zbkopiFAPK9!=tl$d97*_I?BtxcDbzn_Tj$0?DLuBDO2*b?ss9Gke#gNdFc!Tr5#281 zL-MX)ZfDj5_w{;hPyf@t=f=XRDE=Vr(5B_KzNb~i|LE@-&UxMfv;qo+G2aiIF)gfE}YG}AQ~H$igwUO=sTc+N?Ub8n=x(9ki9W2 zW5aS{Y8z>7POPw1zzwL6b>~c(mh#@;EOkj3oZXt<+1+~#j+7;|SN&e{RLc0v$#?rA-pxuOa9yVG5~Z#k1LV?ba@Pp++1VPiYH4IZitT>8Gr7}--emo-o#;EjJ4e5J+JEBl4wy%^Ye93zy<;#1uyX3vHax-~v=D7L7Tz6mL zPS<4&?Jq2HKlAP_e6t<=&RpwuP7U;qhStEf(_ynVx;A!WFSsqUSPu#AHQB(QRw^6( z0Dj2)^-w_5A+4oSMM(=4t{oe|*GY`F_SQjOId!BBHEFUA!e67?IWy23*YvLKt_NT0 zWI<2vh!2|d2Gad?QlsGHuVk%OsS?Cn_%Q>AD^_cxxr22WOi# z=S+=zQ}>)A?oE9AZg3MOJ*j!QrF))94{+zXmAZ+4ivXb@?Xl z$ZQjQ`||F@g|miQnfKg;eBk>?fc)%)4YI=DUiq zY*}}^E8b_$v=_to>_N^cW*^fx!pq0fvruPvjZQ92hQ-a63 z8eIQ-D|-e1o1+So*!ReIx+|vqZ)e`DKU4?tvtx<$tgJ=7*HU)ap0&goIxDoEGUS`Y zZ{#+!La{BgawjKm#lQNjP}-#V?IC-Iv(mGiI&dzfedB~y`Wk(&X8n#T^ku5T>Hjqu{^KF+32tFsfe+huLAcuHUB zosfs#hT?0e}8C! z|Npgs*h|V?;ERqNJ<9){abxjbb1{mPHt|Biv#R+i4>n|p_1;6aqZW38)>xkZn^17g zQ_6>BUFzNK&Vecz0pEr)<5Pv#ykEJ&Qq6EPvb^1>8<+8)%z`*HeSbQ34E z#Zps;gT+|^%s?bvFsOggo)w=df`2kkg~SJ}F!p=$R8gnBeD!KUf%Y zCiBcOPm*v`$+HEx>f_jR@=W1r;%VkN!n5Bzu`$pyk4+fm5!=uvo@Sm_o*6tVcpRQ~ zo;1$}o?Yh25!PU*=|8o=Q+X!ywD7Fp>EzjE9+xl_g%3iD&@oRhp*%ZH=o0SdX{H^- zzH|mpibuvr*gU&wp9Jt0!r1vYckh~G~;G+{To%REiQNxbBda6<_^Q|O*Y z$MZyans}Odj$jvhgs>j1wYqU0%?`pC@$$6r%;V|gsRc*yC6s47`Q{O>7nob#|~B6}!=W zJX492NAM&)2d+F-*n)=4;}XAxr;BGdkJyRI?~DoifPLH;am_qpliJ49!LycU50A^U ziKmaJBlF_Onqk0qzc@0*nBEhlZRpbqSe2(G_}0ii;zGdlfO`$xIr5#6bBNm;_+U7J zvh&cRi8UqbEl*xKP3vyVX1#Pe&vx>pOrA{!*Ds@Mn^#7g)-hp?W7b@<7W3@KSo@i{=(|hntR7!4 z@?Nd$C~_Z5bRN3*E~1+^l;K_qbOy%I|=>JF~OzOjV1Xh43CTdKSA} z(W4!%j`-ypUBQJq{Z8~I=iNR(WUrq;Wsf#D>*nv}&}@L_aO- zIok6jG0rf~xjf`t6bK2fw8iamE<`ADPtKfpM)91^bEezCJAz#( z{W7UL?dx{Hr)A@pTF#m|Gj6D@R9zb9%I<6thx4oW#cmU24^3R@`dC#w}6W_>3W?q-IS}RqJ=!qmE z`re@i&K=@XkH{Q!7YPq>j)APPU0rVr?o3U)|DBO>jvaA)8tFmO*OTt3>&FQ0hBDlv z`RlQ-#h;?#OY+F?X0caRoIhIZNxPDqJ6CcX z4Yjc!r%q96r_4-uJ@FMu?jc}KYm@Ux16Lv+W?l~yQa5=g(J$Z}(@N6bnaU>7HwYaP zS?Z9^68vsOixFa5H_9K-Wk3tH%!hAN(~$yo!Fg)^;u$ z9n#}Xr;kwo0k0kET6B5vR}Oq~@3rS!3H)}qT$7qI^-LXirirV%E}-#+_Nd-#@fGl% zYyD}USKEdXS83+81paZwXR$N!^pG;|rp!?nGq0x9)noLSX&$9M&F>XGx9B;JG(DE~ zn0Hus_vhfKya&3>tFaNK%s&qF&N6eoRk#{nWF6w2@hs&1k@Ldw%u~EevX=AJI6Ozvw`L?g zPAKUueA8ZYOLfc*(xqG;U3WL`?vW=|d*)-ys2>kx;^3Kw+8MBTMl`9LgB;T6Ha;S zgY5~Ye$U$zN?w1jXAQC^oc1$sPgsigpX~`-X@eQx8@MN&Nt>1L38DF+_JnhwRlX+_ zS|4UlnEaNvCzSfJSJZQszbAA~uqWKk{%Qr^bM(^mo^Y-D@7WV>Gv%$IJb19nc{tIY zki2?Nc)YwHbWbQ{`g=m*!QT@~yg$FKDA^OPXD;;jglmD1w35QN-H*Ly-+E(j|2fQFH5)s@S@}eIR_9)==iUE%55ISp zr0>=`fwN=dxzlwI>x;_>NsnDl=-0E2y@k+`wbepkp^<}zm}p_`X{5 zTWpZw?Sy5CZfAh?75mX{(SdOeEp^)uEps~#-S4hA^dRe{JKfY*zocz$C(9n}z(ePY zKadFPqlmgIdWu>UwerZ0^Y?&zAI}4>ocpXcdG?TJ$bdW#VZXjAU!DJQe(^PH*f0K_ zTdlsFKLvZ}>eh96N5}m=_tCG(I}^u+B5LW_2zJ~$PekIz5VvgXDSn*o;hm!H?~jXn zc&Dfb#|kfN4KFj;cUArm^RnLXqTuDE|6yJNx$_i$V(9ya==+CVxnHfGJy>=A$=9va z87h$4_zj*8E47L~dNN-cw_5gSsWmRR`Rd5#eEQ29L)DfS`uNpx6L0(RYh3P;Q{AkqC2(G;XdjN4|cvAu|xIKAH{ddQ?~dE`XOyl-TKVy7JeH(S%jb2 zZe?hL%rmUFhrbidJoB8Dd1m`%>;nUtjT!Ls<>?Y{r5?u~_L+RZ+3JMFPej*N>|eK1 z?lU1Pv(BwfO1?4b%Ti8K${f6$ujz6&XFU9Yd;~I5U&?{j;N?8(Zkn|*yJf-VtlV|) ztl1c9V&>Fm)zjHG`yF1(Y*5Yi0 z_Hqv1ZQ6d(fVTI)^()Mo?xeIoI4X89!Xa%TBe6EELr|I9L+Ta13o;*j&~ z@y{p!sn_e%IJO$HPdxxV`PRQ@=*4>$#VXW-tb{V(Y&&!}FndnE`}M>Hx!2GeJ6?L- zp@6!O^Huipg#dR+3XbH96R&*+aUU`FNxm{7f45U9{84`!T^Yf1UR@ko$bPmC+a|yM zQ}mv_QXP25J5z6w-_YCsE${ra>sz;GvtRYjPvv~C^h{LpmY$!snDbL;>ACtixcdCm z;5Pew$oZ+9HOl=lSW=;9^a&KEKV|Py7ujdz>YbfGtIzFJm)N!V>~vnO4{ZUiG4Lkf zQ3kehqg};sxr6Rj)(*Yuk}*f~4Scs6oOHe+caN+i^7St9+-K#*?|Q2tCu#alvYd?^ zq!8E7|ny2=iVRenhy|nwfBJQQ|-6&`N4XZhW9?Bh2>G1emn%`;er5a7x zMf?cjEsL{8_(rC!#5d4PHDO%9x=j0@geUQ3$$9Don>b`tl`eW$9TInhILWh_aXG`} znE_qNGnMqI#XKkJJQ4@49wWkYr9O|H(0x+zTzG;jZ6G}VvBvudb(mN@TgzQ{4ZcOW zXO?`U)wSamv#xAso#meo@8>*E&g~YEZuQ6+9zLOT8KvjLBV6K=N9{0Yza!iuI!~qg zhhy-n-J|iUti{*z{|G(qE|PHfq1oN~9Gbqg@)O-i7ZR!khWHABRDUP^l&c8dGU3m%XzWT z5}nj`Xo$Y5j2jEzqMXAqZuq{mT%*U0Keq7oquV&j7_m8PjtRbuUCt2i6Pm5H`dnCG z=yg9(JogpdRgacUnL+qZPrW7=_0Fqx9b>>1a<)x<>qwJvwErFNJkrV|Kj38W6o|Uqc;FQY1&$}kO?>g?f<{rAReNBpTl9#qzmJQlhWdrsVtd#@mQ7I!HDE!TF=t$qWT81!@ zvuDomkHd@5mNKE`)#n6!%U(AUGv$MZrtW`ePo8?6_IYY0 zXS(y{%sj&RH)s0t-EWY2BVMWgMD_@gK;g55P3rn_A~$G~{zQk)vgf$H@;z~qF1~{_ zzs*Lr&nSe|y#(K~Ul=ApABhZpxWUd?*nYKf8mp=^w0t33BN4-|IEcNp_XH`hexSj^V^qW_`ZRB zIfn3ltQ=zkI<%A-4D_C5_Wf32!T>o&AN3bG#z8&j_RBF|{l4WuX!4o+~AN1RRXA+7WL&lfLG2k)T z%6GX9o<)u!=_1FFbdh7U5*F7#miz_yPqfnXk3anL0bAh1$}l8f7X7|`qT}cA&ms!+ zLnbayvCumemp&Qn5#33zzf9O9Ogr9Tds1M!^wLWS%tKtMjHKr0FOKY^(`$FUIPyph z(z+2kkEn%dv5Uw^Vx-GiyvRtR1{N6!3o#upGLq2-78yycfkiG-V_=bsXju$&L@rWg z;zceJHt~SKtl< zi(I7Lz#{)}3@mb*BygBVWG!<{yvS*$7+B;qEe003%VYy9;AR8w2W~QOX?yx@7$mK< zZA;s~G;b-*(th`OV|ZveP~MbP%1>$gl-Ad86UpnhmGD#A4#&uWS|9D#4QwgZ4HQ|9 z=SMJ+L-#FTsfxOReEXZfcYHa}1S!(K#^hia-i1AmD+c1Q8!R|e%@_m8W#R^}7utmMq)efBOZ zGnMg`9q{1b+oZlaB59n*#7VQ4XDaRG9h~zx=abgZbARl3dGR@Z+`Kkt8RL3})l>F> z{0?Pv4%AUzu0y$D${nmsKTmmiex7mgfi9(9gU-`uD2v#yd-|0#-U{?iW}PQ(w$MMX z`S-Ax9t-zE$gR@qc_oS^4D(AYJ(PdMOvh3T6@Z9p&Llu#fHeMb1;vO zOjW6-`LsB1Ux<7UJY7HHbz4PEsO4W>w|hE~hCk7nSOI>QdQi*1cB%*M6l)hP{~|5I zx(VOog)QI&a}Vqgzbgt@)_rn@D0fN(%Hyq|+Dm+>JU$XsM~DyS0tY1&8rw~IBEy0Q zE&nRzAqWqX_1f(bbRr+t^%0%O2I9y&MtD75Ucs+WkFY1ZADzetv%}!sA>RjD8raz}-_waK zw(ad&{^hdA)$%VBKU$y99Q*y^J_v7|GA10x1bDh1iPyaCH#}E#IoO?=URW)4@h2N@>bXFu6=lC$ z&)H?h%FT~*23lX=BQzK1Jp=W#y2E zMTWDFT8bQP8Sv0%iLZkGK3R90whMGUpuef(853#7lK9b2v40AxrQPTZ>NXE`J&>x1 z%eQw4JfEQix57H5AYss2xuk~g9R7h~ML$~yyzjmzqkB-Ff#VAtzq+d&{0ZUHdzF@_ z$@t>C++oGkvI|la(6#tRCr~soLe1P_d13js+Dsb4_>$3YUSL#bsc(? z$WB_Rz{!`VOT75Vm9#+oQ74>yG=p!WXm#?@ymPboF2C2Uwk6*f zwNuKmrOd(0$?I~~WIX(Vd<0t8WGsAQOWNS&EO%3vdk(s1(59Da? zB=^TOF8*(9-y4}z{r3HrVp|VhZ}bFzFYSAtlzD>o9naZ`wBv_u-?g;w`m**#mXb@e zPVw6~@ZZ?R-(?Q<+gS7wJ$Udo{yg*H?_&&$yyrx1jNIpUYU4C*yrHa(|2xO+>3o~~ zHeJ9xd!jb|5^ICsN1Ogi$~nQf<(`P&sZBT0rdvwdRQtq6r__1%fsl;dAdkpZ{crmU z*2MvPxVllk(|peto4HfsgTyZ&K7emF?u*dhdF@{zBH#GGcf)d*(~kQ>&a38*Co^AY z+XDkn)$>fH$Y=DNJw<-Ae#rdn_N?qBI)64lyX|`mva&{)!kklS<~*6BByT8p53
gm2ASAfbM_+vBHq+;mT#<{^aZVTK%(`CWZ={Rd?JM90)P!ziLI&59 zOErMs$T~k^&do)J^<9lSvHN>PT;vLo%dn3Sx!WXrsC~J!DRy~o6Tdg%n<7d$rWYO} zN%u!)jW2Xg(z2LI-6t1iG00M|5fM6nrSV447FV+VpU%CB@434ccz!wLeu*gO+ny|J zZY)+1+VkA7K1;7uw`#fr*Su-gyj3P0*$;Icm@e`b(cMq0o9uvdqt^Z3B|Il@hX-s) zuus?kj+MNE^|N>8{zK>h50GWGbABC8-r(dG+<*+MDkQS4(UdE)t)a}Ro@{G+O!V}n zU$~R5VV{&kKZuQo@E|e(ktYRPZa^Mzof~M8dSBrlZT0H^MbgrgD{_N%nkM%@#w9JF z{+i$AbrZfb>bB%=^g*pWbxC92k(q}a;;xv;pc1Tmlkn1nk2+rl7GHmjS)(I1&+!EK>0lGvpwOaU3k+Cf@=sMnoxV#I_jasJT%W@hS^L32_v7ifJr@TwzT_Rnoq2+1T@dKy zUDotoH}5odU{Sm0$|ycZLUJ#RU)Cwim9;&SJXuL>lp48Jy)5aI8`b+9HtZV)b;rCB~=cqf!1)wQ;*+a_Rm+@BWM_g9Eb?72? zNL-c4|9DCMmB2GiekoJ(PXl+F$uHkR$uDs}9~@iqH&ABNHPo`~Fn0Hq-s9o?;olRr z!0$tTBQll2pM`Sm?tY-!EeOZs3=lilAk>gl~{+s0WWj!L(@nt=~Ccc-t zN`3o~SttXGd}qIbMZUx0S>w!s{yqbXd?9aOkw^Hl9+5%#vL2C5>^3+e-(k_G>40}JtO5QC77MaB+1OGl{I`g0z z<`KDx3@>Rzk?Bk|u*h_#7+7Q|Ee00(i!a|1xlFT(FKt7=-9&~`+McCtUYfU*X6YF4 zd1Dx8nU3FgrTmn(&t&*%H~f4knGQM|MVU#fceZ%4x29!%c?dgsnFFUYpWP(>7Tkn$ zGyWbcRnoWHWUV-}?MwyU+$zrdiP!UDg9+#K-QvxK&`1*}bYy**B+q)2r_%p%kqa2PLmZxV82Ju9 zD45R{?!>l%b&~L2Z`Mi9Hc!43mbH|WpZ3b{(COk+;g&kfdCzTM8|ZB{c~kxx>&v%h zt$(Ui{Pxy3=ofV0XMw!B3?Hw_$2axZt$$C4w%5)pXoJ++O10OgLz}Ip&A{W{x!IaF zX-W8QNSDzPIgs?3Ps>_Hdp=yLV*a`dT5F*NUXd1Qn%4d@S~E4Rn`l3;&cT#tubT8} zv94X;LH|Qb_rFXzpudHZfUzYE4+tTt5j-# z(_%k;8|M}`#X^qQ?}|@@+uV@8vvSB}Xz8(h99+&7inz_ianHFz3;S*KJo$8f5_@_d zzK}h^C3alz`zPQ>LH5s|z?a2Ddqm_irz+iy&HFig=El1-jBkThG>s%H%*`)%Yp-g}2`tYv)~{lHl-pcfdgRBhne}xR(nk?|PKNRA;GAmfeQpbRWS=XxJM5Xe zt;7&;JUz~ctTVq9WhKj=-uKCnsna(83GhX~vB{hV$)10q!0|KPQv3dSLN`;V_gw-@ zp0<)af*-UeJJE(Ka)Fi>&eN|5RkV7c*zecCpZ?Y~T#>QhCoc7Irg1)XrOk?0)v;%3 zQdf?XJ(0kb`0m6<12+4#523v8q$B&dkv*Q+>`!;M^~qjt$Yk4`g&YSL+01lzyNBB> zG^*lPXr0Ddb!9XFTt}N?2d?*TRqWqd&HdtmcoqBPN!n&#_b2Tx@B2ddV_$T>zb|Sx z`z`z}=)Rdso(eml7(eWx*?Sq->IxSmPW+Ne-|O~3z9@0%yy|ywSpI7CO0S@w0%|XG z!||(L(71^k^mwV2_F(L6CSMi#>=Ign7nXK1d^~Mes)j*u$Wx@{j80)c z>6~_YXo`$uQ*Zn^%$=;z@ssgaJ4!kHUfbjG?fZJzC*xe>S1A8G9yfI@)%Dv(UiqF{ z1<|+e-%B#p|F`^o*u8-DpV*^!2C^f&s6p?c7e{vC->OrbS@BoP!%uCCK7){tme#Xs zHL$Ghrx{pm&iyr;tjYZ~n+@!**Sr0cEI>gxn+J`2%|p9?%U!|EBr8HD*nC ze;sn*%;byD(rZHD!(S7&oVNyBhvBNYCX9IP;;jjnvDWhRho)2p^_o!f`fELF$nvap z&hY*W%v%#K)89u~6GF3p zO=xI&Yr=k7*1NRlu;Kk{LTJr|mbWJKXvvyTXcgClhL*P`TtxeMbq-qhVuwQi`)fjU zd*-0qBWpsbAMv`c{57H0eaSEI)`W(p=!~Vo-=-ecx-VVoVS58>C9V5H8hSHxITk2% z>Gj{2cSv7^Bu>Tvx-97DFmIH_ql?8lac-zQ9(jF4pS=YRN+>isO?jff0uNgErId#t zJhXz#ok+}0kLmh|?#pE2$U8=OJzieHuaLWx@(-c=@^E$-ysswTkP=$H?u*b7euRgk ziFH}A175*e$G@j|g<51UQg>$~*rTn-Hg34Fty>FRX<+BqcYAB+V%sjzx-WUo)3xr4 ziI3~G+Oh93>pne}X9HJ;XeF|_tz16`e8kWb_nbc&wI?vmePubnIT zozr?LcWFHo@U(sl>7IUzp*Ih`K%paT(FQCuc0oh(zE(oZv-R#TTWq~wDM^?6y5a4F zWr^<8DBeYj{*XJd79M&U`|qz~|NTwuzn??C@|e5gt#6^%I9yGYwcUYlpKmGO_WKEJ zzn_X)4)?@4&$w2Kd*oBxzn*+FlQMbG&B6A&G>_a#`Fy_Gc_F{}zzZQuVZ)kw0o!l6 z>+VJDNhNNhTb+I(@4P9t-%n%vZSrI!PHexwj-9uO>+I+(-F?yaOK|&krLrc_|C*aF=g} zhx5rhJ^^(nf&)Sbxb<2-lx8i53i&NrX{6|B)XB}2@ z4L0B&-l^&domSzT2!9=Y@ECH{pt^y%s=8(K>o^M5zP>zo^L8tZ?pAs;e!|cpOK*M- z8~^P;VV)19AEysC=gZS2-f|wL4>som$!DB!=9vuk_1sJS4EIuR4q0jZ3A9SSF-q(C zv`U$Sm!tK3(qiX7SUF$VjxYrFw(8>GtmqO0L#oqaqp{dWW4E#^M4{E*lIv=F% z5nrB_Q0CcP7q0~7ECd~xIC1FlI9`8w>9LE0>SEdNqJu2@I)Wql>WIHe?}M>qAS-K+-Pqvo!GD0* z&bR3Ewfm|2`(f&Uo(_Hl)B_oGpgCW=pYt(ko1v4TrPoiD#0`SW`C1XT+2=#_cI4h5 z-{xI(akg-#wv%(TGdM@vd-`R$EN2$A=#Dt2UKT=c#I7;$2H;T!wj$?X^FGP8I9Irx zIlq^)jidJEe19%?()Q)K`{X>xz6_n4N$53u@%i&E&q-)Y-PsirnhsVR) zq@vCHXl?T@hg8y~zqXpY2P5EBBtGd>>G0Ez=#p^G zHqZt>an%4D_|G$Ei;vRrMg5vdwDaZ1+Q4%%HA~}O*?nsf_e%Qc3S$HB`72E~UuA6I zuhus3+wo&M0zanu91gzZoacwonW?TG7f4)_(K6x0RYoR!HSdqML3aa*tBlR5m*;cT zb%x2KW!B`G$~t-~^u0XTnUY81z|~`>9iGo*UKZb|=p*PjtzSbMG}11At;g0!=!2i=t(?n;a-#J|Ta_*OxylXR=+mN6nb`I0W9e;;AxN4Uh5 z*uYDkO7)Fn@cM1w|5fN=123U_=&tVVit^}N(bI{v+>8zUOs%Woe6}r=f5%H}M^_}w z`TG8^+>HLuj1n98>FC6Ge4fRe3_L(@r~-YIipWgIN}q|$Np;i@!ymsV*Up zr#o~@O!Ph4X)Cz{NXF6tyZF@2dMx?l?*$|G@$BMf$6|s{9mFnvtI#xd@d87y`&ol8 z`Z01hXdU>-544U-TI-?o>!`#^bX4j{Tv=k7vG(F*i6b zMZKM5z^l&*_?CSrJVVnfV~ey$OB;PZ+ZKP^XE2v`(D!GVHIW_@)MxVAS)N@yK6e-B zJa@y-Y~~2@rNi8ktW@`s*J=qA{(`W{^J}Wlkge7Qd>p6IK_XWi{cs6yJW$ff{Gj{T~ z+2TKJ3An=|b9RW0^WOl^_YRg0_pt zj|O(}pO$ZzN&ge0v%BB;;E?ZjW8a8^gahBN5lZ5s#_#>G{B(2*uX9DO@DNGUrNJSJNi7j5ty$z$_Je4J3yTUg_@5*F8CoJ*JMap|Z({Byz<_^`5? z--q3OALjO@kFV$TyV&EW&d81oBcuq2vLicArRqlKi|bg5I$yp{me}Ik2scDdA~GUh zC+mNM{k_PY_QRL(CbsylfkjtqpMgbJD{o+t?d&zM=nd^Lu;>}>Hn8Xx`F8EV^1*1B;BS%fKSz+HPQxacwiO=xTKuSma%NFf`91@7iKuk#}t}u*kbM7+B;^ zX#@X0b+wYv4D|mFmbUr+5;@@qwZHfKPULcvO`DXqkI3cP zP5g(_)%uY3_cOld+25y-#gyO8GxIq1_jAZ2_V<#f-w(5AgPr^@w7;KMW`Eyi?C*t- zn9)sIcpUrts-8z|tJSl=pW5@txa!2C`NYkSVl#=2J!jyRoX>Ga=QN8AeT$@FPnjgG zbzP>ibzKK`n$8zVo6_@0?09*bPLLPbS@H|m-&6L0{0?Pf$JtR{u0y$D${nmsKTmmi zex5JDhi~UvZh!9>`+I4#6WQOl8~giGytu!P&Uo@wQ`=mpAx;a8}5J`+MKkem&*EgI&(UiR|ymtL^WPm-mC(-%FXk{k`zu+u!TGtr-*R(Wmq6 z@4270Xn()y1K8h-{ehN28d})Z>+x0YKO|aWf4`nF0iOOA5wF+H`^_Gu)c(G?$McWe zs~(P4w|KsfMPApd9vUm}p0AJPp>wd9J|>hV{UGV`u67w7e7r&t zZ(NA9xdnsQGzdSg;YZ$U|Nb2xuaqCsG(Up(g+cfc9Wdc%GV5#k=J+_JypX1ODg9QY z4?TpB#ftj<_>E@GUjM%FA8jXAb-vH<-b*vmoy2N>q0(&WoPNe)yVl@IftOZZzj?y(Rt-q%2kPTgp6Qe%ts* z5dQm0eoH+_H)VQ$62jvDFY$i3wP&f`6Sp2(7Hy#|gWi59IvH5_Y3W&pOzhq~=hhw0 zkR>cL@WYL-gUQFli?7?o`AwB$)OPlIEj>%eitpd*{5_J_vC-*BlfRexw9p@dn^zuf zXV^H2ACM=n?nhR)9GT(0A;~X!g}-XGIKPE5&SCDI?3bYimLa_R_wWe*zLIi?ACPa~ zAmvDY_(#^fih3@^r^ACu@iQJj@SuLTnrSof?a)Lhz8$6=T55bdcx{TGY;dW{W2ot zQjv|w)XU@hWk>gM21nka?8v9#%X+wPCyDQfdXXPh+xXOecw9*C;1Su7@8etKNagt= zj7O0Vi7cr{@R3jXvLv4$zl>ABMFywaK=O#Ma4AR2<>HhR*{pqvOF4t(ji7rV{=84@ z1AGmBEj+wZ8Yl7@9`1RHGw7hYj=8wHW$Wu!*BJFJ`oe>^ZnwISNp@|`T3yH_yS6@u zfA8)8N<9Ky`08%inlDe6cq@%g18ITOvrahoY{tqxi(ipv^Uim-hO91;NlLyk>f=&o ztCTr-ITy1g2y{JzOmeVtMAk_;qzzuqu`)T&uf>x&#+vbK@w<(!UG)3EOC1!Z1{bkIdGQQm7 zj4ymHA2Yth5Az58cI~H(uL(ZmOPyeR{mPspmX0st{#T5zQ<)3>@im|M*MkQiU&!Zv zFXQXqq?{9suLHWA4?n(o8DD*6<7@HnI2RtFuh&RhF`le-o*qT{_v-u1)8*eQ;y&j^aVZV ze)#cJ_2(P2k-zTOPwDsN@?=Q9S*$w-_;Oiqe7QU$>oRQDe`MA!5-+}7b`USRA>TLg z|F^zeuoFkVTB+_ZHdokv>-BrhYo0Hc+Slf1M}Ob*&sqZ<~my6)aKJlA9x9N5kU6nX}Q;*!I0l8|U@#V6bGnZe3 zE4F3bX8&$!+p_VIOpN6SFHoE8XqjDFjoiE#O_nge%s>i0rBNB8C=o35nnFb z@a3|N-`nuzBKiRLYkwh7vRBzZfKa3+Y?%rINu8@_7DSI>8aYDxS}k zfI5pg6?n{A;@5L8!6u&7+MmmfPW|#5(dTFliT*?=(&|{w$!-WgFIIAt*3)Q!7qNZ& zYiNj`hU63bMd`2A^iipg7vW3$d1oFwo{yJjpp!8^Uf$O<`+dCph~MQtUZgJKG$y>{#~jQ zPQJROJ&!+`ShaIszJu_4)U(=oApeRfZwhhZ`(+CGEAa195t-psr*6-$?zpi%ho6{g zXMVoh_!kjh{-0ouv_4&>eZe$IndrL6yCFVc>UozMj4zl*;%1w1+r$`_`$yvF!ZheS z+(U!xeY()H!`dcMVDSZWQ*o@{gueQXp1&D8tbM^OH8{)4aGG`bo}SG%bZP2Ke8Du7 z=-D)qChws5g7M$O81Ibs2Sb~ujX#)!)HiMH2~+U-5o6;V#r9C_4WrO#;5#GVlxV{! z^|!o30?V20re}D`(2(eqLDqT{_yv^wZQM9OCbLH#gD(Q4yWa0*2{K)veX~d6A%*3yNzOM%% zK16&y2=OE1>p_Sg8Q(XJ_>u8_(}*9Lh@m5XWPIN=qMHyl@uHg$GO*|-@ak#30Fjd) zq0K}lFZu|523`$LuYps*%D^IT_w^vw67QP$vBd8)@EG8{fkl_Wm!*p?gRci6x(vPy zUvwFKxxMHz_<9hc%dpeX5nYC?fkl_0%fO<);Ojw%eBRfC5dDP>21jgV(*_n<{dxn- z{Q+wYEb{!-1{QnTl!3Ff^9loR2ktPi+$*pUILsq@4Q(b~^cq?XEOx)s3@myCQw=OS z2vZEaAGpQ9e%t!G41FfPw2w;hOX-x38J{1zSo@vv`?{2e(zYtCyWc*N*KarBr?gFu zu`$kU?YA*bduRI7^twZQ@q2c;340}WN5fU|E&*gLUA1Q^@aE#<;uu|qY@gWl%3T7> z%v}Q5^O9#Lc|?~%^7QL6cxCL0d1Vyu60kg8tjN9ncEu(x`Ytv>Jx|~V2fJeDabs7E zo?#DVCLc9+#gD*)XM3ER`na(xez*?Zg3Ruj-dzI1hp)@9XX@kV0}oe6;7`^#$gK2Q zWT9S@JcQicv*Fm=5bT}88bR_F@07l9P1d?*xZ<~GubEht$v2;+$U6Y9c&D_f$4*UK zY?i$?*hd?<4Z~H=r$d|Vr_I1a4*!s*O&Yq-C3i|2THF;4zx}kVb7{|uhO5!OEikkc zw7@IUB2CjO-YIQpP1CgQr~SM-2l3TyCFp;j7WWnO#^`@&NjsF^DUIH!qTf8bVnb8x zl2_}s$`fOnSW7HaPv|?PTad8_NULQ{f*xa`6P%#^_zvldK47mef@&9Vpgg`MsP+*b zDvw9^Bm}*%9Xu$Z&`6r{nka7`a5)b_c#t~+0_yA76+f-}UhIk!#F1CuDSf=Wf?uJ& z&YtQq?24br4ukg&@(n4WCA!{Hrhlij@NhJ_G3(s(cu3;$J*dlU;{0Y2_l!okgJKGD z|KZsFIAfP%ck`gly%idEPF?QV6&Le7W(ShUb15^Z9`3F(d-^8qxq`%p^j`mw?r?Fh z|A=d0TW7Vba$CU}g)UBC+oQP}+p`S|C%n)(b){$1WXiGMozUp>89@)6mAoN)UB+q^o1usCmm~ZPoeVAA z2FJlol;Ae|e8~Aw8s9AJS30fu>FhUscs#nY6IlympM$R$D?W-nmgv8Fb}iwSDUS1n z&tnI91wL0;_rm)&8CxxWVd4QLK4tKGqy4`KyhU9-b}c&7>$yvA{LR;d ztOUMwFT5h;Obmo1UFd$iuvFJe?y%!y%ySaY$9c|i6TB-Mz!N_;n~LWm!tZ%*Kz#}v z@1D4w8t3ZnT}2%B?}<;l32bG=u37FYM5n=&b1iLsA?GvK+e5jNaO%u6b5^9CbEf;< zd)`@^3}K`7q}gkIUWXrHZ@Y~9BH=UA;dYp_hbDc7(EmOh6wQf0VOc8Icx z*L9RU@*96laVv6CdGbjwc93bo?GjtsjsEldG|O^p)bO1H)O)(vs&+Q zu|bRN*6Byx#$K}$pD*lMu~5{iAwhGP13bm$?Kax+yyDp7j%m{8c3)mhmp!pJ_HNW^cXr=gOuN&yax(VrvWId9$W(VhE@&^r zMsfjnJ9uG*CAnVoMUq*5F?%OL@4u|qjm4;b9*>8 z6U*Eh?uWPRp_5NCt2LlRkKyFr>(9pzl*?V9scAFM)NyB;xY4r$8ehiY zsNU=A1kd`*Krip2{!V<$@XlS8(GA?8=-hI8C{j|^Tj24X(e@09nWNON_`RZMsa_Y5 zrr(P_@(x2^c=y)~QQpP!GEZmTl)2j~T<@*bjE~%Qz60XNqla|93FG*dYo8)N;dhw1 zMZV#6%uzvXOXK)xk$XP$Sr>Bw_jWT*mUZ8**AJ|rbbs9|_Fk7+W7qeQJn_7d-g4ar1JN+YeUok@4Ua8Ne62!w}($;6&%VLqp@{FX% z38RE9%t1DxKTo90-RkHp%pI28xI^?{&H;|8r^W?Rn{{6FTC_j2(clu7m2Z>W-9DOd zg~@++N&cIGqb9$UDfw%`t=0KAvYrfLhaueu+s$fNF|!Xy7Ld*1>dMU~}! ztGkkP2P6#yXpl$|8VtxdK~bZFyOj_iAXyuQg31_SRAn7I&tEakmxD zz;n7fmC_aSGnV@QqyPTYJ&&u|xe!3L6AX z`wEu)>H!@P?qd<&l3$m_$gdD+RTVVJqeBEuvN$?0 zbKoJ_cc5@5S==RPlEvE#n&e;#E8~f+2P>{6H*0N#kL5X*AB#^*ZYKUMx!L0LYjShL zffl(rWPaDC+)T1B>|S}l(p435p*Kcu#(3$5O)HX{%Sdh#bLK$t?g{LkDL1bca`RK% z4wiyABsWu>7P;BX!!y#%BPus5VvNaL)gm_wH_sQqQ=Q*2kOd((*S;v^<{hTo9M~r0 z<}KjCw7HQn??oXuKQ|C^c5vV_Q*I_cEV(&z9=C_lA~*ZY{7t#}S;)4g3_iHPl$$AT zRBj$u6J~Q_u8$+pL2jr~|biMs7wu=c3L`x%t_s+>A7{ z)`@u%XY=@2Y|70oX|WNg&+##GGt$aKTBh7=rbTiyr4^N%MOvoZ{1ocXEVIqa@0)6o zo3Sr2dZZ~gQ~BcM<}#9-Ggp~%vq+QnT}W;Y8avXlPJvCV9b9fE8&?wixZLa&ayi??-AwTe-#PeVS52oC_4|4M>yiP5-8F9JX ze6_d~-frxJjPN|<<{jZA@NUY@EoqUAKzUknGx5+I*cB%GDdcXoqlWpg0&^qXkrjZ= zu4M0e$aibym7tx1)^1;G%FWTbUB&Hj9VeVL?Nij(?MI z=jCn^_y&%J7ipb`n#A*Mu%rV-xB&uNOIX&c zV@cQQV}V(kFtP<>!ts`w+ZwZu4d>^tEKiWmmP0rwbb{zFqkJVp!YzB5dNUjZG7_c5KE< zF5f=i7>LTZ&qKzk(F+S+4Esjz3cHYww(UiJFB%*4VuRCf{`S!r2i%|Y;!ChO{gqDT zviOt19}C(H$jn%K?`S+H(v}R2hqW~bYnH=~{ZZg+HDF+2LwL6*CA2%Dy}C`cUS0?|t1$)EgBM*dK@YmknE6TMOWOKml@6;ITV(RLmD#<1@U-N4A__Z=zxr} zRmJv#bXgF*MW!}ITW-ThpKHnZ7SQL2;#%$&jFdjR23Wu zSC2dtcEMl!_<$(e0hG=Bz4FroylmH9d}APsSY%?v7AG`(u@in5tuV5^VEbHv4C29@nlL^h5D?X14q z#?yWlWjhi<{IHhzhD>1s1&6}xMjpZaTJ@Ut`5{rZLnzx3{(Hk^(9v(LrF?%Z-xj~% zA-GY^Sx;=9j(EArnSm;cT?&HSA)?fYGoKZyMI#O1$V13?moCfaV zD?M#YPH)D23H=GvuOTh?(Qn!xKC`T-foVTP8OI^sWSy`$dtl3{U0|xl0vY6Ar3)VH^p0@6?(+P?bXguyjX{O z5mu^w1ZyhT)2W?NO>T(C`K5fv@O|os8^=ZWsUHU4BX!)pg)rA+&wMrX4=A52fV-RL zD`bb5Y;|G&i^>&bpQ~AMU@n;todVYWI1jzjXa^a98UKc`xbLBn87X=LWR(+eKTmmO zX6iv>g+Fq6HRhV%!_S@x8@EV*0q%w%Th=pmIWn)>wB2%@Za3zIPasTlkZid~#y|1> z?N}b>Bc1DT4_$lAg|GPe{EXS;c7!{7d37V@MQz0*rO$#@LE^|<)3v#Us`2RajQF2;|i6S-96=&;m)KAYlGxqw9_EI*U7fkj=UGj7rCXc9aj8U8yw79eF#~aUx(=Cac9Fkjn~TzA#@)J2 z)wFevg$_Y!{$*MbWXP8#TEWA`Yq*CcFAsZuw;FoJ7{1`)*k997x6KM{M#8n!kBp0 zn3YcU#zuke*fi^A+)t$2gO3C@>`&uvX~IoDAo1{&wsrpz+buQGxJquY&Be!zD&t{K z6KsTO&v%#aj>+pqgga+E%=JEVw|6n0#{o zLDy6#HNAtlwD-g=JPcm2=OOeyXULvjrp?$5c^G5y0LBr>3yDqKc%-;n}U5Y zrq*Q;b_Y5W*fM)6!w0uBNWTPhA>ImfArtV%S@$4#^p8bbm4Ihg=Gq|nXW~u%UaUQ! zw~4M(u$7BH+S#RlZA`|02`mwmjoFz4R3b}aw7blh51Yzo@oY-OesnT-`v3NyKULR4 z@hpsJ{M)B|{mwzJtHsS5uKSS%O}ZZogGaibEAXc4dfmnsh>21x-4kT0xUeXp^8xC$vG(q+eMl zXwnH)3z~F7Re~m6izaBoaFz?2^f7Y)*H#UPwGs6;?B{!7HwtrtQ(apP9<(83yF($rRWf8mtkYKoft#zwe5U;a{8ZS$zFOR@ zYs4j+Qg^|g2=ZiR=LagdTbGNT@~0@`-ASk zEH#bBT8-+g+*+$$TpVUyk`4UkYe@;~nKI`M2I95~7quxR+RwBp^*GWt+kP(EzWg$9 zSXMgdD;oNWX;aF?nZOTchGJ|=iL_uV3VpUEE%pie(HBkwcB4$5kX9AaGHptkX~B=D z6}2fP(t#k0{fX^vR4D!QD$0@GpavL<9a8mhj^P(wWLRDm}BbEM4EKAXC>CK z5#y=!omiLXSbLCtrTqr^GrQjv~K5cJ=!J6fLxCz++iz<_X$e|wZ<=xWm5`$VkP-I&3#W*k2j5cn~2Zx0@tXuT=;lpB5$uzP6?>%sRt z$aW6xePG?ZaG+Q>W6Tom>okCy!#y@HL3S|r%uT&hO~lkIZH&miUD#8x87kkm+0h8B zC65c86=btjy4~M~er^uwr?yoiZZ+wopj!%)4y&~;YQ1dtk`As;!y9*JlHO^(zV4Y_ z;SJEww9-3C&^2Y6dM96S7vG1byL#xJy=50)x!KY^nK~unopejY`|dCc;alMQS1&a( zvG)Ug6m(F;dmFm7IlE;kM7*2&Cg_gBq@QZ7XId}I-rYifM*Qyv|D;=5uWx#0ceoaM zm{{GCq(Gl^82Y75Q@^zJ=erxwCVuw2B7T&)sPKV64MeCFHtI{y$Rep;;O?N#(-`WU_=Xctt528

@qOC* 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

QdHlX-9>edS%(SQY$FST#{2_|RKOCyX z2>fF)_4FS{!2Y2B*x))SqNr9s(;v>OwGq{-AjMyLAOgb`t?e+oI=1S^fn%?N!o0lj)WpZ$n>G&4$G(Imn= zIK~d1yw^9oMC{$OG-!0BRCyA_O0meEWv4c@dsO3pwx`s2*1_``XU}p5a~!X1c9m9J zIzL)Pr90k~9`(g{o81D+h|%B|Dz($&gl+pAyA5R+P{ue?SHnuxwIDpaBprU2oeYK85j$ZF9)zh%rAKJQ;e=w==~wJC$mr zYT)uzQcZTlJVt)n^rZ8ETE3oIKbWKWq0`OGV|sHcr|o;hj4&ZfD{Zcerxo~c<0eNR zCd4imSNEx{(Tl*J>e8*baDA~O?YR3#ZGi~F#nV}kOc!Uu&zlatSL#!@L@SW3?g>D{ z#>!_v3JIxOY_=@ji+cgo4o6T;8v42+WoS^|uG|H=t?<9LgPt9~g2@Ig{@+1m>VR~H z6wxRPcG=#ehP}&340@ZGr+~VG)BtgW#^H=hb$O`vP_>A;N4)J_d47-jPY0>y35~DC zsON}~>culy4T?xS7E{(<<+3^Vsc+{|9ad=1$yJMZShK5HoPe7GpY5(&LUYqL&|6VH z%zU*J?`W2432n!hzcqp)oY5c+OXBku@4T*gq$_&uUd$QE^w{aW|MrZMhFD9d=ydbG zXib1Ur7o1wEIH(bjv879_(Z=IE5W4<(-e`oDZVvJ2h{i1Gm;rt27cot{}@A9YeMzK z5raEfEV@ixc1putTkDI#s%Mzct7ZY4_15rSlp*~#OFf;qZI3p2a@td&PC-Qsl% znLL3MAG8vxA{pGuErQI@OT6~LkzWU7SRZe8P+tdf4kNca>vCJ&TtlqPY7(i=quPOT za*z6#y4na{Ngu&oOY98P?hn&9Kje83cXu(b+@$&t#VG1~a81-)>#pSLe+MSaif_3@}LHcEuPTJ@slG}#U9wmK19zu+CrB{q08YN(~UxVK&C z)$IboUt85yrQ;$zsN?iytAn||hrHAudz&rj6P0=l1jgblAPb?nNW@$i^PTX=Naq6n zL44OYaFY?3i`I>K@S*$3Mt0JSx0a1Ik$$--Pn^bi59ajl3Ej$F+3*M6btW4LdpeS`V)Q$L?O zYWe&V{F*<{{)P2z%jeDbHQ!>!X8A$)nasC*`{rl}iRN3TvG0W9_W$$uLUA!;vyKMg z-r6^3n8IzmW`{QZ#%pOd`fHcin=?9xi~iq?{dY5F2TgdCTg2}hEzJ*M_b#5Sg08SE z8K)>+uiYTTEB(LG`=3USeJnxS`vOb4USJ3xF|O^(+`F4v`871ri9z>D$l6AXAquP(_VfS5w8OFY8-TZfyy;Va6t+E& z-q-3;cfCFX`CcP0(-BRko+jGR-jZZkATfDG#!kJh_Nf2<_5)Vx0kz|8O7WSrR>T4x zF|WT}Y^`!JN`_W$h9q73EwlrF#lSd}PuAAP(mF;EGpfg|gT&>4`in2mgN&iPsRQa$ zO$XEuz6?TfvZ7{+!7^w#O`K&Na(V2Y%Xd|*yXP58S2Bm4+2?%4ZRj-@_o#2}A=s}v zlNG6GKs0mS8vORC|FP$F_rW}qydQV_Qi<$V@~cwo(tHJb7t86j^OPmsOO=eOj2`uo zsvV&b_~Kt_ov>3K2-Y2kx<57!i9V@BpW!lK$MiUqyiM_d*K%pW&rk{|hB1AHD24K+=`iNA5M#OgdC;zdy~GV39HmXEB6VGBE2Un8r0mz|))1|r zI~}fTqZj+=B}Z@!Z7%QE>DyY^qN{4rY1^P5R@aVy1O~lC>uL|`w1Vl_irZYas>V>2 z!A#Zd_uW_5La4^IL~RT2o(g)il`dNkzXWV!Vzp8zlcn%-O&1~0 z($wP&yj>tyH-Wbcyjxgk{F1>K(L{f7-ydm1I8eei0`;tzC_R)=Ahn7q64flI0zG8V z2(Wn#@tLd59JrxARjfBjCVf3wVJS2#IFG%*gG#|1d4Vn8hw7v6D_ z&=4TwGGSNWaZ(|mj-%rOZnGJ{M3~V5*TGT9_q){#0rRr>|3A<7`8+QVsjj-qx#yg^ z_trhTINq2A%V+{>DW6QsOoqfKJ~#o z3kj~!FxC;eC}h#t^g?3=Z|2i8cz$d~*AWuSTPf_^x)%{gy6g1$-miKY38%`;iI!mK z7tDq@P0v6Kj5?jfLeD_VQ5JEJ!OW;Lz#s991$+v&=x-9w#DOOabibiA6@#|)=Yv{h(EXU{oaO31``CyK zZA?C7ar<$W6(^yyV7^Mrh2BpZ?;^4&fOqBVu^SE!y!7xQ7c0u*C_WP2QD%EMyZB+s zoujpnMlr~1P^LX(x<~9dmLqm_=5X-XJ?d-Nh(ygD9wua-S&))EVE{ORyYb1RHd#WX zp;p{a&APS5GDaF`jgmqU6T~ei1RfSVbKgmvwdKy%VH8H2>AW}Iz)2av1X^HRAB|RG zY}51)2%vAgRI40XC&8nj-7_xfio0xeY0}ElOYy!7%9bMZh0VQ7>6S8S1aRYW6wv7Xby0H*h`$r>L^|oP2kC#^`vn+dCV{_A_tm=XmyL-B$))E zdnX|zEsB>03oTNxAtWM37?szcjCqa~N5ewRq~3;+w

Sao7G)=#zs~Gv?O@4q2Gs>^b@5Z>!XlYG4I+7T&7fN|IK3ttX0m)_ zy1*TZ#<3cEK4IFxmesGo*=2lg3oy8G^Gb$-fYj&X)>>i_j>4dFxnN&kf{_fOk%C)teC zH)*K#LN%+^N}C*lmISII=HhZZ-*c8~xj?^E zqfGr*jzFNZ36y9~-oM=Xv07!*FIHNm546%BWI`vS#t=o!NRvXO7++u-(NN zziGS_;^wa#wT`-lB(BlcX6T; zza^GyCV_?PqSlR_vBSlS8EV!PmrEz+3ZMWwtVf0`3AEMWS^i=&b^>)Sv#isorm?!p z;^_QTkNrMg4v-jmxvFzvtt08=CD7%4<20_}kVDUGADe2xEGsOjFJ)nM$H5D$ozOQw zExbl~_H)WRx`R>B`%WGc@Mw%<9b4|gs`jxshnlY6jy3LV;ZbPW{ME-WQYl}8KX=!d z+8bN6n8lN}3Stfr)%3vU!LjGS zuN*4M4w1+H0iL+~jS=lmolA!*U%M^AXWV!<%;MRoZic(Q^cru4(X$w@#lgGJyj1s~92#NfAQ1 zI9Xt%nZlP+h(xUrtWu5gA+)sAj%Mvw=QJ;fBEI7SzFQoQu%{uSvHSc!&Jbfy6JOks zVR7>e8=-BT0Ig3bOTQv_sIq;z9lM$>U2PYz$}p);%y?rXZ^bwkp(~n7%A@J|_j0?_ zE8fXSa`%l`)JUPPEdq$MAo1Ix{Oh8)tow(zhF`de^=qe6!$e%!0!!>6)6( zf+@OTR>IdR|JdQQ8$|`H^T?eQ_ASxL5#p#Cds@_-2nYIRZ`1Mb6(g*Vp|dL&BStZ( z@yDa|oVT`@+h+~67)vs`gj$6u&*oV?QEm2j@PexA*?0%Zj>RZ7I74#To+I-~Hr-uj zdfvbtU7L`e=?kb=y-+(N6%zO@kaqUSs6*SKdcg0(!$pol5o4go37M|J5PdL29}K)T zH;l!IPTWFai1fsCBuD*n3=&OZoOtV=I;TFc*mQf>${32T(?v_@Tz)KtKhip@3I&8&7C5wwI-KDTnwrMsD-c&o(X&PuO zbqh4_7-JJhCyt8OR<|F8M{4WCS|#zfbSwn%*jvYY{;F*O;?PmKWPgl$aBC>eU+Uppn}{^$-qV(`krs(Xg#plKa&Rs!GHHp0+- zc%1?3J0=Vk5d*DNO7&eV*4Q{T81BvgMo;A+S$UJ8-^OLw)$eU8{vm=RBZbC$oODfI zU?1&~hPGJp4CV-e^@CZZYqNn^zsvT6&m0#A!7De3GgzBO~bAm-bY>x z7bKn2aG1(?X;FEgZMe1E&U&Ekuy9e`?NfQ86M$Xi#>vRv4J> zN}P@y9bp?=iO9B)kI>rSXQ_M?8qF^ew9!9s9E~0r!CmqF*K8bC8g7r^aU!c$nRGyc z^f>Pgs!{(=Eg#8CEOsHH3}fLBh1!}>E&6xi`S#41c?P?`P7dnyN?6H<3vvE{?iZYF zUyJemEmk=;t1Uv*)}$K|Ls^E*LAgTLw{W?1$#XpR8j3u74TX@oB{COMu^ICN1D}d? zeHgJamaJ?N=BRD}*=+YkU zErWC6WtwEBNpUO7sRRd05Ud+vo~ChyzL|ld&N-m7(w-KPrqNM{FE{NC<=CO|S64vZ zjzY9s%w2yhN1rQ@sRt1ZbWJiN$_(65*^HhiaZ6{v@JMI39g)fCp2Bo zc_fXH({Wn}x!EJ1y#NV}N*3cFWl_0f)MfHnE6s(x5rbUYMnWQKDadCxK{7K#QpeS7 zL0a5?qRDVnUNHmmOEvH>hdbA7cbm9!|e8e8?>HnK70`@P|RK11iwjhQ!E%*6u88Cjc z$~`BCV?L)I0RFhX+)?vPZ*L}6d+;|Z3uoE3JBbVHA}4&@rtL{2S!!DHS_@qb3b<

271ug9qu-wg7J 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

@@4_s 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�= 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®2uSF~KOB&riK^jh6MPiNt>>H%vE7 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

6Wb&wY%g;7L@VgPx%J66v{5U^bikV5A&Nzt$*9 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