Commit graph

34 commits

Author SHA1 Message Date
Lioncash
1f2e75ecea kernel/vm_manager: Remove redundant Reset call in destructor
This is performing more work than would otherwise be necessary during
VMManager's destruction. All we actually want to occur in this scenario
is for any allocated memory to be freed, which will happen automatically
as the VMManager instance goes out of scope.

Anything else being done is simply unnecessary work.
2019-06-24 17:21:13 +02:00
Weiyi Wang
643b7d4dcb Memory: move memory setup into MemorySystem 2018-12-10 22:01:09 -05:00
Weiyi Wang
b6ab4e466b VMManager: remove all backing block related functions
The shared_ptr<vector> type backing memory is unused now, and is not expected to be used in the future
2018-11-16 00:16:13 -05:00
Weiyi Wang
7f9873d7ec VMManager: change MapMemoryBlockToBase to use raw backing memory
And let ServerSession.MappedBufferContext hold the mapped memory
2018-11-16 00:16:13 -05:00
Weiyi Wang
2067946f59
Kernel: reimplement memory management on physical FCRAM (#4392)
* Kernel: reimplement memory management on physical FCRAM

* Kernel/Process: Unmap does not care the source memory permission

What game usually does is after mapping the memory, they reprotect the source memory as no permission to avoid modification there

* Kernel/SharedMemory: zero initialize new-allocated memory

* Process/Thread: zero new TLS entry

* Kernel: fix a bug where code segments memory usage are accumulated twice

It is added to both misc and heap (done inside HeapAlloc), which results a doubled number reported by svcGetProcessInfo. While we are on it, we just merge the three number misc, heap and linear heap usage together, as there is no where they are distinguished.

Question: is TLS page also added to this number?

* Kernel/SharedMemory: add more object info on mapping error

* Process: lower log level; SharedMemory: store phys offset

* VMManager: add helper function to retrieve backing block list for a range
2018-11-06 15:00:47 -05:00
Weiyi Wang
7d8f115185 Prefix all size_t with std::
done automatically by executing regex replace `([^:0-9a-zA-Z_])size_t([^0-9a-zA-Z_])` -> `$1std::size_t$2`
2018-09-06 16:03:28 -04:00
Lioncash
469ed4a09f kernel/vm_manager: Convert loop into std::any_of() 2018-08-23 17:53:37 +02:00
Lioncash
c7e1dab45b kernel/vm_manager: Use const where applicable
Makes our immutable state explicit.
2018-08-23 17:53:20 +02:00
Lioncash
bb88c3b7b5 kernel/vm_manager: Use the VAddr type alias in CarveVMA()
These two variables correspond to address ranges.
2018-08-23 17:39:18 +02:00
wwylele
0eab948728 reformat all files with clang-format 2018-06-29 16:56:12 +03:00
wwylele
7c5a76e58b log: replace all NGLOG with LOG 2018-06-29 14:18:07 +03:00
NarcolepticK
a8110cfd3f hle/kernel: Migrate logging macros 2018-06-22 18:54:50 -04:00
Daniel Lim Wee Soong
730f8a4103 Fix formatting mistakes 2018-03-28 22:28:55 +08:00
Daniel Lim Wee Soong
968569aa61 Replace format specifiers for all usages of ASSERT_MSG 2018-03-27 23:28:42 +08:00
Weiyi Wang
4befbddc34
Merge pull request #3281 from jroweboy/texcache-pt2
Texture Cache Rework
2018-03-05 11:57:25 +02:00
B3n30
33b0b5163f
Merge pull request #3136 from Subv/mem_aliasing1
Kernel/Memory: Added a function to change the memory state of an address range
2018-01-24 10:17:25 +01:00
Subv
a7a5c5aa0d Kernel/IPC: Partially implement MappedBuffer translation.
Right now only MappedBuffers that only span a single page and are not aligned are implemented.

MappedBuffers are unmapped during the reply part of ReplyAndReceive. Only unmapping of ReadOnly buffers is currently implemented.
2018-01-23 08:27:00 -05:00
Subv
928202f744 Kernel/VMManager: Added a function to map a block of memory into the first available address after a given base. 2018-01-23 08:24:15 -05:00
Subv
e4f35f70ac Memory: Added a function to change the memory state of an address range.
This will be useful when implementing memory aliasing operations.
2018-01-23 08:19:47 -05:00
James Rowe
13606a6d0b Memory: Remove count of cached pages and add InvalidateRegion
In a future commit, the count of cached pages will be reintroduced in
the actual surface cache. Also adds an Invalidate only to the cache
which marks a region as invalid in order to try to avoid a costly flush
from 3ds memory
2017-12-23 16:10:25 -07:00
Subv
6d2734a074 Kernel/Memory: Give each Process its own page table.
The loader is in charge of setting the newly created process's page table as the main one during the loading process.
2017-09-10 15:13:41 -05:00
Yuri Kunde Schlesner
2cdb40d709 Kernel: Centralize error definitions in errors.h 2017-05-24 21:06:00 -07:00
Yuri Kunde Schlesner
84fbbe2629 Use negative priorities to avoid special-casing the self-include 2016-09-21 00:15:56 -07:00
Emmanuel Gil Peyrot
ebdae19fd2 Remove empty newlines in #include blocks.
This makes clang-format useful on those.

Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
2016-09-21 11:15:47 +09:00
Emmanuel Gil Peyrot
dc8479928c Sources: Run clang-format on everything. 2016-09-18 09:38:01 +09:00
MerryMage
80abe6eb08 Memory: Added necessary headers and removed unnecessary header 2016-05-26 18:55:37 +01:00
MerryMage
2b93313348 Memory: Implement MMIO 2016-01-30 18:41:04 +00:00
Yuri Kunde Schlesner
cdeeecf080 Kernel: Properly implement ControlMemory FREE and COMMIT 2015-08-16 01:03:45 -03:00
Yuri Kunde Schlesner
306408d174 VMManager: Introduce names for used ResultCodes 2015-08-16 01:03:44 -03:00
Yuri Kunde Schlesner
b9a9ad9742 VMManager: Make LogLayout log level configurable as a parameter 2015-08-16 01:03:43 -03:00
Yuri Kunde Schlesner
785407d06f VMManager: Change block offsets to size_t 2015-08-16 01:03:43 -03:00
Yuri Kunde Schlesner
5c5cf2f8e0 Core: Properly configure address space when loading a binary
The code now properly configures the process image to match the loaded
binary segments (code, rodata, data) instead of just blindly allocating
a large chunk of dummy memory.
2015-07-11 23:54:42 -03:00
Emmanuel Gil Peyrot
aea15f5c73 Core: Cleanup core includes. 2015-06-28 00:36:54 +01:00
Yuri Kunde Schlesner
0a60aa75c2 Kernel: Add VMManager to manage process address spaces
This enables more dynamic management of the process address space,
compared to just directly configuring the page table for major areas.

This will serve as the foundation upon which the rest of the Kernel
memory management functions will be built.
2015-05-27 03:24:12 -03:00