Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e4bfcd2346 
								
							 
						 
						
							
							
								
								Add "times scheduled" field to /proc/summary  
							
							
							
						 
						
							2018-10-23 15:59:38 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								44045b258c 
								
							 
						 
						
							
							
								
								Teach MM to flush individual TLB entries only.  
							
							
							
						 
						
							2018-10-23 15:53:11 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3676214a62 
								
							 
						 
						
							
							
								
								Remove remains of the old "panel" task.  
							
							... 
							
							
							
							...and grow the console by 1 row! :^) 
							
						 
						
							2018-10-23 15:47:03 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								d90d125dfe 
								
							 
						 
						
							
							
								
								Add an undertaker task that is responsible for destroying dead tasks.  
							
							
							
						 
						
							2018-10-23 15:43:05 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								ccd15e0590 
								
							 
						 
						
							
							
								
								Various things:  
							
							... 
							
							
							
							- putch syscall now directly calls Console::putChar().
- /proc/summary includes some info about kmalloc stats.
- Syscall entry is guarded by a simple spinlock.
- Unmap regions for crashed tasks. 
							
						 
						
							2018-10-23 15:19:02 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								d133a2845f 
								
							 
						 
						
							
							
								
								Add missing TLB flushes.  
							
							
							
						 
						
							2018-10-23 13:03:11 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								77821da42f 
								
							 
						 
						
							
							
								
								Also send console output to port 0xe9 (bochs console.)  
							
							... 
							
							
							
							This is very handy for debugging. 
							
						 
						
							2018-10-23 13:02:38 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								63e253bac9 
								
							 
						 
						
							
							
								
								Generate a basic /proc/summary file with some info about all tasks.  
							
							
							
						 
						
							2018-10-23 12:44:46 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								ed2422d7af 
								
							 
						 
						
							
							
								
								Start adding a basic /proc filesystem and a "ps" utility.  
							
							
							
						 
						
							2018-10-23 12:04:03 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								98f76f0153 
								
							 
						 
						
							
							
								
								Flush the TLB after modifying page tables.  
							
							... 
							
							
							
							This is a very inefficient naive implementation, but it gets us going.
Mapping tasks in and out of a shared address space now totally works. 
							
						 
						
							2018-10-23 11:03:56 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								fe237ee215 
								
							 
						 
						
							
							
								
								Lots of hacking:  
							
							... 
							
							
							
							- Turn Keyboard into a CharacterDevice (85,1) at /dev/keyboard.
- Implement MM::unmapRegionsForTask() and MM::unmapRegion()
- Save SS correctly on interrupt.
- Add a simple Spawn syscall for launching another process.
- Move a bunch of IO syscall debug output behind DEBUG_IO.
- Have ASSERT do a "cli" immediately when failing.
  This makes the output look proper every time.
- Implement a bunch of syscalls in LibC.
- Add a simple shell ("sh"). All it can do now is read a line
  of text from /dev/keyboard and then try launching the specified
  executable by calling spawn().
There are definitely bugs in here, but we're moving on forward. 
							
						 
						
							2018-10-23 10:12:50 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								b824f15619 
								
							 
						 
						
							
							
								
								Launching an arbitrary ELF executable from disk works! :^)  
							
							... 
							
							
							
							This is so cool! It's a bit messy now with two Task constructors,
but eventually they should fold into a single constructor somehow. 
							
						 
						
							2018-10-22 15:43:02 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								befeabd8fe 
								
							 
						 
						
							
							
								
								Okay, with some mucking around, there is now a /bin/id and it runs!  
							
							... 
							
							
							
							It statically links against everything in LibC that it needs.
