- Timestamp:
- Jul 24, 2017, 12:59:59 PM (8 years ago)
- Location:
- trunk/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kWorker/kWorker.c
r3043 r3051 11124 11124 else if (strcmp(argv[i], "--test") == 0) 11125 11125 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 } 11126 11159 else if ( strcmp(argv[i], "--help") == 0 11127 11160 || strcmp(argv[i], "-h") == 0 11128 11161 || strcmp(argv[i], "-?") == 0) 11129 11162 { 11130 printf("usage: kWorker [--volatile dir] --pipe <pipe-handle>\n"11163 printf("usage: kWorker [--volatile dir] [--priority <1-5>] --pipe <pipe-handle>\n" 11131 11164 "usage: kWorker <--help|-h>\n" 11132 11165 "usage: kWorker <--version|-V>\n" -
trunk/src/kmk/kmkbuiltin/kSubmit.c
r3039 r3051 383 383 { 384 384 char szHandleArg[32]; 385 const char *apszArgs[6] = 385 extern int process_priority; /* main.c */ 386 char szPriorityArg[32]; 387 const char *apszArgs[10]; 388 int cArgs = 0; 389 apszArgs[cArgs++] = szExecutable; 390 apszArgs[cArgs++] = "--pipe"; 391 _snprintf(szHandleArg, sizeof(szHandleArg), "%p", hWorkerPipe); 392 apszArgs[cArgs++] = szHandleArg; 393 if (pVarVolatile) 386 394 { 387 szExecutable, "--pipe", szHandleArg, 388 pVarVolatile ? "--volatile" : NULL, pVarVolatile ? pVarVolatile->value : NULL, 389 NULL 390 }; 391 _snprintf(szHandleArg, sizeof(szHandleArg), "%p", hWorkerPipe); 395 apszArgs[cArgs++] = "--volatile"; 396 apszArgs[cArgs++] = pVarVolatile->value; 397 } 398 if (process_priority != 0) 399 { 400 apszArgs[cArgs++] = "--priority"; 401 _snprintf(szPriorityArg, sizeof(szPriorityArg), "%u", process_priority); 402 apszArgs[cArgs++] = szPriorityArg; 403 } 404 apszArgs[cArgs] = NULL; 392 405 393 406 /* -
trunk/src/kmk/main.c
r3041 r3051 863 863 { 864 864 # ifdef WINDOWS32 865 DWORD dwPriority; 865 DWORD dwClass, dwPriority; 866 866 867 if (process_affinity) 867 868 if (!SetProcessAffinityMask (GetCurrentProcess (), process_affinity)) 868 fprintf (stderr, "warning: SetPr iorityClass(,%#x) failed with last error %d\n",869 fprintf (stderr, "warning: SetProcessAffinityMask (,%#x) failed with last error %d\n", 869 870 process_affinity, GetLastError ()); 870 871 … … 872 873 { 873 874 case 0: return; 874 case 1: dw Priority = IDLE_PRIORITY_CLASS; break;875 case 2: dw Priority = BELOW_NORMAL_PRIORITY_CLASS; break;876 case 3: dw Priority = NORMAL_PRIORITY_CLASS; break;877 case 4: dw Priority = HIGH_PRIORITY_CLASS; break;878 case 5: dw Priority = REALTIME_PRIORITY_CLASS; break;875 case 1: dwClass = IDLE_PRIORITY_CLASS; dwPriority = THREAD_PRIORITY_IDLE; break; 876 case 2: dwClass = BELOW_NORMAL_PRIORITY_CLASS; dwPriority = THREAD_PRIORITY_BELOW_NORMAL; break; 877 case 3: dwClass = NORMAL_PRIORITY_CLASS; dwPriority = THREAD_PRIORITY_NORMAL; break; 878 case 4: dwClass = HIGH_PRIORITY_CLASS; dwPriority = 0xffffffff; break; 879 case 5: dwClass = REALTIME_PRIORITY_CLASS; dwPriority = 0xffffffff; break; 879 880 default: fatal (NILF, _("invalid priority %d\n"), process_priority); 880 881 } 881 if (!SetPriorityClass (GetCurrentProcess (), dw Priority))882 if (!SetPriorityClass (GetCurrentProcess (), dwClass)) 882 883 fprintf (stderr, "warning: SetPriorityClass (,%#x) failed with last error %d\n", 884 dwClass, GetLastError ()); 885 if (dwPriority != 0xffffffff 886 && !SetThreadPriority (GetCurrentThread (), dwPriority)) 887 fprintf (stderr, "warning: SetThreadPriority (,%#x) failed with last error %d\n", 883 888 dwPriority, GetLastError ()); 884 889 -
trunk/src/kmk/w32/subproc/sub_proc.c
r2912 r3051 548 548 #ifdef KMK 549 549 size_t exec_path_len; 550 extern int process_priority; 550 551 551 552 assert (pproc->enmType == kRegular); … … 716 717 else if (argv[0]) 717 718 kmk_cache_exec_image(argv[0]); 719 720 switch (process_priority) { 721 case 1: flags |= CREATE_SUSPENDED | IDLE_PRIORITY_CLASS; break; 722 case 2: flags |= CREATE_SUSPENDED | BELOW_NORMAL_PRIORITY_CLASS; break; 723 case 3: flags |= CREATE_SUSPENDED | NORMAL_PRIORITY_CLASS; break; 724 case 4: flags |= CREATE_SUSPENDED | HIGH_PRIORITY_CLASS; break; 725 case 5: flags |= CREATE_SUSPENDED | REALTIME_PRIORITY_CLASS; break; 726 } 718 727 #endif 719 728 if (CreateProcess( … … 741 750 return(-1); 742 751 } 752 #ifdef KMK 753 switch (process_priority) { 754 case 1: SetThreadPriority(procInfo.hThread, THREAD_PRIORITY_IDLE); break; 755 case 2: SetThreadPriority(procInfo.hThread, THREAD_PRIORITY_BELOW_NORMAL); break; 756 case 3: SetThreadPriority(procInfo.hThread, THREAD_PRIORITY_NORMAL); break; 757 case 4: SetThreadPriority(procInfo.hThread, THREAD_PRIORITY_HIGHEST); break; 758 case 5: SetThreadPriority(procInfo.hThread, THREAD_PRIORITY_TIME_CRITICAL); break; 759 } 760 ResumeThread(procInfo.hThread); 761 #endif 743 762 } 744 763
Note:
See TracChangeset
for help on using the changeset viewer.