aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/shared_memory.cpp
Commit message (Collapse)AuthorAgeFilesLines
* hle: kernel: Rename SharedMemory to KSharedMemory.bunnei2021-02-181-66/+0
|
* kernel: More accurately reserve and release resourcesameerj2021-02-121-1/+3
|
* kernel: KScopedReservation implementationameerj2021-02-121-0/+7
| | | | This implements KScopedReservation, allowing resource limit reservations to be more HW accurate, and release upon failure without requiring too many conditionals.
* shared_memory: Amend doxygen referenceLioncash2020-04-231-4/+4
| | | | | | Amends the parameter to match the documentation reference. Resolves a -Wdocumentation warning with clang.
* core: hle: Address various feedback & code cleanup.bunnei2020-04-171-2/+2
| | | | - Should be no functional changes.
* kernel: shared_memory: Refactor for new VMM.bunnei2020-04-171-122/+29
|
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for ↵bunnei2019-11-241-7/+8
| | | | | | | | kernel objects. (#3154) * kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. - See https://github.com/citra-emu/citra/pull/4710 for details.
* Kernel: Address FeedbackFernando Sahmkow2019-07-191-2/+2
|
* VM_Manager: Align allocated memory to 256bytesFernando Sahmkow2019-07-191-2/+2
| | | | | | This commit ensures that all backing memory allocated for the Guest CPU is aligned to 256 bytes. This due to how gpu memory works and the heavy constraints it has in the alignment of physical memory.
* kernel/shared_memory: Remove unused core/memory.h includeLioncash2019-03-291-1/+0
| | | | | Nothing from this header is used, so we can remove this include, getting rid of a dependency on it.
* kernel/shared_memory: Sanitize supplied size when unmappingLioncash2019-03-291-1/+9
| | | | | | | | The kernel makes sure that the given size to unmap is always the same size as the entire region managed by the shared memory instance, otherwise it returns an error code signifying an invalid size. This is similarly done for transfer memory (which we already check for).
* kernel/shared_memory: Get rid of the use of global accessor functions within ↵Lioncash2019-03-041-3/+2
| | | | | | | | | | Create() Given we already pass in a reference to the kernel that the shared memory instance is created under, we can just use that to check the current process, rather than using the global accessor functions. This allows removing direct dependency on the system instance entirely.
* Fix Process object leak on emulation stopJens Schmer2018-12-121-3/+3
| | | | | | | | The Process object kept itself alive indefinitely because its handle_table contains a SharedMemory object which owns a reference to the same Process object, creating a circular ownership scenario. Break that up by storing only a non-owning pointer in the SharedMemory object.
* vm_manager: Make vma_map privateLioncash2018-12-061-4/+4
| | | | | | | | | | | This was only ever public so that code could check whether or not a handle was valid or not. Instead of exposing the object directly and allowing external code to potentially mess with the map contents, we just provide a member function that allows checking whether or not a handle is valid. This makes all member variables of the VMManager class private except for the page table.
* kernel/shared_memory: Make Map() and Unmap() take the target process by ↵Lioncash2018-11-191-7/+7
| | | | | | | | reference rather than as a pointer Both member functions assume the passed in target process will not be null. Instead of making this assumption implicit, we can change the functions to be references and enforce this at the type-system level.
* kernel/shared_memory: Add a const qualified member function overload for ↵Lioncash2018-11-191-0/+4
| | | | | | | GetPointer() Given this doesn't mutate instance state, we can provide a const-qualified variant as well.
* kernel/shared_memory: Use 64-bit types for offset and size in CreateForAppletLioncash2018-11-191-1/+1
| | | | Keeps the interface consistent with the regular Create() function.
* kernel/shared_memory: Make GetPointer() take a std::size_t instead of a u32Lioncash2018-11-191-1/+1
| | | | | | | Makes the interface nicer to use in terms of 64-bit code, as it makes it less likely for one to get truncation warnings (and also makes sense in the context of the rest of the interface where 64-bit types are used for sizes and offsets
* kernel/shared_memory: Return ERR_INVALID_MEMORY_PERMISSIONS instead of ↵Lioncash2018-10-241-4/+3
| | | | | | ERR_INVALID_COMBINATION This is more consistent with what the kernel does.
* kernel/process: Make data member variables privateLioncash2018-09-301-7/+7
| | | | | | | Makes the public interface consistent in terms of how accesses are done on a process object. It also makes it slightly nicer to reason about the logic of the process class, as we don't want to expose everything to external code.
* memory: Dehardcode the use of fixed memory range constantsLioncash2018-09-241-1/+3
| | | | | | | | The locations of these can actually vary depending on the address space layout, so we shouldn't be using these when determining where to map memory or be using them as offsets for calculations. This keeps all the memory ranges flexible and malleable based off of the virtual memory manager instance state.
* kernel: Eliminate kernel global stateLioncash2018-08-281-11/+9
| | | | | | | | | | | | | | | | | | | | | | As means to pave the way for getting rid of global state within core, This eliminates kernel global state by removing all globals. Instead this introduces a KernelCore class which acts as a kernel instance. This instance lives in the System class, which keeps its lifetime contained to the lifetime of the System class. This also forces the kernel types to actually interact with the main kernel instance itself instead of having transient kernel state placed all over several translation units, keeping everything together. It also has a nice consequence of making dependencies much more explicit. This also makes our initialization a tad bit more correct. Previously we were creating a kernel process before the actual kernel was initialized, which doesn't really make much sense. The KernelCore class itself follows the PImpl idiom, which allows keeping all the implementation details sealed away from everything else, which forces the use of the exposed API and allows us to avoid any unnecessary inclusions within the main kernel header.
* kernel/error: Add error code for invalid memory permissionsLioncash2018-08-251-1/+1
|
* kernel/thread: Fix potential crashes introduced in ↵Lioncash2018-08-031-13/+25
| | | | | | | | 3bcf090d37e20e0096954c478179487d071bb37b This amends cases where crashes can occur that were missed due to the odd way the previous code was set up (using 3DS memory regions that don't exist).
* core/memory: Get rid of 3DS leftoversLioncash2018-08-031-49/+14
| | | | Removes leftover code from citra that isn't needed.
* kernel: Remove unnecessary includesLioncash2018-07-311-0/+2
| | | | | Removes unnecessary direct dependencies in some headers and also gets rid of indirect dependencies that were being relied on to be included.
* core/memory, core/hle/kernel: Use std::move where applicableLioncash2018-07-181-3/+3
| | | | Avoids pointless copies
* Update clang formatJames Rowe2018-07-021-2/+2
|
* Rename logging macro back to LOG_*James Rowe2018-07-021-3/+3
|
* general: Make formatting of logged hex values more straightforwardLioncash2018-05-021-3/+3
| | | | | | This makes the formatting expectations more obvious (e.g. any zero padding specified is padding that's entirely dedicated to the value being printed, not any pretty-printing that also gets tacked on).
* kernel/shared_memory: Remove unnecessary semicolon at end of ↵Lioncash2018-04-251-1/+1
| | | | | | ConvertPermissions() Functions don't need to be terminated by semicolons.
* kernel: Migrate logging macros to fmt-compatible onesLioncash2018-04-251-7/+8
|
* shared_memory: Remove incorrect 3ds-specific check.bunnei2018-04-021-12/+0
|
* Clang FixesN00byKing2018-03-191-4/+3
|
* More Warning cleanupsN00byKing2018-03-191-1/+1
|
* Clean Warnings (?)N00byKing2018-03-191-3/+3
|
* core: Move process creation out of global state.bunnei2018-03-141-2/+3
|
* shared_memory: Remove some checks.bunnei2018-02-141-13/+0
|
* svc: SharedMemory size should be 64-bits and cleanup.bunnei2018-02-031-1/+1
|
* shared_memory: Only mark addresses as invalid if they are within the heapshinyquagsire232018-01-291-1/+2
|
* shared_memory: Minor fixes and cleanup.bunnei2018-01-141-6/+6
|
* Kernel/SharedMemory: Don't take over and unmap the source memory block when ↵Subv2017-10-021-15/+12
| | | | | | creating a shared memory, just reference it. Also reference the right offset into the backing block for the requested address.
* Fixed type conversion ambiguityHuw Pascoe2017-09-301-1/+2
|
* Memory: Make PhysicalToVirtualAddress return a boost::optionalYuri Kunde Schlesner2017-06-211-1/+1
| | | | And fix a few places in the code to take advantage of that.
* Kernel: Centralize error definitions in errors.hYuri Kunde Schlesner2017-05-241-10/+6
|
* Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner2016-09-211-1/+1
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-3/+1
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner2016-09-181-4/+2
|
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-26/+49
|
* HLE/Applets: Give each applet its own block of heap memory, and use that ↵Subv2016-05-121-0/+17
| | | | when creating the framebuffer shared memory block.