Ignore:
Timestamp:
Jul 24, 2017, 12:59:59 PM (8 years ago)
Author:
bird
Message:

kmk,kWorker: More aggressive handling of --nice (and --priority) on windows.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kWorker/kWorker.c

    r3043 r3051  
    1112411124        else if (strcmp(argv[i], "--test") == 0)
    1112511125            return kwTestRun(argc - i - 1, &argv[i + 1]);
     11126        else if (strcmp(argv[i], "--priority") == 0)
     11127        {
     11128            i++;
     11129            if (i < argc)
     11130            {
     11131                char *pszEnd = NULL;
     11132                unsigned long uValue = strtoul(argv[i], &pszEnd, 16);
     11133                if (   *argv[i]
     11134                    && pszEnd != NULL
     11135                    && *pszEnd == '\0'
     11136                    && uValue >= 1
     11137                    && uValue <= 5)
     11138                {
     11139                    DWORD dwClass, dwPriority;
     11140                    switch (uValue)
     11141                    {
     11142                        case 1: dwClass = IDLE_PRIORITY_CLASS;         dwPriority = THREAD_PRIORITY_IDLE; break;
     11143                        case 2: dwClass = BELOW_NORMAL_PRIORITY_CLASS; dwPriority = THREAD_PRIORITY_BELOW_NORMAL; break;
     11144                        case 3: dwClass = NORMAL_PRIORITY_CLASS;       dwPriority = THREAD_PRIORITY_NORMAL; break;
     11145                        case 4: dwClass = HIGH_PRIORITY_CLASS;         dwPriority = 0xffffffff; break;
     11146                        case 5: dwClass = REALTIME_PRIORITY_CLASS;     dwPriority = 0xffffffff; break;
     11147                    }
     11148                    SetPriorityClass(GetCurrentProcess(), dwClass);
     11149                    if (dwPriority != 0xffffffff)
     11150                        SetThreadPriority(GetCurrentThread(), dwPriority);
     11151                }
     11152                else
     11153                    return kwErrPrintfRc(2, "Invalid --priority argument: %s\n", argv[i]);
     11154            }
     11155            else
     11156                return kwErrPrintfRc(2, "--priority takes an argument!\n");
     11157
     11158        }
    1112611159        else if (   strcmp(argv[i], "--help") == 0
    1112711160                 || strcmp(argv[i], "-h") == 0
    1112811161                 || strcmp(argv[i], "-?") == 0)
    1112911162        {
    11130             printf("usage: kWorker [--volatile dir] --pipe <pipe-handle>\n"
     11163            printf("usage: kWorker [--volatile dir] [--priority <1-5>] --pipe <pipe-handle>\n"
    1113111164                   "usage: kWorker <--help|-h>\n"
    1113211165                   "usage: kWorker <--version|-V>\n"
Note: See TracChangeset for help on using the changeset viewer.