This will work just fine for a long time to come! 
							
						 
						
							2018-10-22 14:41:54 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								63764b3a65 
								
							 
						 
						
							
							
								
								Import very modest Userland.  
							
							
							
						 
						
							2018-10-22 14:06:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								85bcf2ed0f 
								
							 
						 
						
							
							
								
								Add getgid() and getpid() syscalls. Prep for LibC.  
							
							
							
						 
						
							2018-10-22 13:55:11 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								bae59609e3 
								
							 
						 
						
							
							
								
								Move kprintf to its own file. It has nothing to do with VGA anymore.  
							
							
							
						 
						
							2018-10-22 13:20:35 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								702d308e67 
								
							 
						 
						
							
							
								
								Oops, StringImpl's "the empty string" global was not always initialized.  
							
							... 
							
							
							
							These "oops forgot to initialize" bugs are getting annoying... 
							
						 
						
							2018-10-22 13:10:08 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								c5e55f4737 
								
							 
						 
						
							
							
								
								Use UD2 instead of CLI;HLT for CRASH().  
							
							... 
							
							
							
							This way the kernel prints out a nice register dump so we can find
out where we crashed. 
							
						 
						
							2018-10-22 13:07:06 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a9ca75c98b 
								
							 
						 
						
							
							
								
								Add IRQHandler class that can be subclasses to handle an IRQ.  
							
							... 
							
							
							
							Also move Keyboard to a class implementation using this pattern. 
							
						 
						
							2018-10-22 12:58:29 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								8f941561b4 
								
							 
						 
						
							
							
								
								Add ALWAYS_INLINE macro.  
							
							
							
						 
						
							2018-10-22 12:55:59 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e4afa2a041 
								
							 
						 
						
							
							
								
								Tweak _test.o to use the putch() syscall.  
							
							... 
							
							
							
							It's still running in kernel space. Once I make it possible for ELFLoader
to set up a ring 3 task, we'll really be cooking! 
							
						 
						
							2018-10-22 11:53:59 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3a3c57357c 
								
							 
						 
						
							
							
								
								Add a sys$exit and make init_stage2 call it when finished.  
							
							
							
						 
						
							2018-10-22 11:43:55 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								79ffdb7205 
								
							 
						 
						
							
							
								
								A lot of hacking:  
							
							... 
							
							
							
							- More work on funneling console output through Console.
- init() now breaks off into a separate task ASAP.
- ..this leaves the "colonel" task as a simple hlt idle loop.
- Mask all IRQs on startup (except IRQ2 for slave passthru)
- Fix underallocation bug in Task::allocateRegion().
- Remember how many times each Task has been scheduled.
The panel and scheduling banner are disabled until I get things
working nicely in the (brave) new Console world. 
							
						 
						
							2018-10-22 11:15:16 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								09fc9c0698 
								
							 
						 
						
							
							
								
								Make Console::m_rows/m_columns const for now.  
							
							
							
						 
						
							2018-10-21 23:48:50 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e38f40a83c 
								
							 
						 
						
							
							
								
								Add an InlineLinkedList::containsSlow(T*) helper.  
							
							
							
						 
						
							2018-10-21 23:48:27 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								fc88368582 
								
							 
						 
						
							
							
								
								Have Console::write() directly call vga_putch.  
							
							
							
						 
						
							2018-10-21 22:44:26 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a70bfb87d5 
								
							 
						 
						
							
							
								
								Add a Console device and start refactoring screen output.  
							
							
							
						 
						
							2018-10-21 21:59:43 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								d5ec18027e 
								
							 
						 
						
							
							
								
								Protect the first 4 KB of memory.  
							
							... 
							
							
							
							This makes null pointers crashy, tremendously useful :^) 
							
						 
						
							2018-10-21 21:59:11 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								dd6706a1a1 
								
							 
						 
						
							
							
								
								Fix null deref in contextSwitch().  
							
							
							
						 
						
							2018-10-21 21:57:43 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2f99ff801e 
								
							 
						 
						
							
							
								
								Move post-boot kernel stack pointer to 0x4000.  
							
							
							
						 
						
							2018-10-21 21:51:12 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								46ff281695 
								
							 
						 
						
							
							
								
								Turn the syscall interrupt into a trap (by switching the gate type.)  
							
							... 
							
							
							
							This leaves interrupts enabled while we're in the kernel, which is
