Michael Scire
38bdd8279d
fssrv: add placeholder for ipc interface
2022-03-23 09:15:41 -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
a392646aab
sf/cmif: optimize dispatch table walk to use binary search over linear search
2022-01-19 16:28:54 -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
68e9f7c853
strat: fix some mitm server management logic
2021-10-15 23:54:39 -07:00
Michael Scire
a9322a7245
sf: prevent emitting mitm/defer code unless server in process supports it
2021-10-15 23:54:38 -07:00
Michael Scire
3e33fb6361
strat: use m_ for member variables
2021-10-15 23:54:35 -07:00
Michael Scire
3b5f56ab9f
ams: replace most remaining operator & with std::addressof
2021-10-15 23:54:34 -07:00
Michael Scire
5c32ec11ea
strat: refactor address taking of form &var[...]
2021-10-15 23:54:34 -07:00
Michael Scire
843dc8e521
libstrat: fix compilation without pre-compiled header/without lto
2021-10-07 23:06:28 -07:00
Michael Scire
fd1b6d4578
libstrat: enable -Wextra, -Werror
...
This caught an embarrassingly large number of bugs.
2021-10-07 23:06:28 -07:00
Michael Scire
4ce6273f2b
strat: use sf::NativeHandle for ipc templating
2021-10-07 23:06:27 -07:00
Michael Scire
d4221d822e
sf: add NativeHandle type
...
TODO: figure out how to integrate this into templating...
2021-10-07 23:06:26 -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
69a0ec03e9
strat: use consistent include style for lib headers
2021-10-07 23:06:23 -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
434056a334
tipc: first draft object allocation logic
2021-04-11 03:59:21 -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
d23bc85d38
htcs: fixes, echo server is now fully functional
2021-04-11 03:58:53 -07:00
Michael Scire
2850786a0b
htcs: hook up HtcsService to rpc client
2021-04-11 03:58:51 -07:00
Michael Scire
099594469b
htcs: hook service objects up to (unimplemented) manager apis
2021-04-11 03:58:49 -07:00
Michael Scire
1af323f5b8
htcfs: implement OpenDirectory/CloseDirectory
2021-04-11 03:58:47 -07:00
Michael Scire
249daa0222
sf: optimize argument parsing for const LargeData &
2021-04-11 03:58:46 -07:00
Michael Scire
0caf11755e
htcs: add sf interface info/types
2021-04-11 03:58:42 -07:00
Michael Scire
b209249e12
ams_mitm: update for new sf semantics
2021-02-02 12:16:24 -08:00
Michael Scire
29b3baf678
util::string_view, update pgl for new sf semantics
2021-02-02 12:16:21 -08:00
Michael Scire
03654bacf6
sm, spl: update to use new sf semantics
2021-02-02 12:16:20 -08:00
Michael Scire
637c44f64d
libstrat: convert to experimental new (super-accurate) sf allocation semantics
2021-02-02 12:16:20 -08:00
Michael Scire
128884fb56
sf: alter serialization to re-use as much logic as possible
2021-01-13 10:41:28 -08:00
Michael Scire
ced1312dc7
sm: implement accurate request deferral semantics
2021-01-05 15:14:01 -08:00
Michael Scire
134d7f2d9f
i2c/gpio: hook up open session for sf interface
2020-12-02 06:52:46 -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
3241b60a01
sf: support service objects which must themselves be shared pointers
2020-08-01 15:30:57 -07:00
SciresM
ecf8389efd
sf: Change interface definition methodology ( #1074 )
...
* sf: Begin experimenting with new interface declaration format
* sf: convert fs interfaces to new format
* sf: finish conversion of libstrat to new definitions
* sf: convert loader to new format
* sf: convert spl to new format
* sf: update ncm for new format
* sf: convert pm to new format
* sf: convert ro/sm to new format
* sf: update fatal for new format
* sf: support building dmnt under new scheme
* sf: update ams.mitm for new format
* sf: correct invocation def for pointer holder
* fs: correct 10.x+ user bindings for Get*SpaceSize
2020-08-01 15:30:56 -07:00
Michael Scire
3c7c4d8bff
fs: implement AccessLog, enable for File operations
2020-08-01 15:30:55 -07:00
Michael Scire
1867bc1264
sysupdater: Add ValidateUpdate, begin implementing Async logic
2020-06-28 19:41:10 -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
1f35c699a7
ams: revamp target firmware
2020-05-12 15:44:18 -07:00
Michael Scire
0de0f530f3
sf: properly support preservation of inline context
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
a0cddf7c06
os: refactor/rewrite entire namespace.
2020-04-15 11:54:59 -07:00
Michael Scire
62f5667b5f
sf: fix OutArray/InArray constructors to behave as expected
2020-04-02 00:28:54 -07:00
Michael Scire
ec527bc460
ncm: use static memory pools for different allocations
2020-03-30 20:41:21 -07:00
Adubbz
aec0f45bdb
Implement the NCM sysmodule ( closes #91 )
...
* Implement NCM
* Modernize ncm_main
* Remove unnecessary smExit
* Give access to svcCallSecureMonitor
* Stack size bump
* Fix incorrect setup for NandUser's content storage entry
* Fix a potential data abort when flushing the placeholder accessor cache
* Fix HasFile and HasDirectory
* Use r+b, not w+b
* Misc fixes
* errno begone
* Fixed more stdio error handling
* More main fixes
* Various command improvements
* Make dispatch tables great again
* Fix logic inversion
* Fixed content path generation
* Bump heap size, fix CleanupAllPlaceHolder
* Various fixes. Note: This contains debug stuff which will be removed later. I was getting tired of having to cherrypick tiny changes
* Fixed placeholder/content deletion
* Fixed incorrect content manager destruction
* Prevent automatic placeholder creation on open
* Fixed List implementation. Also lots of debug logging.
* Removed debug code
* Added a scope guard for WritePlaceHolder
* Manually prevent placeholder/content appending
* Revert "Removed debug code"
This reverts commit d6ff261fcc8c1f26968e894b02c17a01a12ec98b.
* Always cache placeholder file. Switch to ftell for preventing appending
* Universally use EnsureEnabled
* Abstract away file writing logic
* Misc cleanup
* Refactor placeholder cacheing
* Remove debug code (again)
* Revert "Remove debug code (again)"
This reverts commit 168447d80e9640768fb1b43f04a385507c1bb5ab.
* Misc changes
* Fixed file modes
* Fixed ContentId/PlaceHolderId alignment
* Improved type safety
* Fixed reinitialization
* Fixed doubleup on path creation
* Remove debug code
* Fixed 1.0.0 booting
* Correct amount of add on content
* Correct main thread stack size
* lr: Introducing registered data
* Reorder stratosphere Makefile
* Move results to libstrat
* lr: Cleanup lr_redirection
* lr: lr_manager tweaks
* lr: Imrpoved path handling and adjust ResolveAddOnContentPath order
* lr: Organise types
* Add eof newlines
* lr: Eliminate unnecessary vars
* lr: Unnecessary vars 2 electric boogaloo
* lr: Various helpers
* lr: RegisteredLocationResolver helpers
* ncm: Move ncm_types to libstrat
* ncm: Misc cleanup
* Implement NCM
* Modernize ncm_main
* Remove unnecessary smExit
* Give access to svcCallSecureMonitor
* Stack size bump
* Fix incorrect setup for NandUser's content storage entry
* Fix a potential data abort when flushing the placeholder accessor cache
* Fix HasFile and HasDirectory
* Use r+b, not w+b
* Misc fixes
* errno begone
* Fixed more stdio error handling
* More main fixes
* Various command improvements
* Make dispatch tables great again
* Fix logic inversion
* Fixed content path generation
* Bump heap size, fix CleanupAllPlaceHolder
* Various fixes. Note: This contains debug stuff which will be removed later. I was getting tired of having to cherrypick tiny changes
* Fixed placeholder/content deletion
* Fixed incorrect content manager destruction
* Prevent automatic placeholder creation on open
* Fixed List implementation. Also lots of debug logging.
* Removed debug code
* Added a scope guard for WritePlaceHolder
* Manually prevent placeholder/content appending
* Revert "Removed debug code"
This reverts commit d6ff261fcc8c1f26968e894b02c17a01a12ec98b.
* Always cache placeholder file. Switch to ftell for preventing appending
* Universally use EnsureEnabled
* Abstract away file writing logic
* Misc cleanup
* Refactor placeholder cacheing
* Remove debug code (again)
* Revert "Remove debug code (again)"
This reverts commit 168447d80e9640768fb1b43f04a385507c1bb5ab.
* Misc changes
* Fixed file modes
* Fixed ContentId/PlaceHolderId alignment
* Improved type safety
* Fixed reinitialization
* Fixed doubleup on path creation
* Remove debug code
* Fixed 1.0.0 booting
* Correct amount of add on content
* Correct main thread stack size
* lr: Introducing registered data
* Reorder stratosphere Makefile
* Move results to libstrat
* lr: Cleanup lr_redirection
* lr: lr_manager tweaks
* lr: Imrpoved path handling and adjust ResolveAddOnContentPath order
* lr: Organise types
* Add eof newlines
* lr: Eliminate unnecessary vars
* lr: Unnecessary vars 2 electric boogaloo
* lr: Various helpers
* lr: RegisteredLocationResolver helpers
* ncm: Move ncm_types to libstrat
* ncm: Misc cleanup
* Updated AddOnContentLocationResolver and RegisteredLocationResolver to 9.0.0
* Finished updating lr to 9.0.0
* Updated NCM to 9.0.0
* Fix libstrat includes
* Fixed application launching
* title_id_2 -> owner_tid
* Updated to new-ipc
* Change to using pure virtuals
* Title Id -> Program Id
* Fixed compilation against master
* std::scoped_lock<> -> std::scoped_lock
* Adopted R_UNLESS and R_CONVERT
* Prefix namespace to Results
* Adopt std::numeric_limits
* Fixed incorrect error handling in ReadFile
* Adopted AMS_ABORT_UNLESS
* Adopt util::GenerateUuid()
* Syntax improvements
* ncm_types: Address review
* Address more review comments
* Updated copyrights
* Address more feedback
* More feedback addressed
* More changes
* Move dispatch tables out of interface files
* Addressed remaining comments
* lr: move into libstratosphere
* ncm: Fix logic inversion
* lr: Add comments
* lr: Remove whitespace
* ncm: Start addressing feedback
* ncm: Cleanup InitializeContentManager
* lr: support client-side usage
* lr_service -> lr_api
* ncm: Begin refactoring content manager
* ncm: More content manager improvements
* ncm: Content manager mount improvements
* ldr: use lr bindings
* lr bindings usage: minor fixes
* ncm/lr: Pointer placement
* ncm: placeholder accessor cleanup
* ncm: minor fixes
* ncm: refactor rights cache
* ncm: content meta database cleanup
* ncm: move content meta database impl out of interface file
* ncm: Use const ContentMetaKey &
* ncm: fix other non-const ContentMetaKey references
* ncm: content meta database cleanup
* ncm: content storage fixes for 2.0.0
* ncm: add missing end of file newlines
* ncm: implement ContentMetaReader
* ncm: client-side api
* ncm: trim trailing spaces
* ncm: FS_MAX_PATH-1 -> fs::EntryNameLengthMax
* ncm: Use PathString and Path
* fs: implement accessor wrappers for ncm
* fs: implement user fs wrappers
* fs: add MountSdCard
* ncm: move to content manager impl
* ncm: fix up main
* kvdb: use fs::
* fs: Add wrappers needed for ncm
* ncm: use fs bindings, other refactoring
* ncm: minor fixes
* fsa: fix ReadFile without size output
* fs: add substorage, rom path tool
* ncm: fix dangling fsdev usage
* fs: fix bug in Commit
* fs: fixed incorrect mode check
* fs: implement Mount(System)Data
* ncm: don't delete hos
* results: add R_SUCCEED_IF
* ams-except-ncm: use R_SUCCEED_IF
* ncm: added comments
* ncm: fix api definitions
* ncm: use R_SUCCEED_IF
* pm: think of the savings
* ncm: employ kernel strats
* ncm: Nintendo has 5 MiB of heap. Give ourselves 4 to be safe, pending analysis
* ncm: refactor IDs, split types header into many headers
* ams.mitm: use fs bindings instead of stdio
* fs: SystemData uses SystemDataId
* ncm: improve meta-db accuracy
* ncm: inline getlatestkey
* fs: improve UnsupportedOperation results
* fs: modernize mount utils
* ams: misc fixes for merge-errors
* fs: improve unsupportedoperation results
* git subrepo pull emummc
subrepo:
subdir: "emummc"
merged: "d12dd546"
upstream:
origin: "https://github.com/m4xw/emuMMC "
branch: "develop"
commit: "d12dd546"
git-subrepo:
version: "0.4.1"
origin: "???"
commit: "???"
* util: add boundedmap
* ncm: minor style fixes
* ncm: don't unmount if mounting fails
* lr: bug fixes
* ncm: implement ncm.for-initialize + ncm.for-safemode
* lr: ncm::ProgramId::Invalid -> ncm::InvalidProgramId
* ncm: fix open directory mode on 1.0.0
* ncm: fix fs use, implement more of < 4.0.0 for-initialize/safemode
* ncm: implement packagedcontent -> content for building metadb
* ncm: fix save data flag management
* ncm: address some review suggestions (thanks @leoetlino!)
* updater: use fs bindings
* fs: implement MountCode
* fs: prefer make_unique to operator new
* ncm: implement remaining ContentMetaDatabaseBuilder functionality
Co-authored-by: Michael Scire <SciresM@gmail.com>
2020-03-09 18:03:38 -07:00