Commit Graph

101 Commits

Author SHA1 Message Date
Michael Scire
3ef8f0f73f os: implement Barrier 2021-10-07 23:06:21 -07:00
Michael Scire
389018db64 os: implement SdkRecursiveMutex 2021-10-07 23:06:21 -07:00
Michael Scire
47bbff43c5 os: add unit tests for ExpandUnsignedValueToAscii 2021-10-07 23:06:20 -07:00
Michael Scire
c357cf7b87 os: implement ExpandUnsignedValueToAscii
Nintendo does this as of latest firmware.

It's desirable because it removes the only usage of util::SNPrintf() from os library,
which means programs which don't otherwise use SNPrintf do not need to link it into .text.

This saves ~0xD40 of .text as of time-of-commit when successfully unlinking, and e.g.
reduces our sm (and other modules) memory size by a page.
2021-10-07 23:06:20 -07:00
Michael Scire
6f53cbbe79 os: implement LightSemaphore 2021-10-07 23:06:20 -07:00
Michael Scire
41495ef51b os: implement LightMessageQueue 2021-10-07 23:06:19 -07:00
Michael Scire
c00d83204f os: refactor MessageQueue to use new MessageQueueHelper template 2021-10-07 23:06:19 -07:00
Michael Scire
9035b840a2 os: tweak LightEvent codegen 2021-10-07 23:06:19 -07:00
Michael Scire
3d6e8d5281 os: implement LightEvent 2021-10-07 23:06:19 -07:00
Michael Scire
57e380b2d6 os: implement ReadWriteBusyMutex 2021-10-07 23:06:18 -07:00
Michael Scire
6c98cd1ce2 os: implement BusyMutex 2021-10-07 23:06:18 -07:00
Michael Scire
7bb3153938 osdbg: implement thread info api 2021-09-19 10:35:27 -07:00
Michael Scire
fe21509991 ams-1.0.0: meso no longer optional, remove conditional logic 2021-09-06 16:32:47 -07:00
Michael Scire
07073a7580 sm: update to excise unnecessary library code 2021-05-12 09:09:41 -07:00
Michael Scire
2fe065b590 tipc/sm: various fixes for issues 2021-04-11 03:59:24 -07:00
Michael Scire
2542f282e0 sm: reimplement using tipc instead of cmif (probably broken, untested) 2021-04-11 03:59:24 -07:00
Michael Scire
9b47aa6e08 ams: prefer construct_at/destroy_at over placement new/explicit destructor 2021-04-11 03:59:04 -07:00
Michael Scire
1861791c1c ams: remove TYPED_STORAGE() macro in favor of template 2021-04-11 03:59:03 -07:00
Michael Scire
b58f3d9174 ro: reduce memory usage by excising (unused) std::malloc 2021-02-02 12:16:21 -08:00
Michael Scire
5c40e39e27 os: fix missing logic in SdkReplyAndReceive 2021-01-13 10:41:30 -08:00
Michael Scire
f62751fe0f os: implement 11.x SdkReplyAndReceive 2021-01-13 10:41:29 -08:00
Michael Scire
270766dbd1 strat: avoid using unique_lock in a few places 2021-01-13 10:41:29 -08:00
Michael Scire
803257776c ams: save 0x11000 of memory in spl via minor tweaks 2021-01-13 10:41:28 -08:00
Michael Scire
159ca97a9d os: remove completed TODO 2020-12-02 06:53:00 -08:00
Michael Scire
b09571b57e os: do not use deprecated libnx ::virtmemReserve api 2020-12-02 06:53:00 -08:00
Michael Scire
41bcdc9c1f gpio: implement more of server library for boot sysmodule client usage 2020-12-02 06:52:43 -08:00
Michael Scire
120c63b612 ddsf: implement namespace 2020-12-02 06:52:42 -08:00
Michael Scire
344a3265c0 os: fix building with new svc defs 2020-08-01 15:31:05 -07:00
Michael Scire
c5e4c7c921 kern: implement SvcWaitSynchronization 2020-08-01 15:31:01 -07:00
Michael Scire
3c7c4d8bff fs: implement AccessLog, enable for File operations 2020-08-01 15:30:55 -07:00
Michael Scire
a1a68953e0 sysupdater: implement (untested) rest of the api 2020-06-28 19:41:10 -07:00
Michael Scire
f3ae89aa2b os: use ported libnx mutex impl 2020-05-18 08:22:12 -07:00
SciresM
7d041e853d Switch atmosphere's build target to C++20. (#952)
* ams: update to build with gcc10/c++20

