]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/machine/machine.h
update TODO
[thirdparty/systemd.git] / src / machine / machine.h
CommitLineData
9444b1f2
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3#pragma once
4
5/***
6 This file is part of systemd.
7
8 Copyright 2013 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
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
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
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
24typedef struct Machine Machine;
1ee306e1 25typedef enum KillWho KillWho;
9444b1f2
LP
26
27#include "list.h"
28#include "util.h"
1ee306e1 29#include "machined.h"
9444b1f2 30
fb6becb4
LP
31typedef enum MachineState {
32 MACHINE_OPENING, /* Machine is being registered */
33 MACHINE_RUNNING, /* Machine is running */
34 MACHINE_CLOSING, /* Machine is terminating */
35 _MACHINE_STATE_MAX,
36 _MACHINE_STATE_INVALID = -1
37} MachineState;
38
9444b1f2
LP
39typedef enum MachineClass {
40 MACHINE_CONTAINER,
41 MACHINE_VM,
42 _MACHINE_CLASS_MAX,
43 _MACHINE_CLASS_INVALID = -1
44} MachineClass;
45
1ee306e1
LP
46enum KillWho {
47 KILL_LEADER,
48 KILL_ALL,
49 _KILL_WHO_MAX,
50 _KILL_WHO_INVALID = -1
51};
52
9444b1f2
LP
53struct Machine {
54 Manager *manager;
55
56 char *name;
57 sd_id128_t id;
58
fb6becb4 59 MachineState state;
9444b1f2
LP
60 MachineClass class;
61
62 char *state_file;
63 char *service;
9444b1f2
LP
64 char *root_directory;
65
fb6becb4
LP
66 char *scope;
67 char *scope_job;
68
9444b1f2
LP
69 pid_t leader;
70
71 dual_timestamp timestamp;
72
73 bool in_gc_queue:1;
74 bool started:1;
75
fb6becb4
LP
76 DBusMessage *create_message;
77
9444b1f2
LP
78 LIST_FIELDS(Machine, gc_queue);
79};
80
81Machine* machine_new(Manager *manager, const char *name);
82void machine_free(Machine *m);
83int machine_check_gc(Machine *m, bool drop_not_started);
84void machine_add_to_gc_queue(Machine *m);
554604b3 85int machine_start(Machine *m, DBusMessageIter *iter);
9444b1f2
LP
86int machine_stop(Machine *m);
87int machine_save(Machine *m);
88int machine_load(Machine *m);
89int machine_kill(Machine *m, KillWho who, int signo);
90
91char *machine_bus_path(Machine *s);
92
fb6becb4
LP
93MachineState machine_get_state(Machine *u);
94
9444b1f2
LP
95extern const DBusObjectPathVTable bus_machine_vtable;
96
97int machine_send_signal(Machine *m, bool new_machine);
98int machine_send_changed(Machine *m, const char *properties);
99
fb6becb4
LP
100int machine_send_create_reply(Machine *m, DBusError *error);
101
9444b1f2
LP
102const char* machine_class_to_string(MachineClass t) _const_;
103MachineClass machine_class_from_string(const char *s) _pure_;
fb6becb4
LP
104
105const char* machine_state_to_string(MachineState t) _const_;
106MachineState machine_state_from_string(const char *s) _pure_;
1ee306e1
LP
107
108const char *kill_who_to_string(KillWho k) _const_;
109KillWho kill_who_from_string(const char *s) _pure_;