Commit Graph

222 Commits

Author SHA1 Message Date
bacedbea86 Rewrote physical memory allocator
The physical memory allocator now uses a buddy allocator instead of a stack.

Also moved some of the platform-independent context code to kernel.c.
2022-08-23 13:00:26 -05:00
54e2beefc1 Fixed warning in syscall.c
Cast NULL to 'unsigned long' to get rid of compiler warning.
2022-08-23 12:58:28 -05:00
2f7d39e679 Improved error handling in queue.c 2022-08-23 12:56:45 -05:00
9c37167c5e Changed #include guards in physaddr.h, added now error codes 2022-08-23 12:55:39 -05:00
f76b8cab43 Changed #include guards in physaddr.h 2022-08-23 12:55:07 -05:00
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
Nathan Giddings
9c82a39097 Merge pull request #8 from ngiddings/master
Merge latest work
2022-08-17 18:25:25 -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
bdb0b753a3 Fixed multiple definition error 2022-07-23 04:03:00 -05:00
03968c33eb Redefined message struct 2022-07-23 02:22:18 -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
e3026b2601 Removed unneeded #include from elf.h 2022-06-15 16:07:01 -05:00
38d9ee4737 Removed unneeded #include from heap.h 2022-06-15 16:05:40 -05:00
Nathan Giddings
da04d019c6 Merge pull request #7 from ngiddings/pre-alpha
Latest development on pre-alpha
2022-06-15 16:03: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
c5ca5e82a7 Added more status codes 2021-04-19 06:56:12 -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
0af53bcfc8 Moved config.h to include/ 2021-04-19 06:52:02 -05:00
6df3f203b8 Added source file for syscalls 2021-04-19 06:51:48 -05:00
Nathan Giddings
6b73aff3d0 Merge pull request #6 from ngiddings/pre-alpha
Pre alpha
2021-04-19 03:42:05 -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
086dfe546a GRUB config file loads modules at boot 2021-04-18 08:00:56 -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
a68a4dff11 Added new 'null pointer' status code 2021-04-17 06:26:03 -05:00
7dd19d0c2a Added constructors for heap and resource table 2021-04-17 06:25:46 -05:00