Commit graph

1506 commits

Author SHA1 Message Date
Michael Scire
c0d5140ef0 strat: add windows socket api, linux/macos TODO 2022-03-27 14:36:31 -07:00
Michael Scire
1bef1b58d4 fs: also update comment, for locking 2022-03-26 15:29:38 -07:00
Michael Scire
07cd682460 fs: fix inverted optional-lock condition 2022-03-26 15:28:40 -07:00
Michael Scire
e5c3d264ec fs: implement new 14.0.0 spl-ctr dispatch semantics 2022-03-26 15:21:12 -07:00
Michael Scire
bbf22b4c60 ams: globally prefer R_RETURN to return for ams::Result 2022-03-26 14:48:33 -07:00
Michael Scire
dd78ede99f ams: use R_SUCCEED, R_THROW globally 2022-03-26 00:14:36 -07:00
Michael Scire
a4a2cc2218 fs: update IStorage::Check functions for 14.0.0 2022-03-25 23:29:36 -07:00
Michael Scire
5ffbed1bee fs: update a few loose missed results 2022-03-25 10:02:55 -07:00
Michael Scire
ec44eaa263 fs: update nca drivers (and dependents/callees) for 14.0.0 changes 2022-03-25 09:48:24 -07:00
Michael Scire
20e53fcd82 fs: update HashGeneratorFactorySelector to reflect 14.0.0 2022-03-24 21:57:37 -07:00
SciresM
64c6ef2de7
fs: reduce path size 0x28 -> 0x18
This implements two optimizations on fs::Path, which N added in 12.0.0.

The current structure looks like: 

```cpp
struct Path {
    const char *m_str; // Points to the read-only path string
    char *m_write_buffer_buffer; // Part of std::unique_ptr<char[], ams::fs::impl::Deleter>
    ams::fs::impl::Deleter m_write_buffer_deleter; // Parse of std::unique_ptr<char[], ams::fs::impl::Deleter>, stores the size of the buffer.
    size_t m_write_buffer_length; // Copy of the write buffer's size accessible to the Path() structure.
    bool m_is_normalized; // Whether the path buffer is normalized
};
```

This is pretty wasteful. The write buffer size is stored twice, wasting 8 bytes, because one copy of the size isn't accessible to the path.

In addition, due to alignment, the bool wastes 7 padding bytes.

This commit:

* Encodes normalized in the low bit of the write buffer length, saving 8 bytes.
* Use a custom WriteBuffer class rather than generic unique_ptr, to avoid needing to store the WriteBuffer twice.


These each save 8 bytes, for a final size of 0x18 rather than 0x28.
2022-03-24 20:22:47 -07:00
Michael Scire
817ad8f98d util: pointer traits only if <memory>/stratosphere 2022-03-24 18:24:19 -07:00
Michael Scire
dfa475a769 util: add pointer utils, use to constrain fs pointers 2022-03-24 16:21:03 -07:00
Michael Scire
141ae5c7ab fs: fix removed include 2022-03-24 13:31:49 -07:00
Michael Scire
4646581e93 fs: for my sanity, begin tracking version where code was last checked for accuracy 2022-03-24 08:43:40 -07:00
Michael Scire
0da15a30fd git subrepo push libraries
subrepo:
  subdir:   "libraries"
  merged:   "726a7efdd"
upstream:
  origin:   "https://github.com/Atmosphere-NX/Atmosphere-libs"
  branch:   "master"
  commit:   "726a7efdd"
git-subrepo:
  version:  "0.4.1"
  origin:   "???"
  commit:   "???"
2022-03-23 13:45:59 -07:00
Michael Scire
6f54ab5716 fs: fix out of bounds access when parsing directory paths 2022-03-23 13:38:34 -07:00
Michael Scire
027f3b4911 git subrepo push libraries
subrepo:
  subdir:   "libraries"
  merged:   "af48924e5"
upstream:
  origin:   "https://github.com/Atmosphere-NX/Atmosphere-libs"
  branch:   "master"
  commit:   "af48924e5"
git-subrepo:
  version:  "0.4.1"
  origin:   "???"
  commit:   "???"
2022-03-23 11:25:46 -07:00
Michael Scire
3fff114b14 crypto: fix aes-128 dec on arm64/cortex-a57 2022-03-23 11:24:43 -07:00
Michael Scire
f23f490cb4 strat: fix clang build 2022-03-23 10:39:20 -07:00
Michael Scire
b1a4a0db67 git subrepo push libraries
subrepo:
  subdir:   "libraries"
  merged:   "d97cdde1a"
upstream:
  origin:   "https://github.com/Atmosphere-NX/Atmosphere-libs"
  branch:   "master"
  commit:   "d97cdde1a"
git-subrepo:
  version:  "0.4.1"
  origin:   "???"
  commit:   "???"
