Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								7562c0b7bf 
								
							 
						 
						
							
							
								
								Ext2FS: Fix wrong file mode being passed from create_inode() to add_child().  
							
							
							
						 
						
							2019-06-09 12:48:34 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								6873e7d016 
								
							 
						 
						
							
							
								
								Ext2FS: Move directory writing logic into Ext2FSInode.  
							
							
							
						 
						
							2019-06-09 12:46:23 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								8258b699db 
								
							 
						 
						
							
							
								
								Kernel: Use StringView more in Inode and subclasses.  
							
							
							
						 
						
							2019-06-09 10:25:19 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								736092a087 
								
							 
						 
						
							
							
								
								Kernel: Move i386.{cpp,h} => Arch/i386/CPU.{cpp,h}  
							
							... 
							
							
							
							There's a ton of work that would need to be done before we could spin up on
another architecture, but let's at least try to separate things out a bit. 
							
						 
						
							2019-06-07 20:02:01 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								891d4c4834 
								
							 
						 
						
							
							
								
								Kernel: Qualify a bunch of #include statements.  
							
							
							
						 
						
							2019-06-07 19:29:34 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								39d1a9ae66 
								
							 
						 
						
							
							
								
								Meta: Tweak .clang-format to not wrap braces after enums.  
							
							
							
						 
						
							2019-06-07 17:13:23 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e42c3b4fd7 
								
							 
						 
						
							
							
								
								Kernel: Rename LinearAddress => VirtualAddress.  
							
							
							
						 
						
							2019-06-07 12:56:50 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								bc951ca565 
								
							 
						 
						
							
							
								
								Kernel: Run clang-format on everything.  
							
							
							
						 
						
							2019-06-07 11:43:58 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								08cd75ac4b 
								
							 
						 
						
							
							
								
								Kernel: Rename FileDescriptor to FileDescription.  
							
							... 
							
							
							
							After reading a bunch of POSIX specs, I've learned that a file descriptor
is the number that refers to a file description, not the description itself.
So this patch renames FileDescriptor to FileDescription, and Process now has
FileDescription* file_description(int fd). 
							
						 
						
							2019-06-07 09:36:51 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e4cfa9a686 
								
							 
						 
						
							
							
								
								FIFO: Raise SIGPIPE in processes that write() to a broken pipe.  
							
							
							
						 
						
							2019-06-06 11:00:48 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								1f17b40d00 
								
							 
						 
						
							
							
								
								FIFO: Let write() fail with EPIPE if there's no reader.  
							
							
							
						 
						
							2019-06-06 11:00:48 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a53c922f8a 
								
							 
						 
						
							
							
								
								FileSystem: Rename VFS::fchmod() -> chmod().  
							
							
							
						 
						
							2019-06-02 12:52:21 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e67bfdb7f6 
								
							 
						 
						
							
							
								
								FileSystem: Route chown() and fchown() through VFS for access control.  
							
							
							
						 
						
							2019-06-02 12:52:21 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								aa35c08633 
								
							 
						 
						
							
							
								
								FileSystem: Only retrieve inode metadata once in VFS::chown().  
							
							
							
						 
						
							2019-06-02 12:52:21 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								5e1c7cb32c 
								
							 
						 
						
							
							
								
								Kernel: Memory-mapped files now have the absolute path as their name.  
							
							... 
							
							
							
							It's generated when the mapping is first created, so it won't update if
the file moves. Maybe that's something we should support, too. 
							
						 
						
							2019-06-02 10:14:28 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								93d3d1ede1 
								
							 
						 
						
							
							
								
								Kernel: Add fchown() syscall.  
							
							
							
						 
						
							2019-06-01 20:31:36 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2dd9ef6863 
								
							 
						 
						
							
							
								
								Kernel: Make File::absolute_path() const.  
							
							
							
						 
						
							2019-06-01 18:56:56 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								00de8b9fc4 
								
							 
						 
						
							
							
								
								FileSystem: Don't create a temporary FileDescriptor every time we stat().  
							
							... 
							
							
							
							Instead, move the stat buffer population into InodeMetadata so we can call
