git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v1] test-drop-caches: simplify delay loading of NtSetSystemInformation

From
Duy Nguyen <pclouds@gmail.com>
Date
Apr 30, 2018, 14:57 UTC
Message-ID
<CACsJy8CY1fNY9OPq9nisDC3X93QXjntre-vFgQ0OeuO=B0YV=Q@mail.gmail.com>
In-Reply-To
<20180430142555.23260-1-benpeart@microsoft.com>
On Mon, Apr 30, 2018 at 4:26 PM, Ben Peart <Ben.Peart@microsoft.com> wrote:
Show 22 quoted lines
> Take advantage of the recent addition of support for lazy loading functions
> on Windows to simplfy the loading of NtSetSystemInformation.
>
> Signed-off-by: Ben Peart <benpeart@microsoft.com>
> ---
>
> Notes:
>     Base Ref: master
>     Web-Diff: https://github.com/benpeart/git/commit/6e6ce4a788
>     Checkout: git fetch https://github.com/benpeart/git test-drop-caches-v1 && git checkout 6e6ce4a788
>
>  t/helper/test-drop-caches.c | 16 ++++------------
>  1 file changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/t/helper/test-drop-caches.c b/t/helper/test-drop-caches.c
> index 838760898b..dd41da1a2c 100644
> --- a/t/helper/test-drop-caches.c
> +++ b/t/helper/test-drop-caches.c
> @@ -1,5 +1,6 @@
>  #include "test-tool.h"
>  #include "git-compat-util.h"
> +#include "lazyload.h"

This is in compat/win32, should it be inside the "if defined (GIT_WINDOWS_NATIVE)" block instead of here?

Show 44 quoted lines
>
>  #if defined(GIT_WINDOWS_NATIVE)
>
> @@ -82,8 +83,6 @@ static int cmd_dropcaches(void)
>  {
>         HANDLE hProcess = GetCurrentProcess();
>         HANDLE hToken;
> -       HMODULE ntdll;
> -       DWORD(WINAPI *NtSetSystemInformation)(INT, PVOID, ULONG);
>         SYSTEM_MEMORY_LIST_COMMAND command;
>         int status;
>
> @@ -95,14 +94,9 @@ static int cmd_dropcaches(void)
>
>         CloseHandle(hToken);
>
> -       ntdll = LoadLibrary("ntdll.dll");
> -       if (!ntdll)
> -               return error("Can't load ntdll.dll, wrong Windows version?");
> -
> -       NtSetSystemInformation =
> -               (DWORD(WINAPI *)(INT, PVOID, ULONG))GetProcAddress(ntdll, "NtSetSystemInformation");
> -       if (!NtSetSystemInformation)
> -               return error("Can't get function addresses, wrong Windows version?");
> +       DECLARE_PROC_ADDR(ntdll.dll, DWORD, NtSetSystemInformation, INT, PVOID, ULONG);
> +       if (!INIT_PROC_ADDR(NtSetSystemInformation))
> +               return error("Could not find NtSetSystemInformation() function");
>
>         command = MemoryPurgeStandbyList;
>         status = NtSetSystemInformation(
> @@ -115,8 +109,6 @@ static int cmd_dropcaches(void)
>         else if (status != STATUS_SUCCESS)
>                 error("Unable to execute the memory list command %d", status);
>
> -       FreeLibrary(ntdll);
> -
>         return status;
>  }
>
>
> base-commit: 1f1cddd558b54bb0ce19c8ace353fd07b758510d
> --
> 2.17.0.windows.1
>
-- 
Duy
Previous: Ben PeartNext: Ben Peart
Message 2 of 9 in “test-drop-caches: simplify delay loading of NtSetSystemInformation”
  1. test-drop-caches: simplify delay loading of NtSetSystemInformationBen Peart, Apr 30, 2018
  2. Duy NguyenApr 30, 2018
  3. Ben PeartApr 30, 2018
  4. Eric SunshineApr 30, 2018
  5. Stefan BellerApr 30, 2018
  6. Ben PeartApr 30, 2018
  7. Johannes SixtApr 30, 2018
  8. test-drop-caches: simplify delay loading of NtSetSystemInformationBen Peart, May 1, 2018
  9. Johannes SchindelinMay 2, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.