Commit Graph

178 Commits

Author SHA1 Message Date
2cc9c6942e Fixed call to __builtin_clz()
ilog2() erroneously called __builtin_clzl() instead of __builtin_clz()
2022-08-23 08:46:34 -05:00
b8cec93721 Put 'math.c' into Makefile.am 2022-08-23 08:42:59 -05:00
21509be9bc Added 'math.c' for optimized math and bit operations 2022-08-23 08:41:53 -05:00
c36f65ce97 Various renaming and refactoring 2022-08-19 22:34:45 -05:00
0337fca749 Moved syscall IDs to separate header 2022-08-19 06:06:48 -05:00
164fb9fcae Added simple IPC syscalls 2022-08-19 03:56:53 -05:00
0ae4f7995d Added basic IPC syscalls 2022-08-17 02:47:41 -05:00
bfb56fcbb3 Added functions to portably manipulate process context 2022-08-17 01:41:59 -05:00
bbf2325a60 Added constructor to queue 2022-08-17 01:41:19 -05:00
5b959c9763 Added queue structure 2022-08-15 20:20:31 -05:00
d84c9c86d0 Removed some unused code 2022-07-05 18:06:19 -05:00
958b717751 Fixed state save after process preemption 2022-07-05 15:19:20 -05:00
d4b36a7c7d Return the previous process to queue after context switch 2022-07-05 15:18:51 -05:00
5c7d002bbf Moved PCB for each process to kernel heap 2022-07-03 13:17:06 -05:00
a52f06f81e Massive backlog of changes 2022-06-15 15:59:31 -05:00
c962a83ff0 WIP on kernel syscalls 2021-05-01 17:09:50 -05:00
7caf49065d page stack constructor takes stack base as argument
initialize() calls new constructors and fills in syscall table
2021-04-19 06:58:02 -05:00
8605f08405 Changed DPL of syscall interrupt to 3 2021-04-19 06:57:05 -05:00
a68503538b putc() advances lines when screen is full 2021-04-19 06:56:49 -05:00
7300b9ecd6 Fixed broken ELF loader
Only binaries less than a page long would load correctly.
2021-04-19 06:56:03 -05:00
470e39e8e8 Added support for page types in mmgr 2021-04-19 06:55:27 -05:00
a5e9d852ab Implemented do_syscall()
Wrote constructor for kernel state
Added syscall table
2021-04-19 06:54:34 -05:00
755f2a3d69 Wrote syscall interrupt handler in assembly 2021-04-19 06:53:39 -05:00
6df3f203b8 Added source file for syscalls 2021-04-19 06:51:48 -05:00
5efc389935 Finished basic task switching mechansim
PCB is local to a process's address space.
Context switches are written in assembly.
Moved x86 headers to include/x86
2021-04-19 03:40:33 -05:00
40da57e233 APIC enabled after running kernel state constructors 2021-04-18 02:10:56 -05:00
625bbb04a8 Debug message printed before loading task context 2021-04-18 02:10:33 -05:00
c39cbb79cd Task contexts now load segment registers correctly
Interrupt enable bit set in saved EFLAGS register
2021-04-18 02:10:03 -05:00
1171aa2ca3 Spurious interrupt vector set to 0xFF 2021-04-18 02:07:45 -05:00
0b84658a61 TSS is created and TR loaded in initialize_gdt() 2021-04-18 02:07:00 -05:00
979344e942 next_process() checks if a next process exists
Panics if not
2021-04-17 06:30:00 -05:00
b615a8d286 More process in initialize()
Function now constructs kernel state and enters a process
2021-04-17 06:27:55 -05:00
461194fdfd Fixed initialize_context()
Function did not take 'popal' instruction into account when initializing stack
2021-04-17 06:26:56 -05:00
7dd19d0c2a Added constructors for heap and resource table 2021-04-17 06:25:46 -05:00
291ed65248 Fixed wrong pointer type in load_module()
Kernel passed a pointer to its own state to get_free_resource_slot(),
causing its state to be corrupted.
next_process() also now loads the address space of the next process before entering it.
2021-04-17 06:25:11 -05:00
2a5dcd4a0f Improved get_free_resource_slot()
Table now tries to expand itself when no available slots are left
2021-04-17 04:59:39 -05:00
a28e586139 Fixed missing return in free_page()
Method would report "out of memory" when that was not the case
2021-04-17 04:58:02 -05:00
7c0c5cd8ce Fixed calculation of kernel binary size in initialize() 2021-04-17 04:57:12 -05:00
55c5db056e Fixed crash in initialize_context()
Function tried to dereference a physical address, causing page fault
2021-04-17 04:56:22 -05:00
5c4a756176 Fixed fatal error while loading modules
strcpy() was called with a char instead of a char*, obviously causing a crash
2021-04-17 04:24:23 -05:00
961139df9e Improved kernel memory usage
Moved base linear address to 0xFF800000
Kernel only reserves the page frames it actually needs
Memory for multiboot2 headers is freed
Video memory and APIC registers are dynamically mapped into linear addresses
2021-04-17 03:45:45 -05:00
b141582f40 Added very simple kernel memory allocator 2021-04-17 01:18:14 -05:00
b582c39ff8 Started work on process management 2021-04-17 01:00:28 -05:00
ce6371f0c3 Added ISR for preemption of processes 2021-04-17 00:59:15 -05:00
db280f3fad Added new source files to Makefile.am 2021-04-17 00:57:50 -05:00
cb6d2681ef Started code to manage kernel resource table 2021-04-17 00:57:37 -05:00
9630d0a396 Added load_program() function
Builds program image from ELF file in memory
Fixed multiple definition error caused by constant in elf.h:
moved contant to elf.c
2021-04-17 00:56:44 -05:00
2d6fa0d163 Added functions to create and load process contexts 2021-04-17 00:55:05 -05:00
fdcdb9acab Updated virtual memory manager
Added page flags
Added function current_address_space()
Fixed create_address_space()
Renamed some fields in page_table_entry_t to fit naming scheme
2021-04-17 00:52:16 -05:00
6c047c6343 Remvoed unused dymamic memory allocator 2021-04-17 00:49:38 -05:00