Skip to content
Permalink
Branch: master
Commits on Mar 22, 2019
  1. Get demangled symbolication working for both ELF32 and ELF64.

    foxostro committed Mar 22, 2019
    * Implement strtol(), with tests.
    * Extract symbolication code to new Symbolicator class.
Commits on Mar 21, 2019
  1. Symbolicate backtraces using the kernel symbol table.

    foxostro committed Mar 21, 2019
    * Substantial code clean up is necessary. Consider this a prototype.
    * Demangling of C++ names fails because strtol() is a stub.
    * Crashes on x86_64 because it doesn't handle ELF64.
  2. Build the kernel with SSE instructions enabled.

    foxostro committed Mar 21, 2019
    The compiler will now use SSE instructions when compiling code like string
    manipulation routines,
  3. Need to initialize SSE immediately on x86_64 so the C++ kernel can be…

    foxostro committed Mar 21, 2019
    … built to use those instructions.
Commits on Mar 20, 2019
  1. StackWalker can convey the symbol name to the trace function.

    foxostro committed Mar 20, 2019
    This is currently unimplemented and always returns NULL.
  2. Reimplement backtrace() in terms of _Unwind_Backtrace().

    foxostro committed Mar 20, 2019
    Remove get_frame_pointer() entirely as it is now obsolete.
  3. PanicKernel prepares the backtrace itself.

    foxostro committed Mar 20, 2019
    This avoids printing the backtrace to the global logger.
  4. Thread parameter is a void*.

    foxostro committed Mar 20, 2019
Commits on Mar 19, 2019
Commits on Mar 18, 2019
  1. Add a yield() to the "a" thread.

    foxostro committed Mar 18, 2019
    The A and B threads now ping pong back and forth for a better context
    switch demonstration.
  2. Scheduler::ThreadPointer uses the default lock now.

    foxostro committed Mar 18, 2019
    This is an InterruptLock now, but could be something like a SpinLock in
    the future.
  3. The physical memory map uses InterruptLock instead of Mutex.

    foxostro committed Mar 18, 2019
    The kernel must be careful about how and when it uses mutex locks which
    interact with the scheduler. Using an interrupt lock allows these
    objects to be used from within scheduler and interrupt context.
    
    The latter will certainly be important.
  4. Malloc uses InterruptLock by default instead of Mutex.

    foxostro committed Mar 18, 2019
    The kernel must be careful about how and when it uses mutex locks which
    interact with the scheduler. Using an InterruptLock here permits us to
    use this allocator before the scheduler has been initialized, from
    within the scheduler, and from interrupt context.
    
    Though, these may not be good ideas. It merely makes it possible.
  5. UniquePointer uses InterruptLock by default instead of Mutex.

    foxostro committed Mar 18, 2019
    The kernel must be careful about how and when it uses mutex locks which
    interact with the scheduler. This is not a good default choice.
  6. SharedPointer uses InterruptLock by default instead of Mutex.

    foxostro committed Mar 18, 2019
    The kernel must be careful about how and when it uses mutex locks which
    interact with the scheduler. This is not a good default choice.
  7. TextTerminal uses an InterruptLock now.

    foxostro committed Mar 18, 2019
    This allows us to use the logger before the scheduler has been initialized,
    and from within the scheduler itself, and from within interrupt context.
  8. Scheduler spit into unlocked scheduler and monitor.

    foxostro committed Mar 18, 2019
    The monitor also ensures there are no reentrant scheduler calls.
  9. All methods in Scheduler are marked noexcept.

    foxostro committed Mar 18, 2019
    When handling an exception, we do not want that exception to cross the
    scheduler's interface boundary.
Older
You can’t perform that action at this time.