summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/hle_ipc.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2018-08-31core/core: Replace includes with forward declarations where applicableLioncash1-0/+1
The follow-up to e2457418dae19b889b2ad85255bb95d4cd0e4bff, which replaces most of the includes in the core header with forward declarations. This makes it so that if any of the headers the core header was previously including change, then no one will need to rebuild the bulk of the core, due to core.h being quite a prevalent inclusion. This should make turnaround for changes much faster for developers.
2018-08-29kernel: Eliminate kernel global stateLioncash1-5/+12
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-09hle_ipc: Make WriteToOutgoingCommandBuffer()'s reference parameter constLioncash1-1/+1
This function doesn't modify anything within the reference Thread instance.
2018-08-02kernel: Move object class to its own source filesLioncash1-1/+5
General moving to keep kernel object types separate from the direct kernel code. Also essentially a preliminary cleanup before eliminating global kernel state in the kernel code.
2018-07-31kernel: Remove unnecessary includesLioncash1-0/+1
Removes unnecessary direct dependencies in some headers and also gets rid of indirect dependencies that were being relied on to be included.
2018-07-20thread: Convert ThreadStatus into an enum classLioncash1-2/+2
Makes the thread status strongly typed, so implicit conversions can't happen. It also makes it easier to catch mistakes at compile time.
2018-07-19hle_ipc: Introduce generic WriteBuffer overload for multiple container typesLioncash1-4/+0
This introduces a slightly more generic variant of WriteBuffer(). Notably, this variant doesn't constrain the arguments to only accepting std::vector instances. It accepts whatever adheres to the ContiguousContainer concept in the C++ standard library. This essentially means, std::array, std::string, and std::vector can be used directly with this interface. The interface no longer forces you to solely use containers that dynamically allocate. To ensure our overloads play nice with one another, we only enable the container-based WriteBuffer if the argument is not a pointer, otherwise we fall back to the pointer-based one.
2018-07-19hle_ipc: Amend usage of buffer_index within one of HLERequestContext's WriteBuffer() overloadsLioncash1-1/+1
Previously, the buffer_index parameter was unused, causing all writes to use the buffer index of zero, which is not necessarily what is wanted all the time. Thankfully, all current usages don't use a buffer index other than zero, so this just prevents a bug before it has a chance to spring.
2018-07-19core/memory, core/hle/kernel: Use std::move where applicableLioncash1-2/+4
Avoids pointless copies
2018-07-17nvflinger: Fix for BufferQueue event handling.bunnei1-2/+8
2018-07-14No need to use ASSERT_MSG with an empty messageDavid Marcec1-2/+2
2018-07-03Update clang formatJames Rowe1-1/+1
2018-07-03Rename logging macro back to LOG_*James Rowe1-3/+3
2018-06-22IPC: skip empty buffer writemailwl1-0/+5
prevent yuzu crash, if games, like Axiom Verge, trying to read 0 bytes from file
2018-05-17Added RequestWithContext & ControlWithContextDavid Marcec1-1/+3
2018-05-01GetSharedFontInOrderOfPriority (#381)David1-18/+22
* GetSharedFontInOrderOfPriority * Update pl_u.cpp * Ability to use ReadBuffer and WriteBuffer with different buffer indexes, fixed up GetSharedFontInOrderOfPriority * switched to NGLOG * Update pl_u.cpp * Update pl_u.cpp * language_code is actually language code and not index * u32->u64 * final cleanups
2018-04-26kernel: Migrate logging macros to fmt-compatible onesLioncash1-2/+3
2018-04-01hle_ipc, fsp_srv: Cleanup logging.bunnei1-1/+1
2018-03-31hle_ipc: Do not ensure write buffer size.bunnei1-2/+5
2018-03-19Clean Warnings (?)N00byKing1-1/+1
2018-03-19hle_ipc: Add SleepClientThread to block current thread within HLE routines.bunnei1-0/+27
2018-03-19hle_ipc: Use shared_ptr instead of unique_ptr to allow copies.bunnei1-4/+4
2018-03-19hle_ipc: Remove GetPointer(..) usage with WriteToOutgoingCommandBuffer.bunnei1-3/+11
2018-02-20Add warning if Domain request has no domain message headermailwl1-0/+3
2018-02-20Fix: change check for domain order and existance of domain message headermailwl1-1/+1
2018-02-20IPC: add domain header to response if only it exists in requestmailwl1-4/+6
2018-02-16Service/hid: stub some functionsmailwl1-0/+51
2018-02-14hle_ipc: Remove const from WriteBuffer size.bunnei1-1/+1
2018-02-14hle_ipc: Add GetReadBufferSize and check write buffer size.bunnei1-0/+7
2018-02-14hle_ipc: Add helper functions for reading and writing buffers.bunnei1-4/+2
2018-02-14hle_ipc: Add helper functions for reading and writing buffers.bunnei1-0/+39
2018-01-25hle: Integrate Domain handling into ServerSession.bunnei1-7/+3
2018-01-25hle: Remove Domain and SyncObject kernel objects.bunnei1-1/+0
2018-01-21Format: Run the new clang format on everythingJames Rowe1-3/+2
2018-01-20Fixes some cast warnings, partial port of citra #3064 (#106)River City Ransomware1-1/+1
* Fixes some cast warnings, partially fixes citra #3064 * Converted casts to uint32_t to u32 * Ran clang-format
2018-01-18Stub PopLaunchParameter and implement Buffer C Descriptors reading on hle_ipc (#96)gdkchan1-7/+27
* Stub PopLaunchParameter and implement Buffer C Descriptors reading * Address PR feedback * Ensure we push a u64 not a size_t * Fix formatting
2018-01-17hle_ipc: Clang format.bunnei1-2/+3
2018-01-17ipc: Implement domain command CloseVirtualHandle.bunnei1-1/+8
2018-01-13yuzu: Update license text to be consistent across project.bunnei1-1/+1
2018-01-11IPC: Corrected some definitions for the buffer C descriptor flags.Subv1-1/+4
2018-01-07IPC: Add functions to read the input move/copy objects from an IPC request.Subv1-2/+14
2018-01-07IPC: Don't attempt to read the command buffer if it holds a Close request.Subv1-0/+5
2018-01-07IPC Cleanup: Remove 3DS-specific code and translate copy, move and domain objects in IPC requests.Subv1-52/+55
Popping objects from the buffer is still not implemented.
2018-01-07IPC: Skip the entire u64 of the command id when receiving an IPC request.Subv1-1/+2
Service code now doesn't have to deal with this.
2018-01-07IPC: Use the correct size when pushing raw data to the command buffer and fixed pushing domain objects.Subv1-1/+1
Domain object ids are always stored immediately after the raw data.
2017-12-29kernel: Fix implementation of ConvertSessionToDomain.bunnei1-13/+17
2017-10-19hle_ipc: Only copy necessary fields for outgoing command buffer.bunnei1-1/+1
2017-10-19hle_ipc: Parse out buffer X/A/B/B descriptors from incoming command buffer.bunnei1-14/+11
2017-10-15hle: Implement ConvertSessionToDomain, various cleanups.bunnei1-4/+19
2017-10-15hle: Initial implementation of NX service framework and IPC.bunnei1-68/+84
2017-09-30Fixed type conversion ambiguityHuw Pascoe1-1/+1
2017-06-21Kernel/IPC: Support translation of null handlesYuri Kunde Schlesner1-7/+12
Missed this in my first implementation. Thanks to @wwylele for pointing out that this was missing.
2017-06-19Kernel/IPC: Make HLERequestContext usable from outside kernelYuri Kunde Schlesner1-0/+5
2017-06-11Kernel: Allow clearing request_objects to re-use buffer spaceYuri Kunde Schlesner1-0/+4
Reduces the necessary allocation to max(in_handles, out_handles) rather than (in_handles + out_handles).
2017-06-11Kernel: Basic support for IPC translation for HLE servicesYuri Kunde Schlesner1-4/+90
2017-06-11Kernel: Add methods in HLERequestContext abstracting handle creationYuri Kunde Schlesner1-0/+9
2017-06-08Service: Add new ServiceFramework framework for writing HLE servicesYuri Kunde Schlesner1-0/+2
The old "Interface" class had a few problems such as using free functions (Which didn't allow you to write the service handler as if it were a regular class.) which weren't very extensible. (Only received one parameter with a pointer to the Interface object.) The new ServiceFramework aims to solve these problems by working with member functions and passing a generic context struct as parameter. This struct can be extended in the future without having to update all existing service implementations.
2017-06-06Kernel: Add a dedicated SetHleHandler method to ServerPort/ServerSessionYuri Kunde Schlesner1-0/+2
This allows attaching a HLE handle to a ServerPort at any point after it is created, allowing port/session creation to be generic between HLE and regular services.
2017-06-06HLE: Move SessionRequestHandler from Service:: to Kernel::Yuri Kunde Schlesner1-0/+22
Most of the code that works with this is or will be in the kernel, so it's a more appropriate place for it to be.