Commit Graph

37 Commits

Author SHA1 Message Date
Michael Scire
6a5d2ced4b ams: globally prefer R_RETURN to return for ams::Result 2022-04-04 17:46:58 -07:00
Michael Scire
6f4618ea60 ams: use R_SUCCEED, R_THROW globally 2022-04-04 17:46:57 -07:00
Michael Scire
d7a9c7ec4c ams: support building unit test programs on windows/linux/macos 2022-03-23 09:15:46 -07:00
SciresM
00203fd7c3 Integrate new result macros. (#1780)
* result: try out some experimental shenanigans

* result: sketch out some more shenanigans

* result: see what it looks like to convert kernel to use result conds instead of guards

* make rest of kernel use experimental new macro-ing
2022-03-23 09:15:40 -07:00
Michael Scire
6298a7eb6d sm/tipc: ensure technical-correctness of sins (no page cost) 2021-11-30 16:34:44 -08:00
Michael Scire
93ea593e59 sm: save 0x5000 of memory by sinning 2021-11-30 16:34:43 -08:00
Léo Lam
2916512fb7 Minor header fixes to reduce parsing issues with Clang (#1700)
* Work around Clang's incomplete C++20 support for omitting typename

* vapours: fix Clang error about missing return in constexpr function

* stratosphere: fix call to non-constexpr strlen in constexpr function

strlen being constexpr is a non-compliant GCC extension; Clang
explicitly rejects it: https://reviews.llvm.org/D23692

* stratosphere: add a bunch of missing override specifiers

* stratosphere: work around Clang consteval bug

Minimal example: https://godbolt.org/z/MoM64v93M

The issue seems to be that Clang does not consider f(x) to be a
constant expression if x comes from a template argument that isn't
a non-type auto template argument (???)

We can work around this by relaxing GetMessageHeaderForCheck (by using
constexpr instead of consteval). This produces no functional changes
because the result of GetMessageHeaderForCheck() is assigned to a
constexpr variable, so the result is guaranteed to be computed
at compile-time.

* stratosphere: fix missing require clauses in definitions

GCC not requiring the require clauses to be repeated for member
definitions is actually a compiler bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96830

Clang rejects declarations with missing require clauses.

* Fix ALWAYS_INLINE_LAMBDA and parameter list relative order

While GCC doesn't seem to care about the position of the always_inline
attribute relative to the parameter list, Clang is very picky
and requires the attribute to appear after the parameter list
(and before a trailing return type)

* stratosphere: fix static constexpr member variable with incomplete type

GCC accepts this for some reason (because of the lambda?) but Clang
correctly rejects this.
2021-11-30 16:34:43 -08:00
Michael Scire
960c5c19f9 ams: improve offsetof style consistency 2021-10-26 01:11:10 -07:00
Michael Scire
cf765c0946 tipc: implement special-case templating used by 13.0.0 pgl 2021-10-15 23:54:40 -07:00
Michael Scire
0238bdf65b tipc: enable named-thread dispatch 2021-10-15 23:54:40 -07:00
Michael Scire
56222786c6 tipc/sm: update more fully for 13.0.0 changes 2021-10-15 23:54:39 -07:00
Michael Scire
15f27d59df tipc: add additional logic from 13.0.0 2021-10-15 23:54:39 -07:00
Michael Scire
15b3f9545f sm/tipc: minor cleanup 2021-10-15 23:54:39 -07:00
Michael Scire
3e33fb6361 strat: use m_ for member variables 2021-10-15 23:54:35 -07:00
Michael Scire
612b9e2f01 strat: prefer os::NativeHandle to Handle/svc::Handle where sensible 2021-10-07 23:06:26 -07:00
Michael Scire
5a71876ca8 strat: use svc:: over ::svc 2021-10-07 23:06:26 -07:00
Michael Scire
002422d5dc ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-07 23:06:25 -07:00
Michael Scire
6125281acd os: adopt multiwait naming over waitable 2021-10-07 23:06:23 -07:00
Michael Scire
c68298a00e stratosphere: use SdkMutex/SdkRecursiveMutex over Mutex 2021-10-07 23:06:22 -07:00
Michael Scire
b5b55f60d8 sf/tipc: treat min/max as true min/max, rather than numeric 2021-05-12 22:47:21 -07:00
Michael Scire
888b39fa50 ams: assume gcc 11 2021-04-29 03:04:54 -07:00
Michael Scire
12471d428d strat: compat with gcc 11 2021-04-29 03:04:54 -07:00
Michael Scire
ea3eb3c97e tipc: ports use objects in the object manager 2021-04-29 03:04:51 -07:00
Michael Scire
0904656559 sm: save 0x1000 in data costs by not aligning server manager to 0x1000 2021-04-29 03:04:51 -07:00
Michael Scire
ac6f1fecaf pgl: update to use tipc (untested) 2021-04-11 03:59:25 -07:00
Michael Scire
58e70ac441 tipc: Result is first raw data word, not last 2021-04-11 03:59:24 -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
728bda9677 tipc: server processor fixes (compiles!) 2021-04-11 03:59:23 -07:00
Michael Scire
51416763fb tipc: implement ServerManager processing logic 2021-04-11 03:59:23 -07:00
Michael Scire
484bc20f16 tipc: implement framework/server support logic (except for actual processing) 2021-04-11 03:59:23 -07:00
Michael Scire
3f59907760 tipc: fix deserialization of buffers 2021-04-11 03:59:22 -07:00
Michael Scire
54c36042a8 tipc: hard-enforce boolean constraints in command processing generation 2021-04-11 03:59:22 -07:00
Michael Scire
5bb7a55fe3 tipc: implement service object interface generation 2021-04-11 03:59:22 -07:00
Michael Scire
434056a334 tipc: first draft object allocation logic 2021-04-11 03:59:21 -07:00
Michael Scire
8301b868fd tipc: fix compilation issues with core serialization routines 2021-04-11 03:59:21 -07:00
Michael Scire
7145b887bd tipc: tentative core serialization logic (missing imports, won't compile) 2021-04-11 03:59:21 -07:00