Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								ec1c487dcd 
								
							 
						 
						
							
							
								
								Yet another pass of style fixes.  
							
							
							
						 
						
							2018-12-21 02:10:45 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								89040cdc99 
								
							 
						 
						
							
							
								
								Add a "syncd" kernel process that periodically calls sync().  
							
							
							
						 
						
							2018-12-20 02:41:55 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								f31e1ceab0 
								
							 
						 
						
							
							
								
								Move InlineLinkedList to AK.  
							
							
							
						 
						
							2018-12-03 01:18:54 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								f6e27c2abe 
								
							 
						 
						
							
							
								
								More coding style changes.  
							
							
							
						 
						
							2018-12-03 00:39:25 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								44036f32bc 
								
							 
						 
						
							
							
								
								Move ELFLoader code into Kernel/.  
							
							
							
						 
						
							2018-12-02 20:27:08 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								9d05f6b7a7 
								
							 
						 
						
							
							
								
								Make bash-2.05b build with minimal changes.  
							
							... 
							
							
							
							This is really neat. :^) 
							
						 
						
							2018-11-17 00:14:07 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2529925fe9 
								
							 
						 
						
							
							
								
								Some more renaming:  
							
							... 
							
							
							
							FileSystem -> FS
SyntheticFileSystem -> SynthFS
ProcFileSystem -> ProcFS
Ext2FileSystem -> Ext2FS
Ext2Inode -> Ext2FSInode 
							
						 
						
							2018-11-15 17:13:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								396a32835b 
								
							 
						 
						
							
							
								
								A pass of style/naming cleanup in VFS.  
							
							
							
						 
						
							2018-11-15 15:10:30 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								457a5df7d5 
								
							 
						 
						
							
							
								
								Rename:  
							
							... 
							
							
							
							VirtualFileSystem -> VFS
VirtualFileSystem::Node -> Vnode 
							
						 
						
							2018-11-15 14:43:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								26852a8363 
								
							 
						 
						
							
							
								
								Add metadata to CoreInode.  
							
							
							
						 
						
							2018-11-13 13:32:16 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								19b9401487 
								
							 
						 
						
							
							
								
								Reduce kmalloc() traffic in directory iteration.  
							
							... 
							
							
							
							Pass the file name in a stack-allocated buffer instead of using an AK::String
when iterating directories. This dramatically reduces the amount of cycles
spent traversing the filesystem. 
							
						 
						
							2018-11-13 00:17:30 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								d5d45d1088 
								
							 
						 
						
							
							
								
								Rage hacking to get bash to run. It finally runs. So cool! :^)  
							
							
							
						 
						
							2018-11-11 15:38:07 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2ac5e14c08 
								
							 
						 
						
							
							
								
								Merge VGA into VirtualConsole.  
							
							
							
						 
						
							2018-11-10 16:26:18 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								b8264e7d47 
								
							 
						 
						
							
							
								
								Merge Disk namespace into the IDEDiskDevice class.  
							
							
							
						 
						
							2018-11-10 15:15:31 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								8a865c11ec 
								
							 
						 
						
							
							
								
								Pre-size the ksyms vector for speedier loading.  
							
							... 
							
							
							
							Also show loading progress on the screen because it looks neat. 
							
						 
						
							2018-11-09 20:40:39 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								47b7eeda44 
								
							 
						 
						
							
							
								
								Fix all current build warnings in the kernel.  
							
							
							
						 
						
							2018-11-09 10:03:21 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e71cb1c56b 
								
							 
						 
						
							
							
								
								Fix some paging related bugs exposed by the spawn stress test.  
							
							... 
							
							
							
							- Process::exec() needs to restore the original paging scope when called
  on a non-current process.
