php-internal-docs
8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
nice.c
Go to the documentation of this file.
1
/*
2
+----------------------------------------------------------------------+
3
| Copyright (c) The PHP Group |
4
+----------------------------------------------------------------------+
5
| This source file is subject to version 3.01 of the PHP license, |
6
| that is bundled with this package in the file LICENSE, and is |
7
| available through the world-wide-web at the following url: |
8
| https://www.php.net/license/3_01.txt |
9
| If you did not receive a copy of the PHP license and are unable to |
10
| obtain it through the world-wide-web, please send a note to |
11
| license@php.net so we can mail you a copy immediately. |
12
+----------------------------------------------------------------------+
13
| Authors: Kalle Sommer Nielsen <kalle@php.net> |
14
+----------------------------------------------------------------------+
15
*/
16
17
#include <
php.h
>
18
#include "
nice.h
"
19
20
/*
21
* Basic Windows implementation for the nice() function.
22
*
23
* This implementation uses SetPriorityClass() as a backend for defining
24
* a process priority.
25
*
26
* The following values of inc, defines the value sent to SetPriorityClass():
27
*
28
* +-----------------------+-----------------------------+
29
* | Expression | Priority type |
30
* +-----------------------+-----------------------------+
31
* | priority < -9 | HIGH_PRIORITY_CLASS |
32
* +-----------------------+-----------------------------+
33
* | priority < -4 | ABOVE_NORMAL_PRIORITY_CLASS |
34
* +-----------------------+-----------------------------+
35
* | priority > 4 | BELOW_NORMAL_PRIORITY_CLASS |
36
* +-----------------------+-----------------------------+
37
* | priority > 9 | IDLE_PRIORITY_CLASS |
38
* +-----------------------+-----------------------------+
39
*
40
* If a value is between -4 and 4 (inclusive), then the priority will be set
41
* to NORMAL_PRIORITY_CLASS.
42
*
43
* These values tries to mimic that of the UNIX version of nice().
44
*
45
* This is applied to the main process, not per thread, although this could
46
* be implemented using SetThreadPriority() at one point.
47
*
48
* Note, the following priority classes are left out with intention:
49
*
50
* . REALTIME_PRIORITY_CLASS
51
* Realtime priority class requires special system permissions to set, and
52
* can be dangerous in certain cases.
53
*
54
* . PROCESS_MODE_BACKGROUND_BEGIN
55
* . PROCESS_MODE_BACKGROUND_END
56
* Process mode is not covered because it can easily forgotten to be changed
57
* back and can cause unforeseen side effects that is hard to debug. Besides
58
* that, these do generally not really fit into making a Windows somewhat
59
* compatible nice() function.
60
*/
61
62
PHPAPI
int
nice
(
zend_long
p
)
63
{
64
DWORD
dwFlag = NORMAL_PRIORITY_CLASS;
65
66
if
(
p
< -9) {
67
dwFlag = HIGH_PRIORITY_CLASS;
68
}
else
if
(
p
< -4) {
69
dwFlag = ABOVE_NORMAL_PRIORITY_CLASS;
70
}
else
if
(
p
> 9) {
71
dwFlag = IDLE_PRIORITY_CLASS;
72
}
else
if
(
p
> 4) {
73
dwFlag = BELOW_NORMAL_PRIORITY_CLASS;
74
}
75
76
if
(!SetPriorityClass(GetCurrentProcess(), dwFlag)) {
77
return
-1;
78
}
79
80
return
0;
81
}
DWORD
#define DWORD
Definition
exif.c:1762
nice
PHPAPI int nice(zend_long p)
Definition
nice.c:62
nice.h
php.h
PHPAPI
#define PHPAPI
Definition
php.h:71
p
p
Definition
session.c:1105
zend_long
int32_t zend_long
Definition
zend_long.h:42
win32
nice.c
Generated on Sat Aug 23 2025 01:46:13 for php-internal-docs by
1.13.2