]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/virt.h
basic: rework virtualization detection API
[thirdparty/systemd.git] / src / basic / virt.h
CommitLineData
b52aae1d
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
c2f1db8f 3#pragma once
b52aae1d
LP
4
5/***
6 This file is part of systemd.
7
8 Copyright 2011 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
b52aae1d
LP
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 18 Lesser General Public License for more details.
b52aae1d 19
5430f7f2 20 You should have received a copy of the GNU Lesser General Public License
b52aae1d
LP
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
75f86906
LP
24#include <stdbool.h>
25
26#include "macro.h"
b52aae1d 27
248fab74 28enum {
b52aae1d 29 VIRTUALIZATION_NONE = 0,
75f86906
LP
30
31 VIRTUALIZATION_VM_FIRST,
32 VIRTUALIZATION_KVM = VIRTUALIZATION_VM_FIRST,
33 VIRTUALIZATION_QEMU,
34 VIRTUALIZATION_BOCHS,
35 VIRTUALIZATION_XEN,
36 VIRTUALIZATION_UML,
37 VIRTUALIZATION_VMWARE,
38 VIRTUALIZATION_ORACLE,
39 VIRTUALIZATION_MICROSOFT,
40 VIRTUALIZATION_ZVM,
41 VIRTUALIZATION_PARALLELS,
42 VIRTUALIZATION_VM_OTHER,
43 VIRTUALIZATION_VM_LAST = VIRTUALIZATION_VM_OTHER,
44
45 VIRTUALIZATION_CONTAINER_FIRST,
46 VIRTUALIZATION_SYSTEMD_NSPAWN = VIRTUALIZATION_CONTAINER_FIRST,
47 VIRTUALIZATION_LXC_LIBVIRT,
48 VIRTUALIZATION_LXC,
49 VIRTUALIZATION_OPENVZ,
50 VIRTUALIZATION_DOCKER,
51 VIRTUALIZATION_CONTAINER_OTHER,
52 VIRTUALIZATION_CONTAINER_LAST = VIRTUALIZATION_CONTAINER_OTHER,
53
b52aae1d
LP
54 _VIRTUALIZATION_MAX,
55 _VIRTUALIZATION_INVALID = -1
248fab74 56};
b52aae1d 57
75f86906
LP
58static inline bool VIRTUALIZATION_IS_VM(int x) {
59 return x >= VIRTUALIZATION_VM_FIRST && x <= VIRTUALIZATION_VM_LAST;
60}
61
62static inline bool VIRTUALIZATION_IS_CONTAINER(int x) {
63 return x >= VIRTUALIZATION_CONTAINER_FIRST && x <= VIRTUALIZATION_CONTAINER_LAST;
64}
65
66int detect_vm(void);
67int detect_container(void);
68int detect_virtualization(void);
69
70const char *virtualization_to_string(int v) _const_;
71int virtualization_from_string(const char *s) _pure_;