Commit Graph

17 Commits

Author SHA1 Message Date
gibbed
1c2d6753bb [Kernel/VFS] Specify root entry to open from + cleanup.
[VFS] Allow specifying root entry to open from with OpenFile.
[Kernel] NtCreateFile now opens from root entry when available instead
         of needlessly building a full path and resolving from that.
[VFS] Reduce code duplication by adding Entry::ResolvePath.
[VFS] Remove ResolveBasePath to avoid multiple calls to find_base_guest_path.
2020-04-20 01:14:07 -05:00
gibbed
5bf0b34445 C++17ification.
C++17ification!

- Filesystem interaction now uses std::filesystem::path.
- Usage of const char*, std::string have been changed to
  std::string_view where appropriate.
- Usage of printf-style functions changed to use fmt.
2020-04-07 16:09:41 -05:00
emoose
f46e3c7e39 [Kernel/VFS] Ensure vfs::Entry is up-to-date before retrieving file information
Games like Forza use NtQueryInformationFile to get the size of the file, to make sure that there's enough room inside it to write data.

Previously, updating the file size (via SetInfoFile(EndOfFile) or WriteFile) wouldn't update the vfs::Entry size field, which NtQueryInfo uses to return the size of the file.

This resulted in the game thinking that the file was smaller than it actually is, and trying to correct that by using SetInfoFile(EndOfFile), which then truncated the file and deleted important data that was written to it.
2019-08-21 02:00:57 -05:00
Margen67
896ac4a682 Update documentation.
- Convert http to https, provide archive link when possible.
- Made CPU-JIT.png more readable on dark themes;
Added a white background so there isn't black text on a black
background.
2018-11-22 09:20:09 -06:00
Dr. Chat
a0464f54ba [VFS] SVOD (with EGDF) support 2018-05-29 14:12:09 -05:00
gibbed
17529b063f Spliced out the FS wildcard stuff. 2017-01-19 17:06:35 -06:00
Dr. Chat
bcacb9b127 Remove vfs dependency on kernel, implement I/O completion ports 2015-12-29 13:09:50 -08:00
Ben Vanik
3c96b6fa0a DANGER DANGER. Switching to global critical region.
This changes almost all locks held by guest threads to use a single global
critical region. This emulates the behavior on the PPC of disabling
interrupts (by calls like KeRaiseIrqlToDpcLevel or masking interrupts),
and prevents deadlocks from occuring when threads are suspended or
otherwise blocked.
This has performance implications and a pass is needed to ensure the
locking is as granular as possible. It could also break everything
because it's fundamentally unsound. We'll see.
2015-09-06 09:30:54 -07:00
Ben Vanik
14beb27ebc xb style. 2015-08-07 07:56:57 -07:00
Ben Vanik
42400d06a9 Making stateless file IO platform-agnostic. 2015-07-15 18:01:09 -07:00
Ben Vanik
cc08e9019a Move NtCreateFile/NtOpenFile to VFS, implement (mostly) for real.
Progress on #305.
2015-06-29 10:33:36 -07:00
Ben Vanik
0104a2290f Adding locks and parents to vfs.
Progress on #305.
2015-06-29 05:07:29 -07:00
Ben Vanik
1106029afc _wfopen -> xe::filesystem::OpenFile.
Progress on #305.
2015-06-28 17:33:46 -07:00
Ben Vanik
83872d8e8f Refactoring vfs to remove a lot of duplicated code.
Progress on #294.
2015-06-27 22:37:49 -07:00
Ben Vanik
1ac19f1b08 Replacing vfs memory mapping with base memory mapping.
Progress on #294.
2015-06-27 18:02:20 -07:00
Ben Vanik
23f91b58f3 Moving code out of vfs/ that doesn't need to be there.
Progress on #294.
2015-06-27 17:01:25 -07:00
Ben Vanik
0716cf84c0 Renaming xe::fs to xe::filesystem and xe::kernel::fs to xe::vfs.
Progress on #294.
2015-06-27 13:31:21 -07:00