it directly from VFS::stat() once we have an Inode. 
							
						 
						
							2019-06-01 18:46:39 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								bba2c062fe 
								
							 
						 
						
							
							
								
								FileSystem: Make Inode::lookup() take a StringView.  
							
							... 
							
							
							
							This avoids a lot of String allocation during path resolution. 
							
						 
						
							2019-06-01 18:01:28 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2e14e5891c 
								
							 
						 
						
							
							
								
								FileSystem: Remove now-unused Inode::parent() and Inode::reverse_lookup().  
							
							... 
							
							
							
							These were only used to implement the old path resolution algorithm. 
							
						 
						
							2019-06-01 17:46:37 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								9ac95d1867 
								
							 
						 
						
							
							
								
								FileSystem: Pass mode_t to Inode::add_child().  
							
							... 
							
							
							
							This way the Ext2FS code can update its directory entry "file type" fields
correctly based on the file mode. This fixes some e2fsck whining. 
							
						 
						
							2019-05-31 17:41:33 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								fdf3608c8a 
								
							 
						 
						
							
							
								
								Update Badge<T> instantiations to simply be {}.  
							
							
							
						 
						
							2019-05-31 15:44:04 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								fa6446fc0d 
								
							 
						 
						
							
							
								
								FileSystem: VFS should require Badge<Device> for device registration.  
							
							
							
						 
						
							2019-05-31 15:36:49 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a1fdda3e20 
								
							 
						 
						
							
							
								
								FileSystem: Don't expose VFS::root_inode().  
							
							... 
							
							
							
							It seems like we don't need to expose this anymore, it's only used by VFS
internally to construct the root custody. 
							
						 
						
							2019-05-31 15:32:19 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								056a7fea08 
								
							 
						 
						
							
							
								
								FileSystem: Rename VFS::resolve_path_to_custody() => resolve_path().  
							
							
							
						 
						
							2019-05-31 15:30:09 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								8adadf8a46 
								
							 
						 
						
							
							
								
								FileSystem: Reuse existing custodies when possible, and keep them updated.  
							
							... 
							
							
							
							Walk the custody cache and try to reuse an existing one when possible.
The VFS is responsible for updating them when something happens that would
cause the described relationship to change.
This is definitely not perfect but it does work for the basic scenarios like
renaming and removing directory entries. 
							
						 
						
							2019-05-31 15:22:52 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e6a8133b0c 
								
							 
						 
						
							
							
								
								FileSystem: Merge symlink following logic into path resolution.  
							
							... 
							
							
							
							When encountering a symlink, we abandon the custody chain we've been working
on and start over with a new one (by recursing into a new resolution call.)
Caching symlinks in the custody model would be incredibly difficult to get
right with all the extra invalidation it would require, so let's just not. 
							
						 
						
							2019-05-31 06:42:49 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								709d168807 
								
							 
						 
						
							
							
								
								FileSystem: Get rid of VFS::resolve_path().  
							
							... 
							
							
							
							The only remaining client was resolve_symbolic_link() which now deals in
custodies instead. 
							
						 
						
							2019-05-30 22:30:29 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								874bffc729 
								
							 
						 
						
							
							
								
								FileSystem: Get rid of VFS::absolute_path() and teach Mount about custodies.  
							
							
							
						 
						
							2019-05-30 22:30:29 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								8e83aac8a3 
								
							 
						 
						
							
							
								
								FileSystem: Get rid of VFS::resolve_path_to_inode() and old_resolve_path().  
							
							
							
						 
						
							2019-05-30 22:30:29 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								55821c91f8 
								
							 
						 
						
							
							
								
								Kernel: Rename Process::cwd_custody() to Process::current_directory().  
							
							... 
							
							
							
							...and executable_custody() to just executable(). 
							
						 
						
							2019-05-30 22:30:25 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								393851418b 
								
							 
						 
						
							
							
								
								FileSystem: Port most of the code over to using custodies.  
							
							... 
							
							
							
							The current working directory is now stored as a custody. Likewise for a
process executable file. This unbreaks /proc/PID/fd which has not been
working since we made the filesystem bigger.
This still needs a bunch of work, for instance when renaming or removing
a file somewhere, we have to update the relevant custody links. 
							
						 
						
							2019-05-30 18:58:59 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								4cb87b1753 
								
							 
						 
						
							
							
								
								FileSystem: Add a Custody class that represents a parent/child guardianship.  
							
							... 
							
							
							
							A custody is kind of a directory entry abstraction that represents a single
entry in a parent directory that tells us the name of a child inode.
The idea here is for path resolution to produce a chain of custody objects. 
							
						 
						
							2019-05-30 17:46:08 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								baaede1bf9 
								
							 
						 
						
							
							
								
								Kernel: Make the Process allocate_region* API's understand "int prot".  
							
							... 
							
							
							
							Instead of having to inspect 'prot' at every call site, make the Process
