diff options
author | David Oberhollenzer <david.oberhollenzer@tele2.at> | 2018-08-24 16:51:15 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@tele2.at> | 2018-08-24 21:17:31 +0200 |
commit | ec74e5bbee30381b1624ac2247e74fa29676c6e6 (patch) | |
tree | 3f4a357da081139f6ebfb77c0f85d3fe3f894ac4 /initd/svclist.c | |
parent | 532f5e6819faadb394a0dfa6999ab80044ec7c69 (diff) |
initd: restructure and merge service supervision code
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
Diffstat (limited to 'initd/svclist.c')
-rw-r--r-- | initd/svclist.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/initd/svclist.c b/initd/svclist.c deleted file mode 100644 index 4ed897f..0000000 --- a/initd/svclist.c +++ /dev/null @@ -1,60 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -/* - * Copyright (C) 2018 - David Oberhollenzer - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - */ -#include "init.h" - -static service_t *running = NULL; /* currently supervised services */ -static int singleshot = 0; /* active singleshot services */ - -bool svclist_have_singleshot(void) -{ - return singleshot > 0; -} - -void svclist_add(service_t *svc) -{ - svc->next = running; - running = svc; - - if (svc->type == SVC_ONCE) - singleshot += 1; -} - -service_t *svclist_remove(pid_t pid) -{ - service_t *prev = NULL, *svc = running; - - while (svc != NULL) { - if (svc->pid == pid) { - if (prev != NULL) { - prev->next = svc->next; - } else { - running = svc->next; - } - svc->next = NULL; - - if (svc->type == SVC_ONCE) - singleshot -= 1; - break; - } - - prev = svc; - svc = svc->next; - } - - return svc; -} |