6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering#pragma once
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering/***
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering This file is part of systemd.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering Copyright 2013 Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering systemd is free software; you can redistribute it and/or modify it
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering under the terms of the GNU Lesser General Public License as published by
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering (at your option) any later version.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering systemd is distributed in the hope that it will be useful, but
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering Lesser General Public License for more details.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering You should have received a copy of the GNU Lesser General Public License
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering***/
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poetteringtypedef struct Scope Scope;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering#include "kill.h"
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poetteringtypedef enum ScopeResult {
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering SCOPE_SUCCESS,
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering SCOPE_FAILURE_RESOURCES,
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering SCOPE_FAILURE_TIMEOUT,
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering _SCOPE_RESULT_MAX,
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering _SCOPE_RESULT_INVALID = -1
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering} ScopeResult;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poetteringstruct Scope {
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering Unit meta;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering CGroupContext cgroup_context;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering KillContext kill_context;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering ScopeState state, deserialized_state;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering ScopeResult result;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering usec_t timeout_stop_usec;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
2d4a39e759c4ab846ad8a546abeddd40bc8d736eLennart Poettering char *controller;
2d4a39e759c4ab846ad8a546abeddd40bc8d736eLennart Poettering
718db96199eb307751264e4163555662c9a389faLennart Poettering sd_event_source *timer_event_source;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering};
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poetteringextern const UnitVTable scope_vtable;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering
a911bb9ab27ac0eb3bbf4e8b4109e5da9b88eee3Lennart Poetteringint scope_abandon(Scope *s);
a911bb9ab27ac0eb3bbf4e8b4109e5da9b88eee3Lennart Poettering
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poetteringconst char* scope_result_to_string(ScopeResult i) _const_;
6c12b52e19640747e96f89d85422941a23dc6b29Lennart PoetteringScopeResult scope_result_from_string(const char *s) _pure_;