204 Commits

Author SHA1 Message Date
cce444f546 Reference cpu specific information via gs segment 2018-03-29 19:36:33 +02:00
01ff25eefb Collect cpu specific information at one place 2018-03-29 19:36:33 +02:00
18481604f9 Chapter 13: Process Memory Management - NOTHING 2018-03-29 19:36:33 +02:00
4c4e7136cc Handle pagefaults caused by running of the stack 2018-03-29 19:36:33 +02:00
28c82567a0 Process page fault handler 2018-03-29 19:36:33 +02:00
4ecec1eec6 Stupidly simple process memory manager with brk() 2018-03-29 19:36:33 +02:00
19d58ec71d Functions for copying stuff between kernel and user space 2018-03-29 19:36:33 +02:00
ace36fe919 Chapter 12: User Mode 2018-03-29 19:36:33 +02:00
42baf14321 A bit of cleanup 2018-03-29 19:36:33 +02:00
68ec6fa575 Running in user mode 2018-03-29 19:36:32 +02:00
6c078289f9 Load TSS 2018-03-29 19:36:32 +02:00
132645c0e6 Reload GDT from c 2018-03-29 19:36:32 +02:00
04f2123499 Move BootGDT definition to C 2018-03-29 19:36:32 +02:00
3508b182b7 Chapter 11: Processes 2018-03-29 19:36:32 +02:00
e868b83f50 At this point the threads are really processes... 2018-03-29 19:36:32 +02:00
6523b10984 Threads have isolated memory spaces 2018-03-29 19:36:32 +02:00
2d0f539e23 Create and load new page directories 2018-03-29 19:36:32 +02:00
d483d8f39e Global variables are overwritten... let's fix that 2018-03-29 19:36:32 +02:00
2de7e537ea Chapter 10: Threading 2018-03-29 19:36:32 +02:00
a39fdcf3ce Adding a scheduler function and cleanup 2018-03-29 19:36:32 +02:00
b5f5a40fbc Further queue improvements 2018-03-21 23:12:43 +01:00
e5da45df2f Queue improvements 2018-03-21 23:12:43 +01:00
8af18644a3 Interface cleanup 2018-03-21 23:12:43 +01:00
024d772be8 Queues using some macro magic 2018-03-21 23:12:43 +01:00
fd0ca6f617 Rename some stuff - cleanup 2018-03-21 23:12:43 +01:00
13946b1758 Pass around tcbs instead of thread stacks 2018-03-21 23:12:43 +01:00
1fca5af522 Change interface for getting and setting current thread 2018-03-21 23:12:43 +01:00
c26434f814 Some threading code cleanup 2018-03-21 23:12:43 +01:00
251b5f71c9 Simple scheduler 2018-03-21 23:12:43 +01:00
1e2f81a5d8 Very simple threading and context switching. 2018-03-21 23:12:43 +01:00
63ae2a0b9d Chapter 9: Memory Management - COMPLETE 2018-03-21 23:12:43 +01:00
fc6c7f3bc7 VMM -- Interface cleanup 2018-03-21 09:21:40 +01:00
4011b5f12f VMM -- Use a simple uint64 for page table entries 2018-03-20 15:41:27 +01:00
cb09833ebc VMM -- Know what? Let's ignore huge pages for simplicity 2018-03-20 14:11:22 +01:00
ae2de799f3 VMM -- Various cleanup 2018-03-20 14:11:22 +01:00
e86857dca4 PMM -- simplification of code 2018-03-20 14:11:22 +01:00
9bc1abceff VMM -- Touch and set page in one operation 2018-03-20 14:11:22 +01:00
df0df93da7 Don't put multiboot data in page stack 2018-03-20 14:11:22 +01:00
36c517dd82 Use a direct address for P4 rather than a pointer 2018-03-20 14:11:22 +01:00
8711fee390 Interface cleanup 2018-03-20 14:11:22 +01:00
9a479b1132 Add a PAGE_GLOBAL flag for kernel pages 2018-03-20 14:11:22 +01:00
470eb5e9f9 Also map non-free memory areas into kernel space 2018-03-20 14:11:22 +01:00
3a4136c225 PMM -- calloc function for getting cleared pages 2018-03-20 14:11:22 +01:00
5dc4e27392 Map all free memory pages and add to page stack 2018-03-20 14:11:22 +01:00
cf1b631461 VMM -- making sure things will work with virtual memory 2018-03-20 14:11:22 +01:00
8ac8bc7b6c VMM -- adding interface to header file 2018-03-20 14:11:22 +01:00
ce937c8088 VMM - free_page does not unset P2 entry if P1 is not empty 2018-03-20 14:11:22 +01:00
96a877c95b VMM - touch_page stops at P2 for huge pages 2018-03-20 14:11:22 +01:00
e68698ff80 VMM - set_page does not overwrite 4kb pages with 2mb 2018-03-20 14:11:22 +01:00
518eaf73c3 VMM - set_page sets 2Mb pages 2018-03-20 14:11:22 +01:00