API's take care of that so we can just pass it through. 
							
						 
						
							2019-05-30 16:14:37 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								8fe72d7b3c 
								
							 
						 
						
							
							
								
								Kernel: Make fcntl(F_SETFL) actually update the append/blocking flags.  
							
							
							
						 
						
							2019-05-30 15:37:51 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								08926e59b3 
								
							 
						 
						
							
							
								
								Kernel: Add InodeFile, a File subclass for regular files.  
							
							... 
							
							
							
							Finally everything that can be held by a FileDescriptor actually inherits
from the File class. 
							
						 
						
							2019-05-30 13:39:17 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								66c1a9be3b 
								
							 
						 
						
							
							
								
								Kernel: Pass 'prot' argument to File::mmap() and act on it.  
							
							... 
							
							
							
							Nothing crazy, this just means that PROT_READ allocates readable regions,
and that PROT_WRITE allocates writable ones. 
							
						 
						
							2019-05-30 12:38:35 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Robin Burchell 
								
							 
						 
						
							
							
							
							
								
							
							
								0dc9af5f7e 
								
							 
						 
						
							
							
								
								Add clang-format file  
							
							... 
							
							
							
							Also run it across the whole tree to get everything using the One True Style.
We don't yet run this in an automated fashion as it's a little slow, but
there is a snippet to do so in makeall.sh. 
							
						 
						
							2019-05-28 17:31:20 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Robin Burchell 
								
							 
						 
						
							
							
							
							
								
							
							
								c6e79bd53a 
								
							 
						 
						
							
							
								
								Kernel: Support O_APPEND  
							
							... 
							
							
							
							As per the manpage, this acts as a transparent lseek() before write. 
							
						 
						
							2019-05-26 01:32:05 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								75b0e5cce5 
								
							 
						 
						
							
							
								
								Ext2FS: Block  #0  can terminate an inode block list early.  
							
							... 
							
							
							
							We were already handling this for the indirect blocks, but the direct ones
would happily consider #0  to be a valid block list entry. 
							
						 
						
							2019-05-25 19:19:43 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								728327df8a 
								
							 
						 
						
							
							
								
								Ext2FS: Fix build with EXT2_DEBUG enabled, and tweak some variable names.  
							
							
							
						 
						
							2019-05-25 17:23:17 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								75866438b5 
								
							 
						 
						
							
							
								
								Kernel: Don't page in entire file immediately on mmap().  
							
							... 
							
							
							
							If we just don't do anything, the page fault handler will load the file
incrementally as-needed instead. :^) 
							
						 
						
							2019-05-18 22:30:55 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								959c8f287c 
								
							 
						 
						
							
							
								
								FileDescriptor: It's actually okay to seek past the end of a file. :^)  
							
							
							
						 
						
							2019-05-18 21:54:31 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a4e48dce77 
								
							 
						 
						
							
							
								
								Kernel: SharedMemory should implement mmap().  
							
							
							
						 
						
							2019-05-18 04:17:53 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								237628a7a6 
								
							 
						 
						
							
							
								
								Kernel: Tidy up FileDescriptor members a bit.  
							
							
							
						 
						
							2019-05-18 04:14:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								6957825444 
								
							 
						 
						
							
							
								
								Kernel: Factor out range allocation from Process::allocate_region*().  
							
							... 
							
							
							
							These functions were doing exactly the same thing for range allocation, so
share that code in an allocate_range() helper.
Region allocation will now also fail if range allocation fails, which means
that mmap() can actually fail without falling apart. Exciting times! 
							
						 
						
							2019-05-17 04:39:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Robin Burchell 
								
							 
						 
						
							
							
							
							
								
							
							
								f1f3cd58b0 
								
							 
						 
						
							
							
								
								FileSystem: fix errno on lseek() beyond the bounds of a file  
							
							... 
							
							
							
							These are all EINVAL. Also remove bogus assert on metadata.size. 
							
						 
						
							2019-05-16 16:05:08 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								176f683f66 
								
							 
						 
						
							
							
								
								Kernel: Move Inode to its own files.  
							
							
							
						 
						
							2019-05-16 03:02:37 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								01ffcdfa31 
								
							 
						 
						
							
							
								
								Kernel: Encapsulate the Region's COW map a bit better.  
							
							
							
						 
						
							2019-05-14 17:31:57 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								8b249bd09b 
								
							 
						 
						
							
							
								
								Kernel+Userland: Implement mknod() syscall and add a /bin/mknod program.  
							
							
							
						 
						
							2019-05-03 22:59:58 +02:00