- Add missing InterruptDisabler guards around g_processes access.
- Only flush the TLB when modifying the active page tables. 
							
						 
						
							2018-11-09 01:25:31 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3b2dcd5929 
								
							 
						 
						
							
							
								
								Add a VMO pointer to VNode.  
							
							... 
							
							
							
							This way, if anyone tries to map an already mapped file, we share the VMO. 
							
						 
						
							2018-11-08 15:39:26 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								1dbc340da8 
								
							 
						 
						
							
							
								
								Get rid of the undertaker and have waitpid() be the reaper.  
							
							... 
							
							
							
							For dead orphans, the scheduler calls reap(). 
							
						 
						
							2018-11-07 23:59:49 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								43f40a3050 
								
							 
						 
						
							
							
								
								Finally unbreak the colonel process and make it the true idle process.  
							
							
							
						 
						
							2018-11-07 23:14:56 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								39d2fcbbee 
								
							 
						 
						
							
							
								
								Move the scheduler code to its own class.  
							
							... 
							
							
							
							This is very mechanical. 
							
						 
						
							2018-11-07 22:15:02 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								6304c771dd 
								
							 
						 
						
							
							
								
								Some refactor and style tweaks.  
							
							
							
						 
						
							2018-11-07 21:38:18 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								83172e6a4b 
								
							 
						 
						
							
							
								
								Rename FileHandle to FileDescriptor.  
							
							
							
						 
						
							2018-11-07 11:37:54 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3024167cbd 
								
							 
						 
						
							
							
								
								Change syscall naming scheme.  
							
							
							
						 
						
							2018-11-06 13:33:54 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2d045d2a64 
								
							 
						 
						
							
							
								
								Implement COW pages! :^)  
							
							... 
							
							
							
							sys$fork() now clones all writable regions with per-page COW bits.
The pages are then mapped read-only and we handle a PF by COWing the pages.
This is quite delightful. Obviously there's lots of work to do still,
and it needs better data structures, but the general concept works. 
							
						 
						
							2018-11-05 13:48:07 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								422b5403e5 
								
							 
						 
						
							
							
								
								Merge ExecSpace into ELFLoader.  
							
							
							
						 
						
							2018-11-04 13:52:53 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								dd060d0fa8 
								
							 
						 
						
							
							
								
								Share code between spawn() and exec() implementations.  
							
							... 
							
							
							
							Okay, now there's only one ELF loading client in the process launch code. 
							
						 
						
							2018-11-03 10:55:02 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								90ddbca127 
								
							 
						 
						
							
							
								
								Free physical pages allocated for a process's page directory on exit.  
							
							... 
							
							
							
							Also use a ProcessPagingScope instead of region aliasing to implement
create-process ELF loading. 
							
						 
						
							2018-11-01 23:08:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								c70afd045e 
								
							 
						 
						
							
							
								
								Use a freelist for GDT entries.  
							
							... 
							
							
							
							Tweak the kmalloc space layout a bit. Get the spawn stress test up
and running again. 
							
						 
						
							2018-11-01 16:23:12 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3a901ae36d 
								
							 
						 
						
							
							
								
								Way tighter locking in process creation.  
							
							... 
							
							
							
							We no longer disable interrupts around the whole affair.
Since MM manages per-process data structures, this works quite smoothly now.
Only procfs had to be tweaked with an InterruptDisabler. 
							
						 
						
							2018-11-01 14:41:49 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								dfaa2b6b02 
								
							 
						 
						
							
							
								
								Convert VirtualConsole to the new coding style.  
							
							... 
							
							
							
							I'm still playing around with finding a style that I like.
This is starting to feel pleasing to the eye. I guess this is how long
it took me to break free from the habit of my previous Qt/WK coding style. 
							
						 
						
							2018-11-01 14:11:22 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3e532ac7b6 
								
							 
						 
						
							
							
								
								Process now maps regions immediately when they are allocated.  
							
							... 
							
							
							
							This avoids having to do a separate MM.mapRegionsForTask() pass.
Also, more Task => Process renaming that I apparently hadn't saved yet. 
							
						 
						
							2018-11-01 13:15:46 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								c45f166c63 
								
							 
						 
						
							
							
								
								More work on per-process page directories. It basically works now!  
							
							... 
							
							
							
							I spent some time stuck on a problem where processes would clobber each
