supervise-daemon: implement SSD_IONICELEVEL
supervise-daemon was apparently overlooked when support for the SSD_IONICELEVEL environment variable was added. This commit brings supervise-daemon up to parity with start-stop-daemon with respect to this environment variable.
This commit is contained in:
parent
7cedc4942b
commit
5f6d7ac028
@ -156,6 +156,10 @@ The same thing as
|
|||||||
but with the standard error output.
|
but with the standard error output.
|
||||||
.El
|
.El
|
||||||
.Sh ENVIRONMENT
|
.Sh ENVIRONMENT
|
||||||
|
.Va SSD_IONICELEVEL
|
||||||
|
can also set the IO scheduling priority of the daemon, but the command line
|
||||||
|
option takes precedence.
|
||||||
|
.Pp
|
||||||
.Va SSD_NICELEVEL
|
.Va SSD_NICELEVEL
|
||||||
can also set the scheduling priority of the daemon, but the command line
|
can also set the scheduling priority of the daemon, but the command line
|
||||||
option takes precedence.
|
option takes precedence.
|
||||||
|
@ -423,7 +423,8 @@ static void child_process(char *exec, char **argv)
|
|||||||
if ((strncmp(env->value, "RC_", 3) == 0 &&
|
if ((strncmp(env->value, "RC_", 3) == 0 &&
|
||||||
strncmp(env->value, "RC_SERVICE=", 11) != 0 &&
|
strncmp(env->value, "RC_SERVICE=", 11) != 0 &&
|
||||||
strncmp(env->value, "RC_SVCNAME=", 11) != 0) ||
|
strncmp(env->value, "RC_SVCNAME=", 11) != 0) ||
|
||||||
strncmp(env->value, "SSD_NICELEVEL=", 14) == 0)
|
strncmp(env->value, "SSD_NICELEVEL=", 14) == 0 ||
|
||||||
|
strncmp(env->value, "SSD_IONICELEVEL=", 16) == 0)
|
||||||
{
|
{
|
||||||
p = strchr(env->value, '=');
|
p = strchr(env->value, '=');
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
@ -733,6 +734,17 @@ int main(int argc, char **argv)
|
|||||||
if (sscanf(tmp, "%d", &nicelevel) != 1)
|
if (sscanf(tmp, "%d", &nicelevel) != 1)
|
||||||
eerror("%s: invalid nice level `%s' (SSD_NICELEVEL)",
|
eerror("%s: invalid nice level `%s' (SSD_NICELEVEL)",
|
||||||
applet, tmp);
|
applet, tmp);
|
||||||
|
if ((tmp = getenv("SSD_IONICELEVEL"))) {
|
||||||
|
int n = sscanf(tmp, "%d:%d", &ionicec, &ioniced);
|
||||||
|
if (n != 1 && n != 2)
|
||||||
|
eerror("%s: invalid ionice level `%s' (SSD_IONICELEVEL)",
|
||||||
|
applet, tmp);
|
||||||
|
if (ionicec == 0)
|
||||||
|
ioniced = 0;
|
||||||
|
else if (ionicec == 3)
|
||||||
|
ioniced = 7;
|
||||||
|
ionicec <<= 13; /* class shift */
|
||||||
|
}
|
||||||
|
|
||||||
/* Get our user name and initial dir */
|
/* Get our user name and initial dir */
|
||||||
p = getenv("USER");
|
p = getenv("USER");
|
||||||
|
Loading…
Reference in New Issue
Block a user