1. 01 Sep, 2018 1 commit
    • Jonas Termansen's avatar
      Don't unblock SIGABRT in abort(3) before calling raise(SIGABRT). · 58374214
      Jonas Termansen authored
      The language in POSIX mentioning overriding blocking or ignoring SIGABRT
      refers to the inevitability of exiting by SIGABRT if SIGABRT isn't caught or
      if the handler does return.
      
      This implementation of abort(3) implements the standard by raising SIGABRT,
      allowing the signal to be caught; and if the signal is blocked or ignored or
      the handler returns, then exit_thread(2) forcefully exits the process as if
      by SIGABRT.
      58374214
  2. 06 Aug, 2018 1 commit
    • Jonas Termansen's avatar
      Fix <fcntl.h> including <sys/stat.h> namespace pollution. · 29555d72
      Jonas Termansen authored
      POSIX allows <fcntl.h> to include <sys/stat.h>, but doesn't require it.
      There's little reason to do that, since they are separate headers, and
      <fcntl.h> just needs the mode_t constants. Fix the code accidentally
      relying on <fcntl.h> including <sys/stat.h>. The mode_t constants are now
      provided in their own kernel header <sortix/mode.h>.
      
      Additionally fix <sys/stat.h> pulling in all of <sys/types.h>, which is not
      allowed by POSIX, which only requires a few types to be declared. Fix the
      code accidentally relying on <sys/stat.h> including <sys/types.h>.
      
      Finally fix <dirent.h> pulling in <stdint.h> through <sortix/dirent.h>.
      
      The <sortix/__/dt.h> and <sortix/__/stat.h> headers are no longer required
      and their contents have been merged into <sortix/__/dirent.h>.
      29555d72
  3. 17 Jul, 2018 1 commit
  4. 08 Apr, 2018 1 commit
  5. 04 Feb, 2018 1 commit
  6. 04 Dec, 2017 2 commits
  7. 26 Aug, 2017 1 commit
  8. 20 Aug, 2017 5 commits
  9. 15 May, 2017 1 commit
  10. 09 Apr, 2017 1 commit
  11. 19 Mar, 2017 1 commit
  12. 18 Feb, 2017 1 commit
  13. 14 Feb, 2017 5 commits
  14. 12 Feb, 2017 1 commit
  15. 28 Dec, 2016 1 commit
  16. 27 Dec, 2016 1 commit
    • Jonas Termansen's avatar
      Revert "Add <limits.h>." · 0cf88fd5
      Jonas Termansen authored
      This reverts commit f6cde2d7.
      
      gcc detected this header existing and emitted its own limits.h that
      included the libc limits.h. This caused the #include_next chain to reach
      the end and including the header failed.
      
      Undoing this commit for now until the compiler toolchain is updated to
      avoid this problem.
      0cf88fd5
  17. 23 Nov, 2016 8 commits
  18. 22 Nov, 2016 1 commit
  19. 06 Nov, 2016 1 commit
  20. 30 Oct, 2016 2 commits
  21. 17 Oct, 2016 1 commit
  22. 03 Oct, 2016 2 commits
    • Jonas Termansen's avatar
      Seed kernel entropy with randomness from the previous boot. · 84c0844f
      Jonas Termansen authored
      The bootloader will now load the /boot/random.seed file if it exists, in
      which case the kernel will use it as the initial kernel entropy. The kernel
      warns if no random seed was loaded, unless the --no-random-seed option was
      given. This option is used for live environments that inherently have no
      prior secret state. The kernel initializes its entropy pool from the random
      seed as of the first things, so randomness is available very early on.
      
      init(8) will emit a fresh /boot/random.seed file on boot to avoid the same
      entropy being used twice. init(8) also writes out /boot/random.seed on
      system shutdown where the system has the most entropy. init(8) will warn if
      writing the file fails, except if /boot is a real-only filesystem, and
      keeping such state is impossible. The system administrator is then
      responsible for ensuring the bootloader somehow passes a fresh random seed
      on the next boot.
      
      /boot/random.seed must be owned by the root user and root group and must
      have file permissions 600 to avoid unprivileged users can read it. The file
      is passed to the kernel by the bootloader as a multiboot module with the
      command line --random-seed.
      
      If no random seed is loaded, the kernel attempts a poor quality fallback
      where it seeds the kernel arc4random(3) continuously with the current time.
      The timing variance may provide some effective entropy. There is no real
      kernel entropy gathering yet. The read of the CMOS real time clock is moved
      to an early point in the kernel boot, so the current time is available as
      fallback entropy.
      
      The kernel access of the random seed module is supposed to be infallible
      and happens before the kernel log is set up, but there is not yet a failsafe
      API for mapping single pages in the early kernel.
      
      sysupgrade(8) creates /boot/random.seed if it's absent as a temporary
      compatibility measure for people upgrading from the 1.0 release. The GRUB
      port will need to be upgraded with support for /boot/random.seed in the
      10_sortix script. Installation with manual bootloader configuration will
      need to load the random seed with the --random-seed command line. With GRUB,
      this can be done with: module /boot/random.seed --random-seed
      84c0844f
    • Jonas Termansen's avatar
      Add nl_langinfo(3). · 67471b55
      Jonas Termansen authored
      67471b55