X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fdevice.h;h=9f46e0895300b642beb9ad37986709d12842e297;hp=fa806575c9a6dd1e06a22d28aab222af4ce6cd14;hb=3164e3cbc50b8754c51f1fdeda7a7d6cedcc39b6;hpb=5430f7f2bc7330f3088b894166bf3524a067e3d8 diff --git a/src/core/device.h b/src/core/device.h index fa806575c..9f46e0895 100644 --- a/src/core/device.h +++ b/src/core/device.h @@ -1,7 +1,6 @@ /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -#ifndef foodevicehfoo -#define foodevicehfoo +#pragma once /*** This file is part of systemd. @@ -24,26 +23,33 @@ typedef struct Device Device; -#include "unit.h" /* We simply watch devices, we cannot plug/unplug them. That * 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,9 +57,7 @@ struct Device { extern const UnitVTable device_vtable; -void device_fd_event(Manager *m, int events); - -const char* device_state_to_string(DeviceState i); -DeviceState device_state_from_string(const char *s); +const char* device_state_to_string(DeviceState i) _const_; +DeviceState device_state_from_string(const char *s) _pure_; -#endif +int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now);