diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
index 53daff0f64..61e51becc6 100644
--- a/man/systemd.exec.xml
+++ b/man/systemd.exec.xml
@@ -2197,6 +2197,316 @@ CapabilityBoundingSet=~CAP_B CAP_C
+
+ Process exit codes
+
+ When invoking a unit process the service manager possibly fails to apply the execution parameters configured
+ with the settings above. In that case the already created service process will exit with a non-zero exit code
+ before the configured command line is executed. (Or in other words, the child process possibly exits with these
+ error codes, after having been created by the fork2 system call, but
+ before the matching execve2 system call is
+ called.) Specifically, exit codes defined by the C library, by the LSB specification and by the systemd service
+ manager itself are used.
+
+ The following basic service exit codes are defined by the C library.
+
+
+ Basic C library exit codes
+
+
+
+ Exit Code
+ Symbolic Name
+ Description
+
+
+
+
+ 0
+ EXIT_SUCCESS
+ Generic success code.
+
+
+ 1
+ EXIT_FAILURE
+ Generic failure or unspecified error.
+
+
+
+
+
+ The following service exit codes are defined by the LSB specification
+ .
+
+
+
+ LSB service exit codes
+
+
+
+ Exit Code
+ Symbolic Name
+ Description
+
+
+
+
+ 2
+ EXIT_INVALIDARGUMENT
+ Invalid or excess arguments.
+
+
+ 3
+ EXIT_NOTIMPLEMENTED
+ Unimplemented feature.
+
+
+ 4
+ EXIT_NOPERMISSION
+ The user has insufficient privileges.
+
+
+ 5
+ EXIT_NOTINSTALLED
+ The program is not installed.
+
+
+ 6
+ EXIT_NOTCONFIGURED
+ The program is not configured.
+
+
+ 7
+ EXIT_NOTRUNNING
+ The program is not running.
+
+
+
+
+
+
+ The LSB specification suggests that error codes 200 and above are reserved for implementations. Some of them are
+ used by the service manager to indicate problems during process invocation:
+
+
+ systemd-specific exit codes
+
+
+
+ Exit Code
+ Symbolic Name
+ Description
+
+
+
+
+ 200
+ EXIT_CHDIR
+ Changing to the requested working directory failed. See WorkingDirectory= above.
+
+
+ 201
+ EXIT_NICE
+ Failed to set up process scheduling priority (nice level). See Nice= above.
+
+
+ 202
+ EXIT_FDS
+ Failed to close unwanted file descriptors, or to adjust passed file descriptors.
+
+
+ 203
+ EXIT_EXEC
+ The actual process execution failed (specifically, the execve2 system call). Most likely this is caused by a missing or non-accessible executable file.
+
+
+ 204
+ EXIT_MEMORY
+ Failed to perform an action due to memory shortage.
+
+
+ 205
+ EXIT_LIMITS
+ Failed to adjust resoure limits. See LimitCPU= and related settings above.
+
+
+ 206
+ EXIT_OOM_ADJUST
+ Failed to adjust the OOM setting. See OOMScoreAdjust= above.
+
+
+ 207
+ EXIT_SIGNAL_MASK
+ Failed to set process signal mask.
+
+
+ 208
+ EXIT_STDIN
+ Failed to set up standard input. See StandardInput= above.
+
+
+ 209
+ EXIT_STDOUT
+ Failed to set up standard output. See StandardOutput= above.
+
+
+ 210
+ EXIT_CHROOT
+ Failed to change root directory (chroot2). See RootDirectory=/RootImage= above.
+
+
+ 211
+ EXIT_IOPRIO
+ Failed to set up IO scheduling priority. See IOSchedulingClass=/IOSchedulingPriority= above.
+
+
+ 212
+ EXIT_TIMERSLACK
+ Failed to set up timer slack. See TimerSlackNSec= above.
+
+
+ 213
+ EXIT_SECUREBITS
+ Failed to set process secure bits. See SecureBits= above.
+
+
+ 214
+ EXIT_SETSCHEDULER
+ Failed to set up CPU scheduling. See CPUSchedulingPolicy=/CPUSchedulingPriority= above.
+
+
+ 215
+ EXIT_CPUAFFINITY
+ Failed to set up CPU affinity. See CPUAffinity= above.
+
+
+ 216
+ EXIT_GROUP
+ Failed to determine or change group credentials. See Group=/SupplementaryGroups= above.
+
+
+ 217
+ EXIT_USER
+ Failed to determine or change user credentials, or to set up user namespacing. See User=/PrivateUsers= above.
+
+
+ 218
+ EXIT_CAPABILITIES
+ Failed to drop capabilities, or apply ambient capabilities. See CapabilityBoundingSet=/AmbientCapabilities= above.
+
+
+ 219
+ EXIT_CGROUP
+ Setting up the service control group failed.
+
+
+ 220
+ EXIT_SETSID
+ Failed to create new process session.
+
+
+ 221
+ EXIT_CONFIRM
+ Execution has been cancelled by the user. See the systemd.confirm_spawn= kernel command line setting on kernel-command-line7 for details.
+
+
+ 222
+ EXIT_STDERR
+ Failed to set up standard error output. See StandardError= above.
+
+
+ 224
+ EXIT_PAM
+ Failed to set up PAM session. See PAMName= above.
+
+
+ 225
+ EXIT_NETWORK
+ Failed to set up network namespacing. See PrivateNetwork= above.
+
+
+ 226
+ EXIT_NAMESPACE
+ Failed to set up mount namespacing. See ReadOnlyPaths= and related settings above.
+
+
+ 227
+ EXIT_NO_NEW_PRIVILEGES
+ Failed to disable new priviliges. See NoNewPrivileges=yes above.
+
+
+ 228
+ EXIT_SECCOMP
+ Failed to apply system call filters. See SystemCallFilter= and related settings above.
+
+
+ 229
+ EXIT_SELINUX_CONTEXT
+ Determining or changing SELinux context failed. See SELinuxContext= above.
+
+
+ 230
+ EXIT_PERSONALITY
+ Failed to set up a execution domain (personality). See Personality= above.
+
+
+ 231
+ EXIT_APPARMOR_PROFILE
+ Failed to prepare changing AppArmor profile. See AppArmorProfile= above.
+
+
+ 232
+ EXIT_ADDRESS_FAMILIES
+ Failed to restrict address families. See RestrictAddressFamilies= above.
+
+
+ 233
+ EXIT_RUNTIME_DIRECTORY
+ Setting up runtime directory failed. See RuntimeDirectory= and related settings above.
+
+
+ 235
+ EXIT_CHOWN
+ Failed to adjust socket ownership. Used for socket units only.
+
+
+ 236
+ EXIT_SMACK_PROCESS_LABEL
+ Failed to set SMACK label. See SmackProcessLabel= above.
+
+
+ 237
+ EXIT_KEYRING
+ Failed to set up kernel keyring.
+
+
+ 238
+ EXIT_STATE_DIRECTORY
+ Failed to set up a the unit's state directory. See StateDirectory= above.
+
+
+ 239
+ EXIT_CACHE_DIRECTORY
+ Failed to set up a the unit's cache directory. See CacheDirectory= above.
+
+
+ 240
+ EXIT_LOGS_DIRECTORY
+ Failed to set up a the unit's logging directory. See LogsDirectory= above.
+
+
+ 241
+ EXIT_CONFIGURATION_DIRECTORY
+ Failed to set up a the unit's configuration directory. See ConfigurationDirectory= above.
+
+
+
+
+
+
See Also