* remove mno-outline-atomics

* ams: take care of most TODO C++20s

* fusee/sept: update for gcc10

* whoosh, your code now uses pre-compiled headers

* make: dependency fixes
2020-05-12 15:44:19 -07:00
Michael Scire
ea45d6e146 os: oh geez look at the time 2020-05-12 15:44:16 -07:00
Michael Scire
2e18a27f3a os: bug fixes after re-review of rwlock code 2020-04-24 17:29:11 -07:00
Michael Scire
b8be9d0031 os: implement ReadWriteLock 2020-04-24 17:29:11 -07:00
Michael Scire
5a52014d1c hos: change initialization API
This was needed to make stratosphere buildable with debugging on.

os:: assertions rely on GetCurrentThread() working, and this requires
the global os resource manager to be constructed. However, __appInit executes
before global constructors. We now require that hos::InitializeForStratosphere()
be called before anything else is done. This initializes the os resource manager,
sets the hos version for libnx, and may do more things in the future.

TODO: Consider replacing __appInit/__appExit with ams:: namespace functions in general,
and wrap them so that we guarantee hos::InitializeForStratosphere is called first, and
generally ensure a consistent stratosphere environment.
2020-04-24 17:29:08 -07:00
SciresM
c1fe12fcbd pgl: Reimplement the pgl sysmodule (#896)
* pgl: add skeleton folder to stratosphere

* pgl: Add service interface for IShellInterface

* pgl: begin skeletoning shell service, implement two commands.

* pgl: Implement three more commands.

* pgl: implement bool tracking commands

* pgl: Implement TriggerApplicationSnapShotDumper

* pgl: implement InitializeProcessControlTask

* pgl: Implement pgl::srv::Initialize

* pgl: Implement main()

* pgl: Implement (Get)ShellEventObserver

* pgl: implement LaunchProgramFromHost, GetHostContentMetaInfo

* pgl: Implement ProcessControlTask

* settings: fix duplicate object name

* pgl: fix minor bugs in impl
2020-04-16 20:05:56 -07:00
Michael Scire
c190d46343 hos::Version: rename enum members 2020-04-15 11:55:01 -07:00
Michael Scire
a0cddf7c06 os: refactor/rewrite entire namespace. 2020-04-15 11:54:59 -07:00
SciresM
926d5a55d6 mem: implement most of StandardAllocator (#860)
This was tested using `https://github.com/node-dot-cpp/alloc-test` plus a few other by-hand tests.

It seems to work for the case we care about (sysmodules without thread cache-ing).

External users are advised to build with assertions on and contact SciresM if you find issues.

This is a lot of code to have gotten right in one go, and it was written mostly after midnight while sick, so there are probably un-noticed issues.
2020-03-30 20:41:21 -07:00
Michael Scire
07684b2c65 stratosphere: fix building with latest libnx 2020-03-18 00:15:04 -07:00
Michael Scire
0c60930e33 os: add rngmanager 2020-03-18 00:15:02 -07:00
Michael Scire
45b839ec3a Add architecture-specific guard for get tick 2020-03-18 00:15:02 -07:00
Michael Scire
8bcf34a172 os: implement Tick api, make build with -Werror 2020-03-18 00:15:01 -07:00
Michael Scire
93d4cbef94 libstrat: fix unconverted _WITH_ASSERTs 2020-03-02 19:51:07 -08:00
Michael Scire
1e9368c770 ams: revamp assertion system 2020-03-02 19:51:04 -08:00
Michael Scire
7ee4ae460e find -exec sed -i'' -e 's/2018-2019 Atmo/2018-2020 Atmo/g' {} + 2020-03-02 19:50:40 -08:00
Michael Scire
58236db55e util::IntrusiveList: assert member referencing is correct 2020-03-02 19:50:39 -08:00
Michael Scire
5e55beeda0 random: use TinyMT instead of XorShift 2019-12-10 19:17:50 -08:00
Michael Scire
5797d753bf libstratosphere is now just one lib 2019-12-08 17:01:03 -08:00