]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/virt.h
Merge pull request #32520 from YHNdnzj/sd-daemon-followup
[thirdparty/systemd.git] / src / basic / virt.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
c2f1db8f 2#pragma once
b52aae1d 3
75f86906
LP
4#include <stdbool.h>
5
1b86c7c5 6#include "errno-list.h"
75f86906 7#include "macro.h"
b52aae1d 8
1b86c7c5 9typedef enum Virtualization {
b52aae1d 10 VIRTUALIZATION_NONE = 0,
75f86906
LP
11
12 VIRTUALIZATION_VM_FIRST,
13 VIRTUALIZATION_KVM = VIRTUALIZATION_VM_FIRST,
b6eca373 14 VIRTUALIZATION_AMAZON,
75f86906
LP
15 VIRTUALIZATION_QEMU,
16 VIRTUALIZATION_BOCHS,
17 VIRTUALIZATION_XEN,
18 VIRTUALIZATION_UML,
19 VIRTUALIZATION_VMWARE,
20 VIRTUALIZATION_ORACLE,
21 VIRTUALIZATION_MICROSOFT,
22 VIRTUALIZATION_ZVM,
23 VIRTUALIZATION_PARALLELS,
aa0c3427 24 VIRTUALIZATION_BHYVE,
1fdf07f5 25 VIRTUALIZATION_QNX,
095b9cf4 26 VIRTUALIZATION_ACRN,
3224e38b 27 VIRTUALIZATION_POWERVM,
f5558306 28 VIRTUALIZATION_APPLE,
d833ed78 29 VIRTUALIZATION_SRE,
9b0688f4 30 VIRTUALIZATION_GOOGLE,
75f86906
LP
31 VIRTUALIZATION_VM_OTHER,
32 VIRTUALIZATION_VM_LAST = VIRTUALIZATION_VM_OTHER,
33
34 VIRTUALIZATION_CONTAINER_FIRST,
35 VIRTUALIZATION_SYSTEMD_NSPAWN = VIRTUALIZATION_CONTAINER_FIRST,
36 VIRTUALIZATION_LXC_LIBVIRT,
37 VIRTUALIZATION_LXC,
38 VIRTUALIZATION_OPENVZ,
39 VIRTUALIZATION_DOCKER,
90fb1f09 40 VIRTUALIZATION_PODMAN,
9fb16425 41 VIRTUALIZATION_RKT,
6c8a2c67 42 VIRTUALIZATION_WSL,
80cc3e3e 43 VIRTUALIZATION_PROOT,
abac810b 44 VIRTUALIZATION_POUCH,
75f86906
LP
45 VIRTUALIZATION_CONTAINER_OTHER,
46 VIRTUALIZATION_CONTAINER_LAST = VIRTUALIZATION_CONTAINER_OTHER,
47
b52aae1d 48 _VIRTUALIZATION_MAX,
2d93c20e 49 _VIRTUALIZATION_INVALID = -EINVAL,
1b86c7c5
LP
50 _VIRTUALIZATION_ERRNO_MAX = -ERRNO_MAX, /* ensure full range of errno fits into this enum */
51} Virtualization;
b52aae1d 52
1b86c7c5 53static inline bool VIRTUALIZATION_IS_VM(Virtualization x) {
75f86906
LP
54 return x >= VIRTUALIZATION_VM_FIRST && x <= VIRTUALIZATION_VM_LAST;
55}
56
1b86c7c5 57static inline bool VIRTUALIZATION_IS_CONTAINER(Virtualization x) {
75f86906
LP
58 return x >= VIRTUALIZATION_CONTAINER_FIRST && x <= VIRTUALIZATION_CONTAINER_LAST;
59}
60
1b86c7c5
LP
61Virtualization detect_vm(void);
62Virtualization detect_container(void);
63Virtualization detect_virtualization(void);
75f86906 64
299a34c1 65int running_in_userns(void);
7f4b3c5e
LP
66int running_in_chroot(void);
67
1b86c7c5
LP
68const char *virtualization_to_string(Virtualization v) _const_;
69Virtualization virtualization_from_string(const char *s) _pure_;
68337e55 70bool has_cpu_with_flag(const char *flag);