1. 02 Dec, 2018 2 commits
    • Lioncash's avatar
      svc: Use the current process' handle table for retrieving the process instance to act upon · 7fe27de2
      Lioncash authored
      The kernel uses the handle table of the current process to retrieve the
      process that should be used to retrieve certain information. To someone
      not familiar with the kernel, this might raise the question of "Ok,
      sounds nice, but doesn't this make it impossible to retrieve information
      about the current process?".
      
      No, it doesn't, because HandleTable instances in the kernel have the
      notion of a "pseudo-handle", where certain values allow the kernel to
      lookup objects outside of a given handle table. Currently, there's only
      a pseudo-handle for the current process (0xFFFF8001) and a pseudo-handle
      for the current thread (0xFFFF8000), so to retrieve the current process,
      one would just pass 0xFFFF8001 into svcGetInfo.
      
      The lookup itself in the handle table would be something like:
      
      template <typename T>
      T* Lookup(Handle handle) {
          if (handle == PSEUDO_HANDLE_CURRENT_PROCESS) {
              return CurrentProcess();
          }
      
          if (handle == PSUEDO_HANDLE_CURRENT_THREAD) {
              return CurrentThread();
          }
      
          return static_cast<T*>(&objects[handle]);
      }
      
      which, as is shown, allows accessing the current process or current
      thread, even if those two objects aren't actually within the HandleTable
      instance.
      7fe27de2
    • Lioncash's avatar
      svc: Reorganize svcGetInfo, handle more error cases for existing implemented info categories · 6712e740
      Lioncash authored
      Our implementation of svcGetInfo was slightly incorrect in that we
      weren't doing proper error checking everywhere. Instead, reorganize it
      to be similar to how the kernel seems to do it.
      6712e740
  2. 01 Dec, 2018 1 commit
    • Lioncash's avatar
      Fix debug build · e88cdcc9
      Lioncash authored
      A non-existent parameter was left in some formatting calls (the logging
      macro for which only does anything meaningful on debug builds)
      e88cdcc9
  3. 30 Nov, 2018 4 commits
  4. 29 Nov, 2018 2 commits
  5. 28 Nov, 2018 8 commits
  6. 27 Nov, 2018 23 commits