precisely what we want.
This uncovered a horrendous problem with kernel tasks silently
overflowing their stacks. For now I've simply increased the stack size
but I need a more MMU-y solution for this eventually. 
							
						 
						
							2018-10-19 11:31:18 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								97e0d75bcb 
								
							 
						 
						
							
							
								
								ELFLoader works inside the kernel!  
							
							... 
							
							
							
							We load /_hello.o which just prints out a simple message.
It executes inside the kernel itself, so no fancy userspace process
or anything, but this is still so cool! 
							
						 
						
							2018-10-18 15:46:08 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								6ab0649ad6 
								
							 
						 
						
							
							
								
								ksprintf() should null-terminate strings.  
							
							
							
						 
						
							2018-10-18 15:24:07 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								c149d2a8f0 
								
							 
						 
						
							
							
								
								Build ELFLoader into Kernel.  
							
							
							
						 
						
							2018-10-18 15:03:10 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3649638259 
								
							 
						 
						
							
							
								
								Add Regions concept to Task.  
							
							
							
						 
						
							2018-10-18 14:55:20 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								5b10846bed 
								
							 
						 
						
							
							
								
								Add a simple ELF binary called _test.o to the test fs.  
							
							
							
						 
						
							2018-10-18 13:16:30 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								f67d695254 
								
							 
						 
						
							
							
								
								More paging stuff.  
							
							... 
							
							
							
							The test userspace process now runs at linear address 0x300000 which is
mapped to a dynamically allocated page from the MemoryManager. Cool! 
							
						 
						
							2018-10-18 13:05:00 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								89851a9ded 
								
							 
						 
						
							
							
								
								Use FileHandle from VFS.  
							
							
							
						 
						
							2018-10-18 10:28:09 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								9d5de91cf3 
								
							 
						 
						
							
							
								
								Actually destroy tasks after they crash.  
							
							
							
						 
						
							2018-10-18 00:26:30 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								1a801e5737 
								
							 
						 
						
							
							
								
								Hang if we GPF in ring 0.  
							
							
							
						 
						
							2018-10-18 00:13:06 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								56c1f9db8e 
								
							 
						 
						
							
							
								
								A userspace process can now GPF and the OS goes on!  
							
							... 
							
							
							
							This is really rickety, but it kinda sorta works for my test GPF! 
							
						 
						
							2018-10-17 23:49:32 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								77299cf54d 
								
							 
						 
						
							
							
								
								Add basic paging. Only identity maps the bottom 4MB as a start.  
							
							
							
						 
						
							2018-10-17 23:13:55 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								286e27ef40 
								
							 
						 
						
							
							
								
								Allow running in QEMU with "./run q"  
							
							... 
							
							
							
							The kernel doesn't run in QEMU right now and I don't know why. 
							
						 
						
							2018-10-17 16:58:35 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								8ff394f83f 
								
							 
						 
						
							
							
								
								Fix a dumb in buffer_putch.  
							
							
							
						 
						
							2018-10-17 16:56:47 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								9aa88fe186 
								
							 
						 
						
							
							
								
								Add a PIC::getISR() helper.  
							
							
							
						 
						
							2018-10-17 16:54:49 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e0f31d38a2 
								
							 
						 
						
							
							
								
								Add -fno-pic -fno-pie to build flags.  
							
							
							
						 
						
							2018-10-17 16:49:30 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								f82b25d4f9 
								
							 
						 
						
							
							
								
								Fix some minor build warnings.  
							
							
							
						 
						
							2018-10-17 16:48:43 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								39fa1eb2c2 
								
							 
						 
						
							
							
								
								Print the contents of motd.txt on boot.  
							
							
							
						 
						
							2018-10-17 12:07:39 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								705832f387 
								
							 
						 
						
							
							
								
								List the root directory after mounting /.  
							
							... 
							
							
							
							So cool that it works! It's spewing out a bunch of terminal escape sequences
that the OS console obviously doesn't support, but we'll get there too. 
							
						 
						
							2018-10-17 11:47:14 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								b05ed591ab 
								
							 
						 
						
							
							
								
								VFS mounts an ext2fs root! :^)  
							
							
							
						 
						
							2018-10-17 11:44:06 +02:00