summaryrefslogtreecommitdiff
path: root/src/core (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | | kernel/svc: Implement svcGetThreadListGravatar Lioncash2019-04-024-1/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similarly like svcGetProcessList, this retrieves the list of threads from the current process. In the kernel itself, a process instance maintains a list of threads, which are used within this function. Threads are registered to a process' thread list at thread initialization, and unregistered from the list upon thread destruction (if said thread has a non-null owning process). We assert on the debug event case, as we currently don't implement kernel debug objects.
| * | | | | | | kernel/svc: Implement svcGetProcessListGravatar Lioncash2019-04-024-1/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This service function simply copies out a specified number of kernel process IDs, while simultaneously reporting the total number of processes.
* | | | | | | | Merge pull request #2313 from lioncash/reslimitGravatar bunnei2019-04-023-14/+6
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | kernel/resource_limit: Remove the name member from resource limits
| * | | | | | | kernel/resource_limit: Remove the name member from resource limitsGravatar Lioncash2019-04-013-14/+6
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This doesn't really provide any benefit to the resource limit interface. There's no way for callers to any of the service functions for resource limits to provide a custom name, so all created instances of resource limits other than the system resource limit would have a name of "Unknown". The system resource limit itself is already trivially identifiable from its limit values, so there's no real need to take up space in the object to identify one object meaningfully out of N total objects.
* | | | | | | process: Fix up compilationGravatar ReinUsesLisp2019-04-021-1/+1
| | | | | | |
* | | | | | | Merge pull request #2281 from lioncash/memoryGravatar bunnei2019-04-015-7/+8
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | kernel/codeset: Make CodeSet's memory data member a regular std::vector
| * | | | | | kernel/codeset: Make CodeSet's memory data member a regular std::vectorGravatar Lioncash2019-03-225-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The use of a shared_ptr is an implementation detail of the VMManager itself when mapping memory. Because of that, we shouldn't require all users of the CodeSet to have to allocate the shared_ptr ahead of time. It's intended that CodeSet simply pass in the required direct data, and that the memory manager takes care of it from that point on. This means we just do the shared pointer allocation in a single place, when loading modules, as opposed to in each loader.
* | | | | | | Merge pull request #2301 from FearlessTobi/remove-amiibo-settingGravatar bunnei2019-04-013-3/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | core/yuzu: Remove enable_nfc setting
| * | | | | | | core/yuzu: Remove enable_nfc settingGravatar fearlessTobi2019-03-293-3/+1
| | |_|/ / / / | |/| | | | | | | | | | | | | | | | | | | This was initially added to prevent problems from stubbed/not implemented NFC services, but as we never encountered such and as it's only used in a deprecated function anyway, I guess we can just remove it to prevent more clutter of the settings.
* | | | | | | general: Use deducation guides for std::lock_guard and std::unique_lockGravatar Lioncash2019-04-016-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since C++17, the introduction of deduction guides for locking facilities means that we no longer need to hardcode the mutex type into the locks themselves, making it easier to switch mutex types, should it ever be necessary in the future.
* | | | | | | Merge pull request #2304 from lioncash/memsizeGravatar bunnei2019-03-303-9/+28
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | kernel/process: Report total physical memory used to svcGetInfo slightly better
| * | | | | | | kernel/process: Report total physical memory used to svcGetInfoGravatar Lioncash2019-03-283-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reports the (mostly) correct size through svcGetInfo now for queries to total used physical memory. This still doesn't correctly handle memory allocated via svcMapPhysicalMemory, however, we don't currently handle that case anyways.
| * | | | | | | kernel/process: Store the total size of the code memory loadedGravatar Lioncash2019-03-282-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will be necessary to properly report the used memory size in svcGetInfo.
| * | | | | | | kernel/process: Store the main thread stack size to a data memberGravatar Lioncash2019-03-282-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will be necessary in order to properly report memory usage within svcGetInfo.
| * | | | | | | kernel/process: Make Run's stack size parameter a u64Gravatar Lioncash2019-03-282-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will make operating with the process-related SVC commands much nicer in the future (the parameter representing the stack size in svcStartProcess is a 64-bit value).
| * | | | | | | kernel/process: Ensure that given stack size is always page-alignedGravatar Lioncash2019-03-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The kernel always makes sure that the given stack size is aligned to page boundaries.
* | | | | | | | Merge pull request #2308 from lioncash/deductionGravatar bunnei2019-03-303-12/+12
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | kernel/scheduler: Minor tidying up
| * | | | | | | | kernel/scheduler: Remove unused parameter to AddThread()Gravatar Lioncash2019-03-303-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was made unused in b404fcdf1443b91ac9994c05ad1fe039fcd9675e, but the parameter itself wasn't removed.
| * | | | | | | | kernel/scheduler: Use deduction guides on mutex locksGravatar Lioncash2019-03-301-8/+8
| | |_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since C++17, we no longer need to explicitly specify the type of the mutex within the lock_guard. The type system can now deduce these with deduction guides.
* | | | | | | | service/fatal: Mark local variables as const where applicableGravatar Lioncash2019-03-301-6/+6
| | | | | | | |
* | | | | | | | service/fatal: Remove unnecessary semicolonGravatar Lioncash2019-03-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolves a -Wextra-semi warning.
* | | | | | | | service/fatal: Name FatalInfo structure membersGravatar Lioncash2019-03-301-31/+44
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based off RE, most of these structure members are register values, which makes, sense given this service is used to convey fatal errors. One member indicates the program entry point address, one is a set of bit flags used to determine which registers to print, and one member indicates the architecture type. The only member that still isn't determined is the final member within the data structure.
* | | | | | | Merge pull request #2266 from FernandoS27/arbitrationGravatar bunnei2019-03-285-14/+18
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Kernel: Fixes to Arbitration and SignalProcessWideKey Management
| * | | | | | | Fix small bug that kept a thread as a condvar thread after being signalled.Gravatar Fernando Sahmkow2019-03-192-6/+8
| | | | | | | |
| * | | | | | | Add CondVar Thread State.Gravatar Fernando Sahmkow2019-03-194-4/+6
| | | | | | | |
| * | | | | | | Small fixes to address_arbiter to better match the IDB.Gravatar Fernando Sahmkow2019-03-192-5/+5
| | | | | | | |
* | | | | | | | Merge pull request #2265 from FernandoS27/multilevelqueueGravatar bunnei2019-03-282-19/+27
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | Replace old Thread Queue for a new Multi Level Queue
| * | | | | | | Fixes and corrections on formatting.Gravatar Fernando Sahmkow2019-03-271-6/+9
| | | | | | | |
| * | | | | | | Use MultiLevelQueue instead of old ThreadQueueListGravatar Fernando Sahmkow2019-03-272-19/+24
| | |/ / / / / | |/| | | | |
* | | | | | | Merge pull request #2284 from lioncash/heap-allocGravatar bunnei2019-03-283-59/+81
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | kernel/vm_manager: Unify heap allocation/freeing functions
| * | | | | | kernel/vm_manager: Handle shrinking of the heap size within SetHeapSize()Gravatar Lioncash2019-03-242-24/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One behavior that we weren't handling properly in our heap allocation process was the ability for the heap to be shrunk down in size if a larger size was previously requested. This adds the basic behavior to do so and also gets rid of HeapFree, as it's no longer necessary now that we have allocations and deallocations going through the same API function. While we're at it, fully document the behavior that this function performs.
| * | | | | | kernel/vm_manager: Rename HeapAllocate to SetHeapSizeGravatar Lioncash2019-03-243-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makes it more obvious that this function is intending to stand in for the actual supervisor call itself, and not acting as a general heap allocation function. Also the following change will merge the freeing behavior of HeapFree into this function, so leaving it as HeapAllocate would be misleading.
| * | | | | | kernel/vm_manager: Handle case of identical calls to HeapAllocateGravatar Lioncash2019-03-241-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cases where HeapAllocate is called with the same size of the current heap, we can simply do nothing and return successfully. This avoids doing work where we otherwise don't have to. This is also what the kernel itself does in this scenario.
| * | | | | | kernel/vm_manager: Remove unused class variablesGravatar Lioncash2019-03-241-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Over time these have fallen out of use due to refactoring, so these can be removed.
| * | | | | | kernel/vm_manager: Remove unnecessary heap_used data memberGravatar Lioncash2019-03-243-13/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This isn't required anymore, as all the kernel ever queries is the size of the current heap, not the total usage of it.
| * | | | | | kernel/vm_manager: Tidy up heap allocation codeGravatar Lioncash2019-03-243-27/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Another holdover from citra that can be tossed out is the notion of the heap needing to be allocated in different addresses. On the switch, the base address of the heap will always be managed by the memory allocator in the kernel, so this doesn't need to be specified in the function's interface itself. The heap on the switch is always allocated with read/write permissions, so we don't need to add specifying the memory permissions as part of the heap allocation itself either. This also corrects the error code returned from within the function. If the size of the heap is larger than the entire heap region, then the kernel will report an out of memory condition.
* | | | | | | Merge pull request #2285 from lioncash/unused-structGravatar bunnei2019-03-261-8/+0
|\ \ \ \ \ \ \ | |_|_|_|/ / / |/| | | | | | kernel/process: Remove unused AddressMapping struct
| * | | | | | kernel/process: Remove unused AddressMapping structGravatar Lioncash2019-03-241-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Another leftover from citra that's now no longer necessary.
* | | | | | | Merge pull request #2287 from lioncash/coretiming-cbGravatar bunnei2019-03-256-11/+11
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | core/core_timing: Make callback parameters consistent
| * | | | | | | core/core_timing: Make callback parameters consistentGravatar Lioncash2019-03-246-11/+11
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In some cases, our callbacks were using s64 as a parameter, and in other cases, they were using an int, which is inconsistent. To make all callbacks consistent, we can just use an s64 as the type for late cycles, given it gets rid of the need to cast internally. While we're at it, also resolve some signed/unsigned conversions that were occurring related to the callback registration.
* | | | | | | Merge pull request #2286 from lioncash/fwdGravatar bunnei2019-03-251-3/+0
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | kernel/kernel: Remove unnecessary forward declaration
| * | | | | | | kernel/kernel: Remove unnecessary forward declarationGravatar Lioncash2019-03-241-3/+0
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is no longer necessary, as ResultVal isn't used anywhere in the header.
* / / / / / / core/cheat_engine: Make MemoryReadImpl and MemoryWriteImpl internally linkedGravatar Lioncash2019-03-241-0/+2
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | These don't need to be visible outside of the translation unit, so they can be enclosed within an anonymous namespace.
* | | | | | Merge pull request #2232 from lioncash/transfer-memoryGravatar bunnei2019-03-246-6/+282
|\ \ \ \ \ \ | |/ / / / / |/| | | | | core/hle/kernel: Split transfer memory handling out into its own class
| * | | | | core/hle/kernel/svc: Implement svcUnmapTransferMemoryGravatar Lioncash2019-03-131-1/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similarly, like svcMapTransferMemory, we can also implement svcUnmapTransferMemory fairly trivially as well.
| * | | | | core/hle/kernel/svc: Implement svcMapTransferMemoryGravatar Lioncash2019-03-131-1/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that transfer memory handling is separated from shared memory, we can implement svcMapTransferMemory pretty trivially.
| * | | | | core/hle/kernel: Split transfer memory handling out into its own classGravatar Lioncash2019-03-136-4/+177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Within the kernel, shared memory and transfer memory facilities exist as completely different kernel objects. They also have different validity checking as well. Therefore, we shouldn't be treating the two as the same kind of memory. They also differ in terms of their behavioral aspect as well. Shared memory is intended for sharing memory between processes, while transfer memory is intended to be for transferring memory to other processes. This breaks out the handling for transfer memory into its own class and treats it as its own kernel object. This is also important when we consider resource limits as well. Particularly because transfer memory is limited by the resource limit value set for it. While we currently don't handle resource limit testing against objects yet (but we do allow setting them), this will make implementing that behavior much easier in the future, as we don't need to distinguish between shared memory and transfer memory allocations in the same place.
* | | | | | Merge pull request #2221 from DarkLordZach/firmware-versionGravatar bunnei2019-03-237-3/+154
|\ \ \ \ \ \ | | | | | | | | | | | | | | set_sys: Implement GetFirmwareVersion(2) for libnx hosversion
| * | | | | | set_sys: Move constants to anonymous namespaceGravatar Zach Hilman2019-03-111-1/+1
| | | | | | |
| * | | | | | set_sys: Use official nintendo version stringGravatar Zach Hilman2019-03-104-19/+25
| | | | | | |