bunnei
eaf66b4c9f
audio_core: Move to audout_u impl.
...
- This is necessary so streams are created on the same thread.
2018-07-30 18:44:16 -04:00
David
a483e5e28d
Implemented various hwopus functions ( #853 )
2018-07-30 15:42:20 -07:00
bunnei
45d1438530
Merge pull request #858 from lioncash/cast
...
partition_filesystem: Remove dynamic_cast in PrintDebugInfo()
2018-07-30 10:09:36 -07:00
bunnei
c5fa3560a6
Merge pull request #857 from lioncash/wlan
...
service: Add wlan services
2018-07-30 10:06:52 -07:00
bunnei
2c4bb11015
Merge pull request #856 from lioncash/btm
...
service: Add btm services
2018-07-30 10:06:34 -07:00
Hexagon12
fd797e2424
Add some HID commands ( #843 )
...
* Added some HID commands
* Addressed comments
2018-07-30 10:06:21 -07:00
Lioncash
57c4d7aa00
partition_filesystem: Remove dynamic_cast in PrintDebugInfo()
...
We shouldn't be upcasting our file instances. Given a
PartitionFilesystem is currently designed to accept any arbitrary
VfsFile instances, casting to a more specific type than that is just bad
design, and shows an interface design issue.
2018-07-29 06:16:59 -04:00
Lioncash
6ea416091e
service: Add wlan services
...
Adds the basic skeleton for the wlan services based off the information
on Switch Brew.
2018-07-28 21:54:55 -04:00
Lioncash
7ce6858086
service/btm: Add basic implementation of GetCoreImpl()
...
Based off information on SwIPC and Switch Brew.
2018-07-28 21:09:07 -04:00
Lioncash
ca7655be3a
service: Add btm services
...
Adds the skeleton for the btm services based off the information on
Switch Brew.
2018-07-28 21:09:07 -04:00
bunnei
458fdda700
Merge pull request #847 from lioncash/ncm
...
service: Add ncm services
2018-07-28 10:46:09 -07:00
bunnei
d00dcdb1be
Merge pull request #846 from lioncash/mii
...
service: Add mii services
2018-07-28 10:45:31 -07:00
bunnei
e1d66ea794
Merge pull request #842 from bunnei/audio-core
...
Initial implementation of Audio Core
2018-07-27 20:25:32 -07:00
bunnei
f1c519f2cb
audout: Implement IAudioOut interface with AudioCore.
2018-07-27 22:55:39 -04:00
bunnei
2a742229ee
core: Add AudioCore to global state.
2018-07-27 22:33:37 -04:00
bunnei
ab756fd068
audio_core: Add initial code for keeping track of audout state.
2018-07-27 22:33:31 -04:00
Zach Hilman
906d785c73
RomFS Extraction
2018-07-27 18:14:03 -04:00
Lioncash
7931cc0ceb
service: Add ncm services
...
Adds the basic skeleton for the ncm services based off information on
Switch Brew.
2018-07-27 17:38:30 -04:00
bunnei
0191a1e526
Merge pull request #845 from lioncash/nfc
...
service: Add nfc services
2018-07-27 14:29:27 -07:00
bunnei
833ebbb626
Merge pull request #844 from lioncash/lbl
...
service: Add the lbl service
2018-07-27 13:06:11 -07:00
bunnei
d2749ef0ed
Merge pull request #841 from lioncash/btdrv
...
service: Add the btdrv service
2018-07-27 13:05:36 -07:00
Lioncash
f46bfdd77d
service: Add mii services
...
Adds the skeleton for the mii services based off information provided by
Switch Brew
2018-07-27 16:01:29 -04:00
Lioncash
50dadc33e3
service/nfc: Implement Create[x]Interface functions
...
These simply return the respective interface.
2018-07-27 15:12:08 -04:00
Lioncash
04d144aa40
service: Add nfc services
...
Adds the skeleton of the nfc service based off the information provided
on Switch Brew.
2018-07-27 14:50:24 -04:00
Lioncash
ea8dd8b650
service/lbl: Implement EnableVrMode, DisableVrMode and GetVrMode
...
Implements these functions according to the information available on
Switch Brew.
2018-07-27 14:20:42 -04:00
Lioncash
c2c543e8f7
service: Add the lbl service
...
Adds the skeleton of the lbl service based off the information provided
by Switch Brew.
2018-07-27 14:20:07 -04:00
bunnei
dc4e5f9159
Merge pull request #837 from lioncash/priv
...
kernel/timer: Make data members private where applicable
2018-07-27 07:18:50 -07:00
Lioncash
f49248437e
service: Add the btdrv service
...
Adds the skeleton for the btdrv service based off the information provided by Switch Brew
2018-07-26 18:06:17 -04:00
Lioncash
1121622dc1
service/hid: Add the hidbus, hid:dbg, hid:sys, and hid:tmp services
2018-07-26 15:05:42 -04:00
Lioncash
7550c2c866
service/hid: Add the xcd:sys service
2018-07-26 15:05:42 -04:00
Lioncash
82cb5f030d
service/hid: Add irs services
2018-07-26 15:05:24 -04:00
bunnei
8440b814bc
Merge pull request #834 from lioncash/grc
...
service: Add the grc:c service
2018-07-26 12:03:30 -07:00
bunnei
41d7b020a8
Merge pull request #832 from lioncash/nim
...
service: Add the nim services
2018-07-26 12:02:29 -07:00
bunnei
e4191b624c
Merge pull request #831 from lioncash/ldn
...
service: Add ldn services
2018-07-26 11:52:42 -07:00
bunnei
40eb243f86
Merge pull request #830 from lioncash/socket
...
service/sockets: Add missing socket services
2018-07-26 11:51:11 -07:00
Lioncash
b28af1f6c9
service: Add the grc:c service
...
Adds the basic skeleton for the grc:c service based off the information
provided by Switch Brew.
2018-07-26 09:53:58 -04:00
Lioncash
0cd843151f
kernel/timer: Make data members private where applicable
...
Instead, we can just expose functions that return the queryable state
instead of letting anything modify it.
2018-07-26 09:51:44 -04:00
Lioncash
f916611e32
service: Add the nim services
...
Adds the skeleton for the nim services based off information from Switch
Brew.
2018-07-26 02:47:06 -04:00
Lioncash
8781beaf0d
service: Add ldn services
...
Adds ldn services based off information provided by Switch Brew.
2018-07-26 01:48:06 -04:00
bunnei
57cd80c410
Merge pull request #827 from lioncash/log
...
service/lm: Minor changes
2018-07-25 22:30:43 -07:00
Lioncash
3f5dfc4d96
service/sockets: Add ethc:c and ethc:i services
2018-07-26 01:07:21 -04:00
Lioncash
165e7645e1
service/sockets: Add missing bsdcfg socket service
2018-07-26 01:00:15 -04:00
Sebastian Valle
1958d07d7d
Merge pull request #828 from lioncash/ldr
...
service: Add ldr services
2018-07-25 23:44:13 -05:00
Sebastian Valle
8ac52c6b56
Merge pull request #826 from lioncash/erpt
...
service: Add erpt and eupld services
2018-07-25 23:43:47 -05:00
Sebastian Valle
0e05f98be2
Merge pull request #823 from lioncash/nifm
...
service/nifm: Deduplicate interface code
2018-07-25 23:43:03 -05:00
Lioncash
3fb124961e
service: Add ldr services
...
Adds the skeleton for the ldr-related services based off the information
provided on Switch Brew.
2018-07-25 23:11:03 -04:00
Lioncash
91d86df920
lm: Move LM's class declaration into the cpp file
...
This isn't used directly outside of this translation unit, so we can
hide it from external use.
2018-07-25 22:40:16 -04:00
Lioncash
6f4d3d8163
lm: Amend names of Initialize() in Logger and Initialize() in LM
...
Amends these to match the information on Switch Brew.
2018-07-25 22:39:39 -04:00
Lioncash
8650be1020
lm: Add missing function entry to Logger's function table
2018-07-25 22:26:32 -04:00
Lioncash
7458e71f24
service: Add eupld services
...
Adds the skeleton for the eupld services based off information on Switch
Brew.
2018-07-25 22:13:43 -04:00
Lioncash
821f2c03cb
service: Add the erpt services
...
Adds the basic skeleton of the erpt service based off information on
Switch Brew.
2018-07-25 22:13:39 -04:00
bunnei
b0adb9a3d9
Merge pull request #824 from lioncash/nvdrv
...
service/nvdrv: Minor changes
2018-07-25 19:02:08 -07:00
bunnei
851089b482
Merge pull request #822 from lioncash/pm
...
service: Add pm services
2018-07-25 19:01:28 -07:00
Lioncash
f9951352f6
service/nvdrv: Take std::string in Open() by const reference
...
Avoids copies from being made, since the string is only ever used for
lookup, the data is never transfered anywhere.
Ideally, we'd use a std::string_view here, but devices is a
std::unordered_map, not a std::map, so we can't use heterogenous lookup
here.
2018-07-25 17:37:43 -04:00
Lioncash
a2cd07d094
service/nvdrv: Use std::move where applicable
...
Avoids unnecessary reference count increments and decrements.
In one case, we don't need to make a shared_ptr copy at all,
just to call a member function.
2018-07-25 17:31:08 -04:00
Lioncash
85ed42a1d2
service/nifm: Deduplicate interface code
...
Rather than having the same code for each nifm service variant, we can
centralize it on one class and get rid of a bit of extra code.
2018-07-25 17:18:41 -04:00
Lioncash
c664f8a257
service: Add pm services
...
Adds the skeleton for the process management services based off
information on Switch Brew.
2018-07-25 16:57:16 -04:00
Lioncash
4175712976
service: Add the es service
...
Adds the skeleton for the ETicket service based off the information on
Switch Brew
2018-07-25 15:36:55 -04:00
Mat M
1e4935c3a0
Merge pull request #801 from lioncash/time
...
time: Add the time:a service
2018-07-25 15:08:33 -04:00
Mat M
d3fd0351a7
Merge pull request #804 from lioncash/log
...
svc: Log parameters in SetMemoryAttribute()
2018-07-25 14:43:24 -04:00
Lioncash
3c1cb3b11e
time: Add the time:a service
...
Given we already have time:s and time:u, we should also have time:a
2018-07-25 14:42:04 -04:00
bunnei
657bd113e3
Merge pull request #803 from MerryMage/core_timing_util
...
core_timing: Split off utility functions into core_timing_util
2018-07-25 11:09:31 -07:00
bunnei
5c42cadbc9
Merge pull request #800 from lioncash/set
...
set_sys: Implement SetColorSetId()
2018-07-25 10:25:29 -07:00
bunnei
340771ccd7
Merge pull request #806 from lioncash/friend
...
friend: Deduplicate interfaces
2018-07-24 17:42:16 -07:00
bunnei
ea0bc8c002
Merge pull request #805 from lioncash/sign
...
svc: Resolve sign comparison warnings in WaitSynchronization()
2018-07-24 12:50:03 -07:00
Lioncash
4cf2185e81
deconstructed_rom_directory: Remove unused FindRomFS() function
2018-07-24 10:54:07 -04:00
Lioncash
07c2d057bd
friend: Add friend:m, friend:s, and friend:v services
...
Given we already have friend:a and friend:u, we should add the remaining
services as well.
2018-07-24 10:26:01 -04:00
Lioncash
9539a1eadd
friend/interface: Add missing CreateDaemonSuspendSessionService() to the function handler table
2018-07-24 10:24:16 -04:00
Lioncash
77daef44b0
friend: Deduplicate interfaces
2018-07-24 10:21:51 -04:00
Lioncash
c73410bf2c
svc: Resolve sign comparison warnings in WaitSynchronization()
...
The loop's induction variable was signed, but we were comparing against
an unsigned variable.
2018-07-24 09:55:17 -04:00
Lioncash
8e8e906432
svc: Log parameters in SetMemoryAttribute()
...
Provides slightly more context than only logging out the address value.
2018-07-24 09:46:46 -04:00
bunnei
316c994f55
Merge pull request #798 from lioncash/const
...
arm_dynarmic: Make MakeJit() a const member function
2018-07-24 04:48:06 -07:00
bunnei
23e85b6b9f
Merge pull request #797 from lioncash/explicit
...
core: Make converting constructors explicit where applicable
2018-07-24 04:47:26 -07:00
bunnei
1cbf7ac6ea
Merge pull request #795 from lioncash/decl
...
apm/interface: Remove redundant declaration of InstallInterfaces()
2018-07-24 04:46:41 -07:00
bunnei
d092ea0870
Merge pull request #794 from lioncash/ref
...
mutex: Pass SharedPtr to GetHighestPriorityMutexWaitingThread() by reference
2018-07-24 04:45:34 -07:00
Lioncash
a61124a9e7
time: Simplify interface creation
...
We can use one instance of the interface instead of duplicating code.
2018-07-24 06:21:27 -04:00
MerryMage
44646e2ea0
core_timing: Split off utility functions into core_timing_util
2018-07-24 11:03:24 +01:00
MerryMage
b8459d2778
CMakeLists: Sort filenames
2018-07-24 11:02:53 +01:00
Lioncash
63c605c04a
set_sys: Implement SetColorSetId()
2018-07-24 00:48:16 -04:00
Lioncash
76f191ce36
ipc_helper: Add helper member function for popping enum values to RequestParser
2018-07-24 00:47:51 -04:00
bunnei
2f029577c7
Merge pull request #793 from lioncash/priv
...
ipc_helpers: Make member variables of ResponseBuilder private
2018-07-23 21:23:27 -07:00
bunnei
bc5b65a1b0
Merge pull request #785 from lioncash/fs
...
partition_filesystem: Use std::move where applicable
2018-07-23 20:36:59 -07:00
Lioncash
7d124ec82b
arm_dynarmic: Make MakeJit() a const member function
...
This functions doesn't modify instance state, so it can be a made a
const member function.
2018-07-23 23:19:37 -04:00
Lioncash
1d755abce4
core: Make converting constructors explicit where applicable
...
Avoids unwanted implicit conversions. Thankfully, given the large amount
of cleanup in past PRs, only this tiny amount is left over to cover.
2018-07-23 23:13:22 -04:00
Lioncash
8b83adfed6
apm/interface: Remove redundant declaration of InstallInterfaces()
...
This is already declared in apm/apm.h
2018-07-23 23:01:04 -04:00
Lioncash
42b5158c96
mutex: Pass SharedPtr to GetHighestPriorityMutexWaitingThread() by reference
...
The pointed to thread's members are simply observed in this case, so we
don't need to copy it here.
2018-07-23 22:54:35 -04:00
Zach Hilman
59cb258409
VFS Regression and Accuracy Fixes ( #776 )
...
* Regression and Mode Fixes
* Review Fixes
* string_view correction
* Add operator& for FileSys::Mode
* Return std::string from SanitizePath
* Farming Simulator Fix
* Use != With mode operator&
2018-07-23 19:40:35 -07:00
Lioncash
22fd3f0026
hle_ipc: Make constructors explicit where applicable
2018-07-23 22:40:24 -04:00
Lioncash
2a1daf8f83
ipc_helpers: Make member variables of ResponseBuilder private
...
These aren't used externally at all, so they can be made private.
2018-07-23 22:29:07 -04:00
bunnei
25635907a2
Merge pull request #786 from lioncash/exclusive
...
exclusive_monitor: Use consistent type alias for u64
2018-07-23 19:11:05 -07:00
bunnei
84cc5dd35d
Merge pull request #784 from lioncash/loader
...
loader: Minor cleanup
2018-07-23 19:08:12 -07:00
bunnei
1ce5e04be8
Merge pull request #783 from lioncash/linker
...
linker: Remove unused parameter from WriteRelocations()
2018-07-23 19:07:22 -07:00
bunnei
10dd03dec5
Merge pull request #782 from lioncash/file
...
loader/nro: Minor changes
2018-07-23 19:06:30 -07:00
bunnei
52ec1840f5
Merge pull request #780 from lioncash/move
...
vi: Minor changes
2018-07-23 18:29:11 -07:00
bunnei
e0b6771e25
Merge pull request #779 from lioncash/shared
...
hle: Remove unused config_mem and shared_page source files
2018-07-23 18:28:45 -07:00
Lioncash
e12c84d5c5
exclusive_monitor: Use consistent type alias for u64
...
Uses the same type aliases we use for virtual addresses, and converts
one lingering usage of std::array<uint64_t, 2> to u128 for consistency.
2018-07-23 20:54:57 -04:00
Lioncash
db48ebb9c9
partition_filesystem: Use std::move where applicable
...
Avoids copying a std::string instance and avoids unnecessary atomic
reference count incrementing and decrementing.
2018-07-23 20:27:11 -04:00
Lioncash
a147fa5825
loader: Remove unnecessary constructor call in IdentifyFile()
...
RealVfsFile inherits from VfsFile, the instance from std::make_shared is
already compatible with the function argument type, making the copy
constructor call unnecessary.
2018-07-23 17:44:58 -04:00
Lioncash
184c516182
linker: Remove unused parameter from WriteRelocations()
...
is_jump_relocation is never used within the function, so we can just
remove it.
2018-07-23 17:40:12 -04:00
Lioncash
1b4d0ac20e
nro: Replace inclusion with a forward declaration
...
It's sufficient to use a forward declaration instead of a direct
inclusion here.
2018-07-23 17:29:02 -04:00
Lioncash
2b497e5830
nro: Make bracing consistent
...
Makes the code more uniform, and also braces cases where the body of an
unbraced conditional travels more than one line.
2018-07-23 17:24:29 -04:00
Lioncash
ac8133b9ee
nro: Make constructor explicit
...
Makes it consistent with the other Apploader constructors, and prevents
implicit conversions.
2018-07-23 17:20:33 -04:00
Lioncash
1c16700372
nro: Remove unused forward declaration
...
This isn't used anywhere in the header.
2018-07-23 17:19:42 -04:00
bunnei
07e5319d55
Merge pull request #695 from DarkLordZach/nro-asset
...
NRO Assets and NACP File Format
2018-07-23 14:14:11 -07:00
Lioncash
1432912ae8
vi: Add std::is_trivially_copyable checks to Read and Write functions
...
It's undefined behavior to memcpy an object that isn't considered
trivially copyable, so put a compile-time check in to make sure this
doesn't occur.
2018-07-23 14:53:54 -04:00
Lioncash
344a0c91f2
vi: std::move std::vector in constructors where applicable
...
Allows avoiding unnecessary copies of the vector depending on the
calling code.
While we're at it, remove a redundant no-parameter base constructor call
2018-07-23 14:49:54 -04:00
Lioncash
cbe841c9c9
hle: Remove config_mem.h/.cpp
...
This is just an unused hold-over from citra, so we can get rid of this
to trim off an exposed global, among other things.
2018-07-23 12:57:34 -04:00
Lioncash
1f3889a290
hle: Remove shared_page.h/.cpp
...
This is a holdover from citra that's essentially unused.
2018-07-23 12:53:07 -04:00
Lioncash
e85308cd90
set: Add missing log call in GetAvailableLanguageCodeCount()
...
Forgot to include this in 22f448b632
2018-07-23 12:37:42 -04:00
Zach Hilman
e8f641a52d
NRO Assets and NACP file format
...
Cleanup
Review fixes
2018-07-23 12:34:26 -04:00
bunnei
a85366a40c
Merge pull request #777 from lioncash/lang
...
set: Amend return value of GetAvailableLanguageCodes()
2018-07-23 09:34:08 -07:00
Lioncash
22f448b632
set: Implement GetAvailableLanguageCodeCount()
...
This just returns the size of the language code buffer.
2018-07-23 00:29:40 -04:00
Lioncash
37aeecd29f
set: Correct return code size of value in GetAvailableLanguageCodes()
...
The return code should be 32-bit in size.
2018-07-23 00:29:22 -04:00
bunnei
a4b2af7382
Merge pull request #774 from Subv/atomic_signal
...
Kernel/SVC: Perform atomic accesses in SignalProcessWideKey as per the real kernel.
2018-07-22 12:26:03 -07:00
bunnei
5ee4c49c30
Merge pull request #768 from lioncash/string-view
...
file_util, vfs: Use std::string_view where applicable
2018-07-22 11:32:28 -07:00
Subv
7841447cf0
Kernel/SVC: Perform atomic accesses in SignalProcessWideKey as per the real kernel.
2018-07-22 12:27:24 -05:00
MerryMage
0b1c2e5505
Implement exclusive monitor
2018-07-22 15:55:17 +01:00
Lioncash
0081252d31
vfs: Correct file_p variable usage within InterpretAsDirectory()
...
ReplaceFileWithSubdirectory() takes a VirtualFile and a VirtualDir, but
it was being passed a string as one of its arguments. The only reason
this never caused issues is because this template isn't instantiated
anywhere yet.
This corrects an issue before it occurs.
2018-07-22 03:22:28 -04:00
Lioncash
398444e676
file_util, vfs: Use std::string_view where applicable
...
Avoids unnecessary construction of std::string instances where
applicable.
2018-07-22 03:22:21 -04:00
Lioncash
0ba7fe4ab1
file_util: Use a u64 to represent number of entries
...
This avoids a truncating cast on size. I doubt we'd ever traverse a
directory this large, however we also shouldn't truncate sizes away.
2018-07-21 22:42:08 -04:00
bunnei
9533875eeb
Merge pull request #760 from lioncash/path
...
file_util: Use an enum class for GetUserPath()
2018-07-21 18:30:04 -07:00
Subv
5c49e56d41
GPU: Implement the NVGPU_IOCTL_CHANNEL_KICKOFF_PB ioctl2 command.
...
This behaves quite similarly to the SubmitGPFIFO command. Referenced from Ryujinx.
Many thanks to @gdkchan for investigating this!
2018-07-21 15:50:02 -05:00
Lioncash
d66b43dadf
file_util: Use an enum class for GetUserPath()
...
Instead of using an unsigned int as a parameter and expecting a user to
always pass in the correct values, we can just convert the enum into an
enum class and use that type as the parameter type instead, which makes
the interface more type safe.
We also get rid of the bookkeeping "NUM_" element in the enum by just
using an unordered map. This function is generally low-frequency in
terms of calls (and I'd hope so, considering otherwise would mean we're
slamming the disk with IO all the time) so I'd consider this acceptable
in this case.
2018-07-21 16:21:19 -04:00
bunnei
0f20fa5a1e
Merge pull request #754 from lioncash/part
...
partition_filesystem, vfs_real: Minor changes
2018-07-21 11:38:52 -07:00
bunnei
de7cb91995
Merge pull request #750 from lioncash/ctx
...
arm_interface: Remove unused tls_address member of ThreadContext
2018-07-21 11:38:16 -07:00
bunnei
89cc8c1617
Merge pull request #755 from lioncash/ctor
...
file_sys/errors: Remove redundant object constructor calls
2018-07-21 10:53:53 -07:00
bunnei
fe2498a650
Merge pull request #751 from Subv/tpidr_el0
...
CPU: Save and restore the TPIDR_EL0 system register on every context switch
2018-07-21 10:48:30 -07:00
bunnei
3d938b8c60
Merge pull request #753 from lioncash/const
...
vfs: Minor changes
2018-07-21 10:44:08 -07:00
bunnei
d85cfc94e2
Merge pull request #752 from Subv/vfs_load
...
Loader: Only print the module names and addresses if they actually exist.
2018-07-20 22:57:18 -07:00
Lioncash
459e158340
file_sys/errors: Remove redundant object constructor calls
...
Given we're already constructing the error code, we don't need to call
the constructor inside of it.
2018-07-20 22:37:54 -04:00
Lioncash
b46c0ed1fa
vfs_real: Remove redundant copying of std::vector instances in GetFiles() and GetSubdirectories()
...
We already return by value, so we don't explicitly need to make the
copy.
2018-07-20 22:30:22 -04:00
Lioncash
ec71915ede
partition_filesystem, vfs_real: Add missing standard includes
2018-07-20 22:28:35 -04:00
Lioncash
d36e327ba6
partition_filesystem, vfs_real: Use std::move in ReplaceFileWithSubdirectory() where applicable
...
Avoids unnecessary atomic increment and decrement operations.
2018-07-20 22:23:58 -04:00
Lioncash
2b91386e15
partition_filesystem, vfs_real: Use std::distance() instead of subtraction
...
This is a little bit more self-documenting on what is being done here.
2018-07-20 22:19:17 -04:00
Lioncash
3e0727df1b
vfs_offset: Simplify TrimToFit()
...
We can simply use std::clamp() here, instead of using an equivalent
with std::max() and std::min().
2018-07-20 22:04:37 -04:00
Lioncash
894b0de0f2
vfs: Make WriteBytes() overload taking a std::vector pass the std::vector by const reference
...
Given the data is intended to be directly written, there's no need to
take the std::vector by value and copy the data.
2018-07-20 21:51:30 -04:00
Lioncash
dd09439fee
vfs: Use variable template variants of std::is_trivially_copyable
...
Provides the same behavior, but with less writing
2018-07-20 21:47:19 -04:00
Lioncash
05231d8b08
vfs: Amend constness on pointers in WriteBytes() and WriteArrays() member functions to be const qualified
...
These functions don't modify the data being pointed to, so these can be
pointers to const data
2018-07-20 21:40:15 -04:00
Subv
966874e357
Loader: Only print the module names and addresses if they actually exist.
2018-07-20 19:59:15 -05:00
Subv
d84eb9dac6
CPU: Save and restore the TPIDR_EL0 system register on every context switch.
...
Note that there's currently a dynarmic bug preventing this register from being written.
2018-07-20 19:57:45 -05:00
Lioncash
ae09adfcb3
arm_interface: Remove unused tls_address member of ThreadContext
...
Currently, the TLS address is set within the scheduler, making this
member unused.
2018-07-20 18:57:40 -04:00
bunnei
2b7d862366
Merge pull request #742 from bunnei/misc-apm
...
apm: Improve stub for GetPerformanceConfiguration.
2018-07-20 15:01:19 -07:00
bunnei
dffd154d6d
apm: Improve stub for GetPerformanceConfiguration.
2018-07-20 15:20:01 -04:00
Lioncash
0a0b3c4b9f
ipc_helpers: Add PushEnum() member function to ResponseBuilder
...
Allows pushing strongly-typed enum members without the need to always
cast them at the call sites.
Note that we *only* allow strongly-typed enums in this case. The reason
for this is that strongly typed enums have a guaranteed defined size, so
the size of the data being pushed is always deterministic. With regular
enums this can be a little more error-prone, so we disallow them.
This function simply uses the underlying type of the enum to determine
the size of the data. For example, if an enum is defined as:
enum class SomeEnum : u16 {
SomeEntry
};
if PushEnum(SomeEnum::SomeEntry); is called, then it will push a
u16-size amount of data.
2018-07-20 15:00:58 -04:00
bunnei
c1c9ab31e8
Merge pull request #740 from Subv/acc_crash
...
HLE/ACC: Stub IManagerForApplication::GetAccountId to return an error.
2018-07-20 09:47:47 -07:00
bunnei
ffbd51e207
Merge pull request #737 from lioncash/move
...
filesys/loader: std::move VirtualFile instances in constructors where applicable
2018-07-20 09:21:15 -07:00
bunnei
701c7cb85c
Merge pull request #736 from lioncash/null
...
audout_u/audren_u: Ensure null terminators are written out in ListAudioOutsImpl(), ListAudioDeviceName(), and GetActiveAudioDeviceName()
2018-07-20 09:17:07 -07:00
bunnei
741cae1e1d
Merge pull request #734 from lioncash/thread
...
thread: Convert ThreadStatus into an enum class
2018-07-20 09:15:52 -07:00
bunnei
a1805ceb0b
Merge pull request #733 from lioncash/dirs
...
partition_filesystem: Return pfs_dirs member variable within GetSubdirectories()
2018-07-20 09:15:16 -07:00
bunnei
86d1649b32
Merge pull request #732 from lioncash/unused
...
nso: Minor changes
2018-07-20 09:14:10 -07:00
Subv
9c7321fe6d
HLE/ACC: Stub IManagerForApplication::GetAccountId to return an error.
...
And make IManagerForApplication::CheckAvailability always return false.
Returning a bogus id from GetAccountId causes games to crash on boot.
We should investigate this with a hwtest and either stub it properly or implement it.
2018-07-20 11:02:25 -05:00
Lioncash
8874d0e657
loader/{nca, nro}: std::move VirtualFile in the constructors where applicable
...
This avoids unnecessary atomic reference count increments and decrements
2018-07-20 00:10:24 -04:00
Lioncash
0e9d58e82a
vfs_offset: std::move file and name parameters of OffsetVfsFile
...
Avoids potentially unnecessary atomic reference count incrementing and
decrementing, as well as string copying.
2018-07-20 00:04:54 -04:00
Lioncash
40c9c5a55c
audren_u: Use a std::array instead of std::string for holding the audio interface/device name
...
std::string doesn't include the null-terminator in its data() + size()
range. This ensures that the null-terminator will also be written to the buffer
2018-07-19 23:15:27 -04:00
Lioncash
c20cea118b
audout_u: Use a std::array instead of std::string for holding the audio interface name
...
Uses a type that doesn't potentially dynamically allocate, and ensures
that the name of the interface is properly null-terminated when writing
it to the buffer.
2018-07-19 23:15:00 -04:00
Lioncash
dbfe82773d
thread: Convert ThreadStatus into an enum class
...
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-19 22:08:56 -04:00
Lioncash
bbd6429ecb
partition_filesystem: Return pfs_dirs member variable within GetSubdirectories()
...
This should be returned here, otherwise pfs_dirs is effectively only
ever added to, but never read.
2018-07-19 21:08:50 -04:00
Lioncash
364b950515
nso: Silence implicit sign conversion warnings
2018-07-19 20:51:15 -04:00
Lioncash
a25c5b982a
nso: Remove unused function ReadSegment()
2018-07-19 20:49:27 -04:00
Lioncash
1bdb67440b
pl_u: Simplify WriteBuffer() calls in GetSharedFontInOrderOfPriority()
...
With the new overload, we can simply pass the container directly.
2018-07-19 19:50:30 -04:00
bunnei
d3cfaf95c8
Merge pull request #726 from lioncash/overload
...
hle_ipc: Introduce generic WriteBuffer overload for multiple container types
2018-07-19 16:18:38 -07:00
bunnei
0b13ce1435
Merge pull request #725 from lioncash/bytes
...
pl_u: Specify correct size for buffers in GetSharedFontInOrderOfPriority()
2018-07-19 16:16:30 -07:00
bunnei
af08034c71
Merge pull request #728 from Subv/acc_profile
...
HLE/ACC: Change the default user id and small improvements to the way we handle profiles
2018-07-19 16:15:01 -07:00
bunnei
2aeb3355e4
Merge pull request #727 from Subv/acc_users
...
HLE/ACC: Write a single whole user id in ListAllUsers and ListOpenUsers.
2018-07-19 16:13:45 -07:00
bunnei
c6352ffc58
Merge pull request #724 from lioncash/printf
...
pl_u: Remove printf specifier in log call in a log call in GetSharedFontInOrderOfPriority()
2018-07-19 16:13:07 -07:00
bunnei
ec468c990d
Merge pull request #723 from lioncash/gdb
...
gdbstub: Get rid of a few signed/unsigned comparisons
2018-07-19 16:12:40 -07:00
bunnei
f43d8ea523
Merge pull request #722 from lioncash/signed
...
hid: Resolve a signed/unsigned comparison warning
2018-07-19 16:12:15 -07:00
bunnei
2194308245
Merge pull request #721 from lioncash/svc
...
svc: Correct always true assertion case in SetThreadCoreMask
2018-07-19 16:11:40 -07:00
bunnei
b5c77313de
Merge pull request #719 from lioncash/docs
...
loader: Amend Doxygen comments
2018-07-19 16:11:09 -07:00
bunnei
dd0446ff43
Merge pull request #718 from lioncash/read
...
loader/nso: Check if read succeeded in IdentifyFile() before checking magic value
2018-07-19 16:10:29 -07:00
bunnei
31413f0d2f
Merge pull request #717 from lioncash/explicit
...
hle/service: Make constructors explicit where applicable
2018-07-19 16:08:07 -07:00
Subv
05549e45c5
HLE/ACC: Return an IProfile that is consistent with what was requested.
...
The default username for now is "yuzu".
We should eventually allow the creation of users in the emulator and have the ability to modify their parameters.
2018-07-19 16:53:42 -05:00
Subv
50e2777724
HLE/ACC: Change the default user id to be consistent with what we tell games on startup.
...
In IApplicationFunctions::PopLaunchParameter we tell the games that they were launched as user id 1.
2018-07-19 16:51:55 -05:00
Subv
b102815f1f
HLE/ACC: Write a single whole user id in ListAllUsers and ListOpenUsers.
...
We only emulate a single user id for now.
2018-07-19 16:19:46 -05:00
bunnei
7244671137
Merge pull request #716 from lioncash/construct
...
nvflinger: Emplace Display instances directly
2018-07-19 14:18:29 -07:00
Lioncash
ff500a7b68
hle_ipc: Introduce generic WriteBuffer overload for multiple container types
...
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-19 17:05:12 -04:00
bunnei
eb9b55eafe
Merge pull request #715 from lioncash/const-ref
...
nvdrv: Take std::string by const reference in GetDevice()
2018-07-19 13:27:48 -07:00
Sebastian Valle
78dd1cd441
Merge pull request #720 from Subv/getentrytype_root
...
Filesystem: Return EntryType::Directory for the root directory.
2018-07-19 15:23:32 -05:00
Lioncash
df001e83b1
pl_u: Specify correct size for buffers in GetSharedFontInOrderOfPriority()
...
This WriteBuffer overload expects its size argument to be in bytes, not
elements.
2018-07-19 15:57:58 -04:00
Lioncash
b879fb84a2
svc: Correct always true assertion case in SetThreadCoreMask
...
The reason this would never be true is that ideal_processor is a u8 and
THREADPROCESSORID_DEFAULT is an s32. In this case, it boils down to how
arithmetic conversions are performed before performing the comparison.
If an unsigned value has a lesser conversion rank (aka smaller size)
than the signed type being compared, then the unsigned value is promoted
to the signed value (i.e. u8 -> s32 happens before the comparison). No
sign-extension occurs here either.
An alternative phrasing:
Say we have a variable named core and it's given a value of -2.
u8 core = -2;
This becomes 254 due to the lack of sign. During integral promotion to
the signed type, this still remains as 254, and therefore the condition
will always be true, because no matter what value the u8 is given it
will never be -2 in terms of 32 bits.
Now, if one type was a s32 and one was a u32, this would be entirely
different, since they have the same bit width (and the signed type would
be converted to unsigned instead of the other way around) but would
still have its representation preserved in terms of bits, allowing the
comparison to be false in some cases, as opposed to being true all the
time.
---
We also get rid of two signed/unsigned comparison warnings while we're
at it.
2018-07-19 15:46:17 -04:00
Lioncash
68c1ffdd1c
pl_u: Remove printf specifier in log call in a log call in GetSharedFontInOrderOfPriority()
...
This can just use the fmt specifiers and be type-agnostic.
2018-07-19 15:44:04 -04:00
Sebastian Valle
7eace8f512
Merge pull request #714 from lioncash/index
...
hle_ipc: Amend usage of buffer_index within one of HLERequestContext's WriteBuffer() overloads
2018-07-19 14:36:34 -05:00
bunnei
38b35e752b
Merge pull request #712 from lioncash/fsp
...
fsp_srv: Misc individual changes
2018-07-19 12:31:33 -07:00
Lioncash
c945226973
gdbstub: Get rid of a few signed/unsigned comparisons
...
Ensures both operands in comparisons are the same signedness.
2018-07-19 15:27:01 -04:00
Lioncash
a37a47448d
hid: Use a ranged-for loops in UpdatePadCallback
...
Modernizes the loops themselves while also getting rid of a signed/unsigned
comparison in a loop condition.
2018-07-19 15:11:08 -04:00
Lioncash
95103a1b7b
hid: Use HID_NUM_LAYOUTS constant for indicating size of the layouts array
...
Gets rid of the use of a magic constant
2018-07-19 15:07:36 -04:00
bunnei
427fc4ac6b
Merge pull request #713 from lioncash/filesys
...
filesystem: Minor changes
2018-07-19 11:49:06 -07:00
bunnei
1034bcc742
Merge pull request #694 from lioncash/warn
...
loader/{nro, nso}: Resolve compilation warnings
2018-07-19 11:43:14 -07:00
Subv
e5c916a27c
Filesystem: Return EntryType::Directory for the root directory.
...
It is unknown if this is correct behavior, but it makes sense and fixes a regression with Stardew Valley.
2018-07-19 13:11:09 -05:00
Lioncash
50d08beed2
loader: Amend Doxygen comments
...
These weren't adjusted when VFS was introduced
2018-07-19 14:04:33 -04:00
Lioncash
9b22f856c2
loader/nso: Check if read succeeded in IdentifyFile() before checking magic value
...
We should always assume the filesystem is volatile and check each IO
operation. While we're at it reorganize checks so that early-out errors
are near one another.
2018-07-19 12:43:21 -04:00
Lioncash
c061c2bf3c
hle/service: Make constructors explicit where applicable
...
Prevents implicit construction and makes these lingering non-explicit
constructors consistent with the rest of the other classes in services.
2018-07-19 12:25:02 -04:00
Lioncash
f3daecafeb
nvflinger: Emplace Display instances directly
...
We can use emplace_back to construct the Display instances directly,
instead of constructing them separately and copying them, avoiding the
need to copy std::string and std::vector instances that are part of the
Display struct.
2018-07-19 11:50:12 -04:00
bunnei
f1d7486eac
Merge pull request #703 from lioncash/const
...
savedata_factory: Make SaveDataDescriptor's DebugInfo() function a const member function
2018-07-19 08:46:15 -07:00
bunnei
b0334af05b
Merge pull request #702 from lioncash/initialize
...
partition_filesystem: Ensure all class members of PartitionFilesystem are initialized
2018-07-19 08:45:54 -07:00
bunnei
1bf7ae79c8
Merge pull request #701 from lioncash/moving
...
content_archive: Minor changes
2018-07-19 08:41:42 -07:00
Lioncash
dc35c3f9d7
nvdrv: Take std::string by const reference in GetDevice()
...
This is only ever used as a lookup into the device map, so we don't need to
take the std::string instance by value here.
2018-07-19 11:40:36 -04:00
Lioncash
af2698dcea
hle_ipc: Amend usage of buffer_index within one of HLERequestContext's WriteBuffer() overloads
...
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-19 11:10:16 -04:00
Lioncash
6c1ba02e0c
fsp_srv: Remove unnecessary vector construction in IFile's Write() function
...
We can avoid constructing a std::vector here by simply passing a pointer
to the original data and the size of the copy we wish to perform to the
backend's Write() function instead, avoiding copying the data where it's
otherwise not needed.
2018-07-19 11:01:07 -04:00
Lioncash
3e9b79e088
fsp_srv: Remove unnecessary std::vector construction in IDirectory's Read() function
...
We were using a second std::vector as a buffer to convert another
std::vector's data into a byte sequence, however we can just use
pointers to the original data and use them directly with WriteBuffer,
which avoids copying the data at all into a separate std::vector.
We simply cast the pointers to u8* (which is allowed by the standard,
given std::uint8_t is an alias for unsigned char on platforms that we
support).
2018-07-19 10:46:54 -04:00
bunnei
758c357868
Merge pull request #699 from lioncash/vfs
...
vfs: Deduplicate accumulation code in VfsDirectory's GetSize()
2018-07-19 07:38:45 -07:00
Lioncash
5da4c78c6a
filesystem: std::move VirtualDir instance in VfsDirectoryServiceWrapper's constructor
...
Avoids unnecessary atomic reference count incrementing and decrementing
2018-07-19 10:34:11 -04:00
Lioncash
abbf038191
filesystem: Use std::string's empty() function instead of comparing against a literal
...
This is simply a basic value check as opposed to potentially doing
string based operations (unlikely, but still, avoiding it is free).
2018-07-19 10:32:23 -04:00
Lioncash
2cc0ef83cf
filesystem: Remove pragma disabling global optimizations
...
This was just an artifact missed during PR review.
2018-07-19 10:30:53 -04:00
Lioncash
f317080f40
fsp_srv: Make IStorage constructor explicit
...
Prevents implicit conversions.
2018-07-19 10:04:16 -04:00
Lioncash
910ad2e110
fsp_srv: Add missing includes
...
Gets rid of relying on indirect inclusions.
2018-07-19 10:03:17 -04:00
Lioncash
6be342118a
fsp_srv: Resolve sign-mismatch warnings in assertion comparisons
2018-07-19 09:58:32 -04:00
Lioncash
d6e9b96e2f
fsp_srv: Respect write length in Write()
...
Previously we were just copying the data whole-sale, even if the length
was less than the total data size. This effectively makes the
actual_data vector useless, which is likely not intended.
Instead, amend this to only copy the given length amount of data.
At the same time, we can avoid zeroing out the data before using it by
passing iterators to the constructor instead of a size.
2018-07-19 09:57:48 -04:00
bunnei
368e1d25be
Merge pull request #692 from lioncash/assign
...
address_arbiter: Correct assignment within an assertion statement in WakeThreads()
2018-07-18 20:56:28 -07:00
bunnei
85421f3406
Merge pull request #690 from lioncash/move
...
core/memory, core/hle/kernel: Use std::move where applicable
2018-07-18 20:55:55 -07:00
Lioncash
88ba94e8a2
savedata_factory: Make SaveDataDescriptor's DebugInfo() function a const member function
...
This function doesn't alter class state.
2018-07-18 23:50:07 -04:00
Lioncash
9abc5763b6
partition_filesystem: Ensure all class members of PartitionFilesystem are initialized
...
Previously is_hfs and pfs_header members wouldn't be initialized in the
constructor, as they were stored in locals instead. This would result in
things like GetName() and PrintDebugInfo() behaving incorrectly.
While we're at it, initialize the members to deterministic values as
well, in case loading ever fails.
2018-07-18 23:45:22 -04:00
Lioncash
4790bb907d
content_archive: Make IsDirectoryExeFS() take a shared_ptr as a const reference
...
There's no need to take this by value when it's possible to avoid
unnecessary copies entirely like this.
2018-07-18 23:19:28 -04:00
Lioncash
87a9bb392b
content_archive: Add missing standard includes
2018-07-18 23:18:59 -04:00
Lioncash
0b566f43a1
content_archive: std::move VirtualFile in NCA's constructor
...
Gets rid of unnecessary atomic reference count incrementing and
decrementing.
2018-07-18 23:13:25 -04:00
Lioncash
5e626c774f
vfs: Deduplicate accumulation code in VfsDirectory's GetSize()
...
We can just use a generic lambda to avoid writing the same thing twice.
2018-07-18 23:03:27 -04:00
bunnei
1371e2fb6a
Merge pull request #691 from lioncash/guard
...
service/prepo: Add missing header guard
2018-07-18 19:46:14 -07:00
Lioncash
55ab369043
loader/nro: Resolve sign mismatch warnings
2018-07-18 22:27:22 -04:00
Lioncash
1831b5ef62
loader/nso: Remove unnecessary vector resizes
...
We can just initialize these vectors directly via their constructor.
2018-07-18 22:26:41 -04:00
Lioncash
e3a30ccc7c
loader/nso: Resolve sign mismatch warnings
2018-07-18 22:26:37 -04:00
bunnei
90ce935f3d
Merge pull request #688 from lioncash/comma
...
vm_manager: Add missing commas to string literal array elements in GetMemoryStateName()
2018-07-18 18:59:09 -07:00
bunnei
3f93279047
Merge pull request #693 from lioncash/unused
...
core/memory: Remove unused function GetSpecialHandlers() and an unused variable in ZeroBlock()
2018-07-18 18:57:13 -07:00
bunnei
49b0966003
Merge pull request #687 from lioncash/instance
...
core: Don't construct instance of Core::System, just to access its live instance
2018-07-18 18:55:58 -07:00
Zach Hilman
29aff8d5ab
Virtual Filesystem 2: Electric Boogaloo ( #676 )
...
* Virtual Filesystem
* Fix delete bug and documentate
* Review fixes + other stuff
* Fix puyo regression
2018-07-18 18:07:11 -07:00
Lioncash
72207577b2
core/memory: Remove unused function GetSpecialHandlers() and an unused variable in ZeroBlock()
2018-07-18 19:55:46 -04:00
Lioncash
2cd3141c30
address_arbiter: Correct assignment within an assertion statement in WakeThreads()
...
This was introduced within 4f81bc4e1b
, and
considering there's no comment indicating that this is intentional, this
is very likely a bug.
2018-07-18 19:46:46 -04:00
Lioncash
296e68fd43
service/prepo: Add missing header guard
2018-07-18 19:43:28 -04:00
Lioncash
93cba6f699
vm_manager: Add missing commas to string literal array elements in GetMemoryStateName()
...
Without these, this would perform concatenation, which is definitely not
what we want here.
2018-07-18 19:37:19 -04:00
Lioncash
46458e7284
core/memory, core/hle/kernel: Use std::move where applicable
...
Avoids pointless copies
2018-07-18 19:34:31 -04:00
Lioncash
10d2ab8098
core: Make System's default constructor private
...
This makes it a compilation error to construct additional instances of
the System class directly, preventing accidental wasteful constructions
over and over.
2018-07-18 18:18:27 -04:00
Lioncash
3a4841e403
core: Don't construct instance of Core::System, just to access its live instance
...
This would result in a lot of allocations and related object
construction, just to toss it all away immediately after the call.
These are definitely not intentional, and it was intended that all of
these should have been accessing the static function GetInstance()
through the name itself, not constructed instances.
2018-07-18 18:18:27 -04:00
Zach Hilman
c337272ca9
Fill in more fields in TouchScreenEntryTouch
2018-07-18 16:33:11 -04:00
Zach Hilman
f2f368014e
Single touch support
2018-07-18 14:06:33 -04:00
bunnei
49e5de9f03
vi: Change TransactionId::CancelBuffer to LOG_CRITICAL.
2018-07-17 22:47:35 -04:00
bunnei
0d1a99edf6
vi: Fix size for ListDisplays default display.
2018-07-17 22:18:14 -04:00
bunnei
c3dd456d51
vi: Partially implement buffer crop parameters.
2018-07-17 20:13:17 -04:00
Zach Hilman
69bfe075b5
General Filesystem and Save Data Fixes ( #670 )
2018-07-17 12:42:15 -07:00
bunnei
88a3140c9b
Merge pull request #671 from MerryMage/clear-exclusive-state
...
scheduler: Clear exclusive state when switching contexts
2018-07-17 07:33:32 -07:00
bunnei
519035db3d
Merge pull request #672 from SciresM/to_address_fix
...
svc:: Fix bug in svcWaitForAddress
2018-07-17 07:32:42 -07:00
bunnei
170e19d4ea
nvflinger: Fix for BufferQueue event handling.
2018-07-17 00:26:23 -04:00
Michael Scire
3b885691a1
Kernel/Arbiter: Fix bug in WaitIfLessThan
2018-07-16 20:55:53 -06:00
MerryMage
56cc1c11ec
scheduler: Clear exclusive state when switching contexts
2018-07-16 11:24:00 +01:00
James Rowe
7d209b3c9f
HID: Update controllers less often
2018-07-15 13:47:41 -06:00
bunnei
c324a378ac
Merge pull request #663 from Subv/bsd
...
Services/BSD: Corrected the return for StartMonitoring according to SwIPC
2018-07-14 19:40:34 -07:00
bunnei
fd1f5c5414
Merge pull request #662 from Subv/delete_file
...
FileSys: Append the requested path to the filesystem base path in DeleteFile
2018-07-14 13:11:58 -07:00
Subv
b07f4d6afb
Services/BSD: Corrected the return for StartMonitoring according to SwIPC.
2018-07-14 12:34:07 -05:00
Subv
7e5e4f8d7a
FileSys: Append the requested path to the filesystem base path in DeleteFile.
...
We were trying to delete things in the current directory instead of the actual filesystem directory. This may fix some savedata issues in some games.
2018-07-14 10:57:22 -05:00
David Marcec
a7d6c0d6ea
No need to use ASSERT_MSG with an empty message
2018-07-14 23:13:16 +10:00
Hedges
e066bc75b9
More improvements to GDBStub ( #653 )
...
* More improvements to GDBStub
- Debugging of threads should work correctly with source and assembly level stepping and modifying registers and memory, meaning threads and callstacks are fully clickable in VS.
- List of modules is available to the client, with assumption that .nro and .nso are backed up by an .elf with symbols, while deconstructed ROMs keep N names.
- Initial support for floating point registers.
* Tidy up as requested in PR feedback
* Tidy up as requested in PR feedback
2018-07-12 20:22:59 -07:00
David Marcec
8bd8d1e3da
We only need to alert for memory pool changes
2018-07-13 10:36:28 +10:00