diff options
Diffstat (limited to 'src/core/device.h')
-rw-r--r-- | src/core/device.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/core/device.h b/src/core/device.h index 906508530d..9f46e08953 100644 --- a/src/core/device.h +++ b/src/core/device.h @@ -28,20 +28,28 @@ typedef struct Device Device; * simplifies the state engine greatly */ typedef enum DeviceState { DEVICE_DEAD, - DEVICE_PLUGGED, + DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */ + DEVICE_PLUGGED, /* announced by udev */ _DEVICE_STATE_MAX, _DEVICE_STATE_INVALID = -1 } DeviceState; +typedef enum DeviceFound { + DEVICE_NOT_FOUND = 0, + DEVICE_FOUND_UDEV = 1, + DEVICE_FOUND_MOUNT = 2, + DEVICE_FOUND_SWAP = 4, +} DeviceFound; + struct Device { Unit meta; char *sysfs; + DeviceFound found; /* In order to be able to distinguish dependencies on different device nodes we might end up creating multiple devices for the same sysfs path. We chain them up here. */ - LIST_FIELDS(struct Device, same_sysfs); DeviceState state; @@ -51,3 +59,5 @@ extern const UnitVTable device_vtable; const char* device_state_to_string(DeviceState i) _const_; DeviceState device_state_from_string(const char *s) _pure_; + +int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now); |