other's stacks. Took me a moment to figure out that their stacks
were allocated in the sub-4MB linear address range which is shared
between all processes. Oops! 
							
						 
						
							2018-11-01 11:36:25 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								9a086b2d35 
								
							 
						 
						
							
							
								
								Add a kmalloc_eternal() for things that will never be destroyed.  
							
							
							
						 
						
							2018-10-31 23:19:15 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								dec5683e9c 
								
							 
						 
						
							
							
								
								Snazz up the kprintf() output a bit by giving it its own color.  
							
							
							
						 
						
							2018-10-31 20:14:23 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								511ed4c4de 
								
							 
						 
						
							
							
								
								Snazz up the sh prompt a bit. Add the current tty to it.  
							
							
							
						 
						
							2018-10-31 01:21:56 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								7be30a2fa8 
								
							 
						 
						
							
							
								
								Fuck it, add a 4th virtual console. :^)  
							
							
							
						 
						
							2018-10-31 00:27:34 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								b833aa4162 
								
							 
						 
						
							
							
								
								Fix bug where Console::the() was initialized too late.  
							
							... 
							
							
							
							Yet another problem due to lack of BSS zeroing in the kernel loader... 
							
						 
						
							2018-10-30 23:02:06 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								7a7956a595 
								
							 
						 
						
							
							
								
								Virtual consoles kinda work!  
							
							... 
							
							
							
							We now make three VirtualConsoles at boot: tty0, tty1, and tty2.
We launch an instance of /bin/sh in each one.
You switch between them with Alt+1/2/3
How very very cool :^) 
							
						 
						
							2018-10-30 15:33:37 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								68739dc43e 
								
							 
						 
						
							
							
								
								Start working on virtual consoles/TTYs.  
							
							... 
							
							
							
							This is a mess right now, but I'd rather commit as I go. 
							
						 
						
							2018-10-30 13:59:29 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e6284a8774 
								
							 
						 
						
							
							
								
								Fix broken SpinLock.  
							
							... 
							
							
							
							The SpinLock was all backwards and didn't actually work. Fixing it exposed
how wrong most of the locking here is.
I need to come up with a better granularity here. 
							
						 
						
							2018-10-29 22:04:26 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								bea106fdb2 
								
							 
						 
						
							
							
								
								Fix up VFS::resolveSymbolicLink() to use a base inode instead of a base path.  
							
							... 
							
							
							
							Also more VFS error plumbing. 
							
						 
						
							2018-10-28 14:25:51 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								dd3244137e 
								
							 
						 
						
							
							
								
								Add basic support for ANSI color escape sequences.  
							
							
							
						 
						
							2018-10-28 00:56:19 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								de2fb183cc 
								
							 
						 
						
							
							
								
								Rename "kernel map" concept to just "ksyms"  
							
							
							
						 
						
							2018-10-27 15:02:39 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								5cfeeede7c 
								
							 
						 
						
							
							
								
								Remove the obsolete "Userspace" stuff.  
							
							
							
						 
						
							2018-10-27 00:41:23 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2716a9e2d7 
								
							 
						 
						
							
							
								
								Greatly improve /proc/PID/stack by tracing the ebp frame chain.  
							
							... 
							
							
							
							I also added a generator cache to FileHandle. This way, multiple
reads to a generated file (i.e in a synthfs) can transparently
handle multiple calls to read() without the contents changing
between calls.
The cache is discarded at EOF (or when the FileHandle is destroyed.) 
							
						 
						
							2018-10-27 00:14:24 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								c928b06218 
								
							 
						 
						
							
							
								
								Add a very hackish /proc/PID/stack.  
							
							... 
							
							
							
							It walks the stack and identifies anything that looks like a kernel symbol.
This could be a lot more sophisticated. 
							
						 
						
							2018-10-26 22:33:15 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a32b3a3ddf 
								
							 
						 
						
							
							
								
								Implement /proc/PID/vm.  
							
							... 
							
							
							
							Refactored SyntheticFileSystem to maintain an arbitrary directory structure.
ProcFileSystem creates a directory entry in /proc for each new process. 
							
						 
						
							2018-10-26 17:44:19 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								6312c3f253 
								
							 
						 
						
							
							
								
								Fix mixup between /dev/null and /dev/zero device registration.  
							
							
							
						 
						
							2018-10-26 11:25:46 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								dc6f57f19c 
								
							 
						 
						
							
							
								
								Add gettimeofday() syscall and LibC wrappers gettimeofday() and time().  
							
							... 
							
							
							
							This only has second accuracy right now, I'll work out subseconds later. 
							
						 
						
							2018-10-25 17:36:18 +02:00