Commit graph

  • 3b2dcd5929 Add a VMO pointer to VNode. Andreas Kling 2018-11-08 15:39:26 +01:00
  • 862f108cb5 Refactor the virtual memory object model a bit: Andreas Kling 2018-11-08 14:35:30 +01:00
  • 3c8064a787 Support basic mmap'ing of a file! Andreas Kling 2018-11-08 12:59:16 +01:00
  • fdbd9f1e27 Start working on memory-mapped files. Andreas Kling 2018-11-08 11:37:01 +01:00
  • 41a751c90c Minor tweak to /bin/kill. Andreas Kling 2018-11-08 02:07:08 +01:00
  • 71a2942a0a Make it run in QEMU. Andreas Kling 2018-11-08 02:03:19 +01:00
  • da3857b0c2 Add some simple write buffering to LibC's stdio. Andreas Kling 2018-11-08 01:23:23 +01:00
  • e287f8ef3a The colonel task already had a halt loop. Andreas Kling 2018-11-08 00:30:35 +01:00
  • ac1d12465f Move timer tick handling into Scheduler. Andreas Kling 2018-11-08 00:24:59 +01:00
  • 27fded7002 Unbreak signal delivery to userspace again. Andreas Kling 2018-11-08 00:07:56 +01:00
  • 1dbc340da8 Get rid of the undertaker and have waitpid() be the reaper. Andreas Kling 2018-11-07 23:59:49 +01:00
  • f792349853 Unbreak sys$sigreturn() after colonel process changes. Andreas Kling 2018-11-07 23:21:32 +01:00
  • 43f40a3050 Finally unbreak the colonel process and make it the true idle process. Andreas Kling 2018-11-07 23:13:38 +01:00
  • 440029c9d1 Reduce number of passes in the scheduler by 2. Andreas Kling 2018-11-07 22:24:20 +01:00
  • 39d2fcbbee Move the scheduler code to its own class. Andreas Kling 2018-11-07 22:15:02 +01:00
  • 6304c771dd Some refactor and style tweaks. Andreas Kling 2018-11-07 21:38:18 +01:00
  • 03a8357e84 Implement sending signals to blocked-in-kernel processes. Andreas Kling 2018-11-07 21:19:47 +01:00
  • c8b308910e Signals to processes in userspace now work again. Andreas Kling 2018-11-07 19:03:44 +01:00
  • dd887e158b Add a /proc/PID/regs that shows register state from the process's TSS. Andreas Kling 2018-11-07 18:40:29 +01:00
  • 678882e020 Rework process states to make a bit more sense. Andreas Kling 2018-11-07 18:30:59 +01:00
  • 71bffa9864 Fix whiny build. Andreas Kling 2018-11-07 16:38:45 +01:00
  • 61a84193d7 Fix some broken stuff in VFS test environment. Andreas Kling 2018-11-07 15:51:39 +01:00
  • 981a3ae4b3 Make VFS test environment build again. Andreas Kling 2018-11-07 12:05:51 +01:00
  • 83172e6a4b Rename FileHandle to FileDescriptor. Andreas Kling 2018-11-07 11:37:54 +01:00
  • e088121b3a Fix sys$sigaction() to return the old action metadata if requested. Andreas Kling 2018-11-07 10:48:44 +01:00
  • 0b3e927597 Oops, waitpid() was not passing the options parameter to the kernel. Andreas Kling 2018-11-07 10:46:48 +01:00
  • d7a41579e5 Miscellaneous compat work while seeing if GNU coreutils would build. Andreas Kling 2018-11-07 10:23:16 +01:00
  • a7f1d892a9 Add some basic setgroups(), getgroups() and initgroups(). Andreas Kling 2018-11-07 01:38:51 +01:00
  • d3bd3791cb Minor fixes in getgrent() and getpwent() function families. Andreas Kling 2018-11-07 00:32:38 +01:00
  • 8135952832 Add a Chomp feature to String construction that removes a trailing newline. Andreas Kling 2018-11-07 00:19:35 +01:00
  • 90bab5ea71 Add getgrent() family of functions. Andreas Kling 2018-11-06 22:27:51 +01:00
  • e5e0bffd76 Add getwd(). Andreas Kling 2018-11-06 15:59:57 +01:00
  • 7c3746592b Add strsignal() and improve sharing signal numbers between LibC and kernel. Andreas Kling 2018-11-06 15:45:16 +01:00
  • 8d1f8b2518 Add sys_nerr and sys_errlist. Andreas Kling 2018-11-06 14:13:16 +01:00
  • b2d23f83ab Add umask(). Andreas Kling 2018-11-06 13:40:23 +01:00
  • 77fe8e8363 Add getppid(). Andreas Kling 2018-11-06 13:33:06 +01:00
  • 3024167cbd Change syscall naming scheme. Andreas Kling 2018-11-06 13:23:22 +01:00
  • 46f0c28a4a Add sigset_t helper functions to LibC. Andreas Kling 2018-11-06 12:02:58 +01:00
  • 153ea704af Add some basic signal support. Andreas Kling 2018-11-06 10:46:40 +01:00
  • 52d502e11f Remove some no longer used files. Andreas Kling 2018-11-05 19:20:10 +01:00
  • 9f2b9c82bf More work towards getting bash to build. Andreas Kling 2018-11-05 19:01:22 +01:00
  • 82f84bab11 More random compat hacking towards getting bash to build. Andreas Kling 2018-11-05 18:16:00 +01:00
  • e76312ab63 Lots of minor compat stuff while seeing if bash would build. Andreas Kling 2018-11-05 16:40:48 +01:00
  • e4611248c4 Add geteuid() and getegid(). Andreas Kling 2018-11-05 15:04:19 +01:00
  • 60a8144b68 Add stub fflush(). Andreas Kling 2018-11-05 14:56:05 +01:00
  • 8039a20611 Tiny LibC things. Andreas Kling 2018-11-05 14:50:41 +01:00
  • 9e62eb4856 Only COW on fault if the physical page has retain_count > 1. Andreas Kling 2018-11-05 14:10:18 +01:00
  • 2d045d2a64 Implement COW pages! :^) Andreas Kling 2018-11-05 13:48:07 +01:00
  • e85c22fe58 Tidy up the page fault code a bit in preparation. Andreas Kling 2018-11-05 10:29:19 +01:00
  • 72cdc62155 Replace zones with individually tracked physical pages. Andreas Kling 2018-11-05 10:23:00 +01:00
  • b5c5286ee1 Tidy up ELFLoader. Andreas Kling 2018-11-04 14:09:30 +01:00
  • 422b5403e5 Merge ExecSpace into ELFLoader. Andreas Kling 2018-11-04 13:52:53 +01:00
  • d90b891406 Remove bootstrapping code from ELFLoader. Andreas Kling 2018-11-04 13:42:44 +01:00
  • 9bd09454e3 Mark LibC's assertion faillure helper with __NORETURN. Andreas Kling 2018-11-04 13:13:57 +01:00
  • 8b4b684d6d Move assertion failures out-of-line to reduce binary bloat. Andreas Kling 2018-11-04 13:12:58 +01:00
  • 7fe4063323 Region::clone() should share the zone if it's read-only. Andreas Kling 2018-11-03 23:20:49 +01:00
  • da13c9a264 Map pages in read-only ELF sections as non-writable. Andreas Kling 2018-11-03 11:36:45 +01:00
  • aa6d06b47e Use ELF program headers to load executables smarter. Andreas Kling 2018-11-03 11:28:23 +01:00
  • dd060d0fa8 Share code between spawn() and exec() implementations. Andreas Kling 2018-11-03 10:49:13 +01:00
  • c5eec9cbfc Factor out the "non-syscall" parts of sys$execve() into exec(). Andreas Kling 2018-11-03 10:20:23 +01:00
  • 8f51f0e6b2 ELFLoader: Add program header support. Andreas Kling 2018-11-03 10:11:56 +01:00
  • 20fb1fc377 Fix some bugs in execve() and make sh use it for process launching. Andreas Kling 2018-11-03 02:04:36 +01:00
  • 202bdb553c Implemented sys$execve(). Andreas Kling 2018-11-03 01:49:40 +01:00
  • b59ce22fc5 Fix dumb-but-hard-to-find bug in paging. Andreas Kling 2018-11-03 00:31:42 +01:00
  • 8accc92c3c Implement fork()! Andreas Kling 2018-11-02 20:41:58 +01:00
  • 10b666f69a Basic ^C interrupt implementation. Andreas Kling 2018-11-02 14:06:48 +01:00
  • 621217ffeb Add tcsetpgrp()+tcgetpgrp(). Andreas Kling 2018-11-02 13:14:25 +01:00
  • d8f0dd6f3b Start working on sessions and process groups. Andreas Kling 2018-11-02 12:56:51 +01:00
  • 05565bad58 Make IO helpers inline and use immediate-encoded ports when possible. Andreas Kling 2018-11-02 09:49:10 +01:00
  • 812e7940e2 Add a simple /proc/cpuinfo that includes some info from CPUID. Andreas Kling 2018-11-02 09:25:23 +01:00
  • 90ddbca127 Free physical pages allocated for a process's page directory on exit. Andreas Kling 2018-11-01 23:04:34 +01:00
  • c70afd045e Use a freelist for GDT entries. Andreas Kling 2018-11-01 16:23:12 +01:00
  • 9da4864a9a Oops, fix null termination bug in getpwent(). Andreas Kling 2018-11-01 16:20:22 +01:00
  • 3a901ae36d Way tighter locking in process creation. Andreas Kling 2018-11-01 14:41:49 +01:00
  • 52607aa086 Allow processes to go into a BeingInspected state (used by procfs.) Andreas Kling 2018-11-01 14:21:02 +01:00
  • dfaa2b6b02 Convert VirtualConsole to the new coding style. Andreas Kling 2018-11-01 14:09:21 +01:00
  • fd03776443 Add a /proc/PID/fds text files that lists all the fds open in a process. Andreas Kling 2018-11-01 14:00:28 +01:00
  • 065f0aee35 Preallocate the maximum number of FileHandle pointers (fds) in every process. Andreas Kling 2018-11-01 13:39:28 +01:00
  • fce81d376c Move Region and Subregion out of Process and make them free classes. Andreas Kling 2018-11-01 13:21:02 +01:00
  • 3e532ac7b6 Process now maps regions immediately when they are allocated. Andreas Kling 2018-11-01 13:15:46 +01:00
  • 4e60551aec Rename Task to Process. Andreas Kling 2018-11-01 13:10:12 +01:00
  • 8525cdd6a2 Fix crash when process spawn fails. Andreas Kling 2018-11-01 12:55:06 +01:00
  • c178d7a9e3 Remove some unused MM functions. Andreas Kling 2018-11-01 12:51:22 +01:00
  • 0f70b9105f Implement address validation by querying the task's page directory. Andreas Kling 2018-11-01 12:45:51 +01:00
  • f76fcd1e62 Do a bit less work in every context switch. Andreas Kling 2018-11-01 11:57:36 +01:00
  • 5891691640 Fix /proc/PID/stack in the new per-process page directory world. Andreas Kling 2018-11-01 11:44:21 +01:00
  • c45f166c63 More work on per-process page directories. It basically works now! Andreas Kling 2018-11-01 11:30:48 +01:00
  • 1da0a7c949 Give each task its own page directory. Andreas Kling 2018-11-01 09:01:51 +01:00
  • cddd2f37e9 Have sh print out which signal terminated a child process. Andreas Kling 2018-11-01 01:11:00 +01:00
  • a685809e75 Waiters should be notified when a waitee is killed. Andreas Kling 2018-11-01 01:04:02 +01:00
  • 9a086b2d35 Add a kmalloc_eternal() for things that will never be destroyed. Andreas Kling 2018-10-31 23:19:15 +01:00
  • d980ddc745 Fix busted display of tty names in /proc/summary. Andreas Kling 2018-10-31 22:43:49 +01:00
  • a8f36f72a8 printfing a number or string bigger than the field width should not crash. Andreas Kling 2018-10-31 22:40:10 +01:00
  • c7d5ce6b5a Add a /bin/tty command that prints the current tty. Andreas Kling 2018-10-31 21:45:36 +01:00
  • 4605b549d6 perror() should send output to stderr. Andreas Kling 2018-10-31 21:37:09 +01:00
  • 8f6998c902 Add SpinLock to IDE disk access. Andreas Kling 2018-10-31 21:31:56 +01:00
  • dec5683e9c Snazz up the kprintf() output a bit by giving it its own color. Andreas Kling 2018-10-31 20:10:39 +01:00
  • 9886b27d9c Add getpwent() family of functions to LibC. Andreas Kling 2018-10-31 19:49:22 +01:00
  • 819ce91395 Enough compatibility work to make figlet build and run! Andreas Kling 2018-10-31 17:50:43 +01:00
  • 69c7a59e6f Fix wrong allocation size used in opendir(). Andreas Kling 2018-10-31 17:25:24 +01:00