summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/shared_memory.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2018-08-29kernel: Eliminate kernel global stateLioncash1-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.
2018-08-25kernel/error: Add error code for invalid memory permissionsLioncash1-1/+1
2018-08-04kernel/thread: Fix potential crashes introduced in 26de4bb521b1ace7af76eff4f6956cb23ac0d58cLioncash1-13/+25
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).
2018-08-03core/memory: Get rid of 3DS leftoversLioncash1-49/+14
Removes leftover code from citra that isn't needed.
2018-07-31kernel: Remove unnecessary includesLioncash1-0/+2
Removes unnecessary direct dependencies in some headers and also gets rid of indirect dependencies that were being relied on to be included.
2018-07-19core/memory, core/hle/kernel: Use std::move where applicableLioncash1-3/+3
Avoids pointless copies
2018-07-03Update clang formatJames Rowe1-2/+2
2018-07-03Rename logging macro back to LOG_*James Rowe1-3/+3
2018-05-02general: Make formatting of logged hex values more straightforwardLioncash1-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).
2018-04-26kernel/shared_memory: Remove unnecessary semicolon at end of ConvertPermissions()Lioncash1-1/+1
Functions don't need to be terminated by semicolons.
2018-04-26kernel: Migrate logging macros to fmt-compatible onesLioncash1-7/+8
2018-04-03shared_memory: Remove incorrect 3ds-specific check.bunnei1-12/+0
2018-03-19Clang FixesN00byKing1-4/+3
2018-03-19More Warning cleanupsN00byKing1-1/+1
2018-03-19Clean Warnings (?)N00byKing1-3/+3
2018-03-14core: Move process creation out of global state.bunnei1-2/+3
2018-02-15shared_memory: Remove some checks.bunnei1-13/+0
2018-02-03svc: SharedMemory size should be 64-bits and cleanup.bunnei1-1/+1
2018-01-30shared_memory: Only mark addresses as invalid if they are within the heapshinyquagsire231-1/+2
2018-01-14shared_memory: Minor fixes and cleanup.bunnei1-6/+6
2017-10-02Kernel/SharedMemory: Don't take over and unmap the source memory block when creating a shared memory, just reference it.Subv1-15/+12
Also reference the right offset into the backing block for the requested address.
2017-09-30Fixed type conversion ambiguityHuw Pascoe1-1/+2
2017-06-22Memory: Make PhysicalToVirtualAddress return a boost::optionalYuri Kunde Schlesner1-1/+1
And fix a few places in the code to take advantage of that.
2017-05-25Kernel: Centralize error definitions in errors.hYuri Kunde Schlesner1-10/+6
2016-09-21Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner1-1/+1
2016-09-21Remove empty newlines in #include blocks.Emmanuel Gil Peyrot1-3/+1
This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
2016-09-19Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner1-4/+2
2016-09-18Sources: Run clang-format on everything.Emmanuel Gil Peyrot1-26/+49
2016-05-13HLE/Applets: Give each applet its own block of heap memory, and use that when creating the framebuffer shared memory block.Subv1-0/+17
2016-05-13Kernel: Account for automatically-allocated shared memories in the amount of used linear heap memory.Subv1-0/+5
2016-05-13Kernel/SharedMemory: Log an error when Map fails.Subv1-1/+10
2016-05-13Kernel: Implemented shared memory permissions.Subv1-9/+41
2016-05-13Kernel/SharedMemory: Properly implemented shared memory support.Subv1-57/+59
Applications can request the kernel to allocate a piece of the linear heap for them when creating a shared memory object. Shared memory areas are now properly mapped into the target processes when calling svcMapMemoryBlock. Removed the APT Shared Font hack as it is no longer needed.
2016-01-14HLE/SVC: Implement UnmapMemoryBlock.Subv1-0/+21
This implementation will need to be (almost completely) changed when we implement multiprocess support.
2015-08-27Core: Improve APT Shared Font hackYuri Kunde Schlesner1-2/+25
Should fix invalid read loops in some games
2015-05-15Memmap: Re-organize memory function in two filesYuri Kunde Schlesner1-1/+1
memory.cpp/h contains definitions related to acessing memory and configuring the address space mem_map.cpp/h contains higher-level definitions related to configuring the address space accoording to the kernel and allocating memory.
2015-05-11Kernel: Zero-fill shared memory blocks when mappingYuri Kunde Schlesner1-0/+8
This works around crashes related to GSP/HID/etc. shared memory blocks having garbage values. The proper fix requires proper management of mapped memory blocks in the process.
2015-05-11Kernel: Capture SharedMemory attributes at creation, not when mappingYuri Kunde Schlesner1-9/+11
2015-05-07Common: Remove common.hYuri Kunde Schlesner1-1/+1
2015-04-09Initialize base address to 0x0Gareth Higgins1-0/+1
2015-02-02Kernel: Stop creating useless Handles during object creationYuri Kunde Schlesner1-5/+3
They're finally unnecessary, and will stop cluttering the application's handle table.
2015-02-02Explicitly instantiate constructors/destructors for Kernel objectsYuri Kunde Schlesner1-0/+3
This should speed up compile times a bit, as well as enable more liberal use of forward declarations. (Due to SharedPtr not trying to emit the destructor anymore.)
2015-02-02Kernel: Introduce unique Object ids for debuggingYuri Kunde Schlesner1-3/+3
2015-01-30shared_memory: Fix assignments in SharedMemory::MapLioncash1-3/+3
2015-01-30Kernel: Convert SharedMemory to not use HandlesYuri Kunde Schlesner1-47/+18
2015-01-30Kernel: Remove useless/duplicated comments; mark functions staticYuri Kunde Schlesner1-9/+1
2015-01-09Kernel: Start using boost::intrusive_ptr for lifetime managementYuri Kunde Schlesner1-2/+2
2014-12-28Kernel: New handle managerYuri Kunde Schlesner1-1/+2
This handle manager more closely mirrors the behaviour of the CTR-OS one. In addition object ref-counts and support for DuplicateHandle have been added. Note that support for DuplicateHandle is still experimental, since parts of the kernel still use Handles internally, which will likely cause troubles if two different handles to the same object are used to e.g. wait on a synchronization primitive.
2014-12-28Kernel: Replace GetStaticHandleType by HANDLE_TYPE constantsYuri Kunde Schlesner1-2/+2
2014-12-28Rename ObjectPool to HandleTableYuri Kunde Schlesner1-3/+3
2014-12-21License changepurpasmart961-1/+1
2014-12-13Convert old logging calls to new logging macrosYuri Kunde Schlesner1-8/+2
2014-11-24Remove duplicated docs/update them for changed parameters.Yuri Kunde Schlesner1-16/+0
2014-11-24HLE: Revamp error handling throrough the HLE codeYuri Kunde Schlesner1-12/+15
All service calls in the CTR OS return result codes indicating the success or failure of the call. Previous to this commit, Citra's HLE emulation of services and the kernel universally either ignored errors or returned dummy -1 error codes. This commit makes an initial effort to provide an infrastructure for error reporting and propagation which can be use going forward to make HLE calls accurately return errors as the original system. A few parts of the code have been updated to use the new system where applicable. One part of this effort is the definition of the `ResultCode` type, which provides facilities for constructing and parsing error codes in the structured format used by the CTR. The `ResultVal` type builds on `ResultCode` by providing a container for values returned by function that can report errors. It enforces that correct error checking will be done on function returns by preventing the use of the return value if the function returned an error code. Currently this change is mostly internal since errors are still suppressed on the ARM<->HLE border, as a temporary compatibility hack. As functionality is implemented and tested this hack can be eventually removed.
2014-11-19Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generatedEmmanuel Gil Peyrot1-2/+2
2014-11-14Fix two format strings.Lioncash1-1/+1
2014-10-26Add `override` keyword through the code.Yuri Kunde Schlesner1-3/+3
This was automated using `clang-modernize`.
2014-08-18Core: Alter the kernel string functions to use std::string instead of const char*.Lioncash1-1/+1
Most functions already operate on std::strings. This also removes the need to manually null terminate thread names.
2014-07-05SharedMemory: Updated MapSharedMemory to use an enum for permissions.bunnei1-5/+16
- Also added some safety checks to MapSharedMemory.
2014-07-05Kernel: Added support for shared memory objects.bunnei1-0/+94
SharedMemory: Added optional name field for tracking known objects.