chiark / gitweb /
machined: also set up /var/lib/machines as btrfs, if "machinectl set-limit" is called
[elogind.git] / src / machine / machine.h
index 64accda8b1131ce07768f855f7ac18917512037f..7b27aa27e0ec53e2e880be2f4146eef56349642b 100644 (file)
 ***/
 
 typedef struct Machine Machine;
+typedef struct MachineOperation MachineOperation;
 typedef enum KillWho KillWho;
 
 #include "list.h"
-#include "util.h"
 #include "machined.h"
 
 typedef enum MachineState {
@@ -50,6 +50,17 @@ enum KillWho {
         _KILL_WHO_INVALID = -1
 };
 
+#define MACHINE_OPERATIONS_MAX 64
+
+struct MachineOperation {
+        Machine *machine;
+        pid_t pid;
+        sd_bus_message *message;
+        int errno_fd;
+        sd_event_source *event_source;
+        LIST_FIELDS(MachineOperation, operations);
+};
+
 struct Machine {
         Manager *manager;
 
@@ -72,7 +83,6 @@ struct Machine {
 
         bool in_gc_queue:1;
         bool started:1;
-        bool registered:1;
 
         sd_bus_message *create_message;
 
@@ -80,6 +90,9 @@ struct Machine {
         unsigned n_netif;
 
         LIST_FIELDS(Machine, gc_queue);
+
+        MachineOperation *operations;
+        unsigned n_operations;
 };
 
 Machine* machine_new(Manager *manager, const char *name);
@@ -94,6 +107,8 @@ int machine_kill(Machine *m, KillWho who, int signo);
 
 MachineState machine_get_state(Machine *u);
 
+MachineOperation *machine_operation_unref(MachineOperation *o);
+
 const char* machine_class_to_string(MachineClass t) _const_;
 MachineClass machine_class_from_string(const char *s) _pure_;