dc653bf487
When shooting down a service with SIGABRT the user might want to have a much longer stop timeout than on regular stops/shutdowns. Especially in the face of short stop timeouts the time might not be sufficient to write huge core dumps before the service is killed. This commit adds a dedicated (Default)TimeoutAbortSec= timer that is used when stopping a service via SIGABRT. In all other cases the existing TimeoutStopSec= is used. The timer value is unset by default to skip the special handling and use TimeoutStopSec= for state 'stop-watchdog' to keep the old behaviour. If the service is in state 'stop-watchdog' and the service should be stopped explicitly we still go to 'stop-sigterm' and re-apply the usual TimeoutStopSec= timeout.
115 lines
5.6 KiB
C
115 lines
5.6 KiB
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
#pragma once
|
|
|
|
#include "conf-parser.h"
|
|
#include "unit.h"
|
|
|
|
/* Read service data from .desktop file style configuration fragments */
|
|
|
|
int unit_load_fragment(Unit *u);
|
|
|
|
void unit_dump_config_items(FILE *f);
|
|
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_deps);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_obsolete_unit_deps);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_string_printf);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_strv_printf);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_path_printf);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_path_strv_printf);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_documentation);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_socket_listen);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_socket_protocol);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_socket_bind);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_nice);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_oom_score_adjust);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_service_timeout);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_service_timeout_abort);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_service_type);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_service_restart);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_socket_bindtodevice);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_output);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_input);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_input_text);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_input_data);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_io_class);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_io_priority);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_cpu_sched_policy);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_cpu_sched_prio);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_cpu_affinity);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_secure_bits);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_capability_set);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_kill_signal);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_final_kill_signal);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_mount_flags);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_timer);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_trigger_unit);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_path_spec);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_socket_service);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_service_sockets);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_env_file);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_ip_tos);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_condition_path);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_condition_string);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_condition_null);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_kill_mode);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_notify_access);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_emergency_action);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_requires_mounts_for);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_syscall_filter);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_syscall_archs);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_syscall_errno);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_environ);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_pass_environ);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unset_environ);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_unit_slice);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_cg_weight);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_cpu_shares);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_memory_limit);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_tasks_max);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_delegate);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_device_policy);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_device_allow);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_io_device_latency);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_io_device_weight);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_io_limit);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_blockio_weight);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_blockio_device_weight);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_blockio_bandwidth);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_job_mode);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_job_mode_isolate);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_selinux_context);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_apparmor_profile);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_smack_process_label);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_address_families);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_runtime_preserve_mode);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_directories);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_set_status);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_namespace_path_strv);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_temporary_filesystems);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_cpu_quota);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_protect_home);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_protect_system);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_bus_name);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_utmp_mode);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_working_directory);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_fdname);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_sec_fix_0);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_user_group);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_user_group_strv);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_restrict_namespaces);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_bind_paths);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exec_keyring_mode);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_job_timeout_sec);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_job_running_timeout_sec);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_log_extra_fields);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_collect_mode);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_pid_file);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_exit_status);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_disable_controllers);
|
|
CONFIG_PARSER_PROTOTYPE(config_parse_oom_policy);
|
|
|
|
/* gperf prototypes */
|
|
const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, GPERF_LEN_TYPE length);
|
|
extern const char load_fragment_gperf_nulstr[];
|