2022-03-23 09:17:52 -07:00
Michael Scire
01fd324d4f os/dd: add missing semicolon to new cache logic 2022-03-23 09:10:50 -07:00
Michael Scire
f95bdb87a0 exo: right, Mariko* is a wiki-ism 2022-03-23 09:10:50 -07:00
Michael Scire
91d3d242f5 exo: update for new dram ids 2022-03-23 09:10:50 -07:00
Michael Scire
383fc2cc99 kern: codegen tweaks, now that we're no longer -Os 2022-03-23 09:10:50 -07:00
Michael Scire
1ca2f61527 kern: good night sweet prince 2022-03-23 09:10:50 -07:00
Michael Scire
cdc619a8a6 kern: on second thought, gcc built ins are for chumps 2022-03-23 09:10:50 -07:00
Michael Scire
ff07ba4201 kern: implement revised IPI/SGI semantics 2022-03-23 09:10:50 -07:00
Michael Scire
9d89835ff8 kern: update for new hw maintenance semantics 2022-03-23 09:10:50 -07:00
Michael Scire
6e17317d5d kern: implement new thread context/fpu semantics 2022-03-23 09:10:50 -07:00
Michael Scire
401047f603 kern: implement additional randomness in KPageHeap allocations 2022-03-23 09:10:50 -07:00
Michael Scire
24739f245e kern: enforce end of dram == end of partitions (move our probably outdated KTraceBuffer to new location) 2022-03-23 09:10:50 -07:00
Michael Scire
8cb3cfd835 kern: add new KCapability checks before creating process 2022-03-23 09:10:50 -07:00
Michael Scire
14e768cd10 kern: add InfoType_IsSvcPermitted 2022-03-23 09:10:50 -07:00
Michael Scire
ef1b67b87b kern: enforce maximum secure region size 2022-03-23 09:10:50 -07:00
Michael Scire
8ef6c49d30 kern: print kernel backtrace on panic 2022-03-23 09:10:50 -07:00
Michael Scire
a89c5dd5d7 ncm: hot take, uninitialized data bad 2022-03-23 09:10:50 -07:00
Michael Scire
dfcb5005d2 fs/sprof/build: fix minor issues 2022-03-23 09:10:50 -07:00
Michael Scire
07f91f0a83 boot2: launch omm before am 2022-03-23 09:10:50 -07:00
Michael Scire
81005fa3f8 pgl: style nitpick 2022-03-23 09:10:50 -07:00
Michael Scire
60d78bbf75 pgl: hook up logic for enabling extra system threads 2022-03-23 09:10:50 -07:00
Michael Scire
247852db3a pm: hook up the new libnx apis 2022-03-23 09:10:50 -07:00
Michael Scire
74fddf667a pm: loosen restriction on resource limit boost 2022-03-23 09:10:50 -07:00
Michael Scire
027242e909 erpt: update id map 2022-03-23 09:10:50 -07:00
Michael Scire
86f98e49c7 sf: add another sanity assert 2022-03-23 09:10:50 -07:00
Michael Scire
3579797309 sf: add new debug-interface-id in cmif out header 2022-03-23 09:10:50 -07:00
Michael Scire
77b3bfcd16 sprofile: fix/simplify import count calculation 2022-03-23 09:10:50 -07:00
Michael Scire
fa98bf9434 libstrat: misc fixes for unused arg warnings 2022-03-23 09:10:50 -07:00
Michael Scire
e975784179 fatal: update for new 14.0.0 command 2022-03-23 09:10:50 -07:00
Michael Scire
dc643daaa7 kern: update version (note: actual 14-kernel diff/impl todo) 2022-03-23 09:10:50 -07:00
Michael Scire
e05df99342 pm/kern: update for 14.0.0 2022-03-23 09:10:50 -07:00
Michael Scire
0cfc93d423 sprofile: update for 14.0.0 (orphaned profiles now deleted on import) 2022-03-23 09:10:50 -07:00
Michael Scire
588d761615 exo/fusee: first pass at updating enums for 14.0.0 2022-03-23 09:10:50 -07:00
Michael Scire
320a946fc7 ncm: update client code to better reflect latest sysupdate 2022-03-21 17:21:44 -07:00
Michael Scire
ca142889c4 strat: only include windows.h in translation units where actually needed 2022-03-21 17:21:44 -07:00
Michael Scire
000713186f windows: link libgcc/libstdc++ statically 2022-03-21 17:21:44 -07:00
Michael Scire
c35114bacc fs: utilities for hac2l to print gc headers 2022-03-21 17:21:44 -07:00
Michael Scire
2d984822c6 fs: add gc validation wrappers for hac2l 2022-03-21 17:21:44 -07:00
Michael Scire
32d443977e fs: add indirection to raw storage open, for hac2l 2022-03-21 17:21:44 -07:00
Michael Scire
9866285f0e util: update function dtors, update gitignore 2022-03-21 17:21:44 -07:00
Michael Scire
9911c44670 lz4: update to git-master 2022-03-21 17:21:44 -07:00
Michael Scire
741efd04ec strat: minor result/overflow check fixes 2022-03-21 17:21:44 -07:00
Michael Scire
e13b81aa9e fs: revise allocation-fail result names 2022-03-21 17:21:44 -07:00
Michael Scire
11e4bed199 strat: revise fs unsupported operation results, add overflow utils 2022-03-21 17:21:44 -07:00
Michael Scire
ba4e7c5866 fs: fix inverted alignment determination in compressed storage 2022-03-21 17:21:44 -07:00
Michael Scire
da1b24b9b5 fs: fix locking in FileSystemBufferManager 2022-03-21 17:21:44 -07:00
Michael Scire
cb3d20ef79 fs: fix clang-build, os: StackGuardManager 2022-03-21 17:21:44 -07:00
Michael Scire
be9338eb33 fs: move bitmap classes out of save:: 2022-03-21 17:21:44 -07:00
Michael Scire
7a69723021 fs: fix missing mutex acquire in compressed storage invalidate/find 2022-03-21 17:21:44 -07:00
Michael Scire
d638bbbb62 fs: first pass at compressed storage (works on iridium with wip hac2l code) 2022-03-21 17:21:44 -07:00
Michael Scire
df631d74f0 fssrv: add ExternalKeyManager (rights-id crypto) for hac2l 2022-03-21 17:21:44 -07:00
Michael Scire
3c6d965e1a symbols: use same strategy on windows as on macOS 2022-03-21 17:21:44 -07:00
Michael Scire
49cddd68e4 use cxxabi for demangling on linux/windows 2022-03-21 17:21:44 -07:00
Michael Scire
ee5f99fdb4 Implement working macOS backtrace symbolization 2022-03-21 17:21:44 -07:00
Michael Scire
7456a77ba9 os: add working stack logic for macOS 2022-03-21 17:21:44 -07:00
Michael Scire
a3865e721a fix stack getting on linux, add test 2022-03-21 17:21:44 -07:00
Michael Scire
6aab36fc6a diag: fix typo in hos-specific backtrace getter 2022-03-21 17:21:44 -07:00
Michael Scire
79b1835a2b crypto: add ability to hash data at compile time, for future diag use 2022-03-21 17:21:44 -07:00
Michael Scire
646f84bad1 abort/error: print backtrace, abuse templates, overhaul result/diag (macos not done yet) 2022-03-21 17:21:44 -07:00
Michael Scire
18168d54c3 lib: simplify pragma macros 2022-03-21 17:21:44 -07:00
Michael Scire
edf80192d9 remove leftover debug print 2022-03-21 17:21:44 -07:00
Michael Scire
13697fa921 libs: add ongoing work to facilitate hactool rewrite 2022-03-21 17:21:44 -07:00
Michael Scire
706b8492fd libs: begin adding capacity for doing crypto on generic os (using externally-preset keys) 2022-03-21 17:21:44 -07:00
Michael Scire
6368d8063a fs: add just in case bounds checking to linux/macos dirent read 2022-03-21 17:21:44 -07:00
Michael Scire
1933f35db6 add basic tests for os::Event/SystemEvent functionality 2022-03-21 17:21:44 -07:00
Michael Scire
64a97576d0 ams: support building unit test programs on windows/linux/macos 2022-03-21 17:21:44 -07:00
Michael Scire
9a38be201a erpt: add automatic report cleanup mechanism on boot (closes #1795) 2022-03-17 00:31:38 -07:00
merry
9545cbb4cb KThreadContext: Use El0PsrMask constant in GetUserContext 2022-03-06 11:22:28 -08:00
Michael Scire
2b6719ec25 ams_mitm: update to use new NcaFileSystemDriver intf 2022-02-21 15:17:17 -08:00
Michael Scire
e08f754646 crypto: fix asm constraints for memory comparison 2022-02-21 15:17:17 -08:00
Michael Scire
3f6010b4dc fix SubStorage copy ctor/= op for new shared_ptr member 2022-02-21 15:17:17 -08:00
Michael Scire
01f7f567b9 fs: add Sha256HashGenerator, LZ4 decompressor 2022-02-21 15:17:17 -08:00
Michael Scire
a2aec363d7 fs: remove now unused StorageOption 2022-02-21 15:17:17 -08:00
Michael Scire
52296fc2dd fs: revise NcaFileSystemDriver for latest semantics 2022-02-21 15:17:17 -08:00
Michael Scire
ccf29a1302 fssystem: revise allocator logic for latest semantics 2022-02-21 15:17:17 -08:00
Michael Scire
28ea6555f8 fssrv: flesh out the program registry 2022-02-21 15:17:17 -08:00
Michael Scire
e8d14eb77d fssrv: skeleton more program registry logic 2022-02-21 15:17:17 -08:00
Michael Scire
33701bb387 fssrv: add skeleton getters for service object sf::SharedPointers 2022-02-21 15:17:17 -08:00
Michael Scire
f3dbdc2391 fs: allocations with mutex held must be unsafe 2022-02-21 15:17:17 -08:00
Michael Scire
64b4cc25fc fs: implement newer allocator templates 2022-02-21 15:17:17 -08:00