This MR adds support for creating file mapping objects backed by large pages on Linux, by making the following changes:
## wineserver
* On Linux, `create_temp_file` will first attempt to use memfds as the backing fd. If it fails, it'll return to the current codepath, creating a temporary file in either the server or config directory.
* The created memfd will be sealed against writes, if the caller requesting the appropriate page protection flags.
* This removes the requirement that FDs be only created on filesystems/directories that aren't `noexec`.
* In the server method `create_mapping` , if large pages have been requested by the caller, hold that the calling thread's token holds `SeLockMemoryPrivilege` .
* Additionally, add `SeLockMemoryPrivilege` to the list of privileges enabled for the Administrator.
## `ntdll`
* Add `virtual_get_min_large_page_size` and its exported wrapper `wine_unix_get_min_large_page_size`.
* On Linux, the minimum page size is determined by going through `/sys/kernel/mm/hugepages`. If hugepage support was not detected, `STATUS_NOT_SUPPORTED` is returned instead. On other platforms, the older hard-coded value of 2\*1024\*1024 is returned instead.
* `NtCreateSection` will validate certain parameters if large pages are requested. Specifically, it will return STATUS_INVALID_PARAMETER if the requested mapping is not anonymous/unnamed, or the size is not a multiple of the minimum supported page size.
## `kernelbase`
* `GetLargePageMinimum` will use `wine_unix_get_min_large_page_size`.
## `kernel32/tests`
* Add new test test_large_page_file_mapping, which validates privilege enforcements and parameter validation while creating large pages backed file mapping obejcts. The tests are skipped if `GetLargePageMinimum` returns 0.
--
v18: ntdll: Use PAGEMAP_SCAN to implement get_working_set_ex, if available.
ntdll: Support mapping pages for views created with SEC_LARGE_PAGES.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5769
This is the part VI of the cmd engine rewrite.
It starts splitting FOR loop parsing from its execution.
This is done for numbers (/L) and filesets (/F) FOR loops.
It also extends support for delay expansion of various parts of these loops.
Next MR will tackle the tree oriented FOR loop handling.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5868
The Jet4 driver doesn't handle the DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
property which is passed in SetProperties. On return that property is marked
as DBPROPSTATUS_NOTSUPPORTED and returns DB_S_ERRORSOCCURRED.
In this case, we dont care that isn't not supported and should allow
the DataSource to succeed.
--
v2: oledb32: When creating a Data Source, handle non fatal errors.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5864
The two tests sometimes fail on macOS and produce >8MB test reports, which fail to upload to the test results page.
--
v2: dwrite/tests: Ignore macOS specific "flip" sbix format.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5866
The Jet4 driver doesn't handle the DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
property which is passed in SetProperties. On return that property is marked
as DBPROPSTATUS_NOTSUPPORTED and returns DB_S_ERRORSOCCURRED.
In this case, we dont care that isn't not supported and should allow
the DataSource to succeed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5864