return a == action;
}
+void log_device_uevent(sd_device *device, const char *str) {
+ DeviceAction action = _DEVICE_ACTION_INVALID;
+ uint64_t seqnum = 0;
+
+ if (!DEBUG_LOGGING)
+ return;
+
+ (void) device_get_seqnum(device, &seqnum);
+ (void) device_get_action(device, &action);
+ log_device_debug(device, "%s%s(SEQNUM=%"PRIu64", ACTION=%s)",
+ strempty(str), isempty(str) ? "" : " ",
+ seqnum, strna(device_action_to_string(action)));
+}
+
int udev_rule_parse_value(char *str, char **ret_value, char **ret_endpos) {
char *i, *j;
int r;
static int worker_process_device(Manager *manager, sd_device *dev) {
_cleanup_(udev_event_freep) UdevEvent *udev_event = NULL;
_cleanup_close_ int fd_lock = -1;
- DeviceAction action;
- uint64_t seqnum;
int r;
assert(manager);
assert(dev);
- r = device_get_seqnum(dev, &seqnum);
- if (r < 0)
- return log_device_debug_errno(dev, r, "Failed to get SEQNUM: %m");
-
- r = device_get_action(dev, &action);
- if (r < 0)
- return log_device_debug_errno(dev, r, "Failed to get ACTION: %m");
-
- log_device_debug(dev, "Processing device (SEQNUM=%"PRIu64", ACTION=%s)",
- seqnum, device_action_to_string(action));
+ log_device_uevent(dev, "Processing device");
udev_event = udev_event_new(dev, arg_exec_delay_usec, manager->rtnl);
if (!udev_event)
} else
(void) udev_watch_end(dev);
- log_device_debug(dev, "Device (SEQNUM=%"PRIu64", ACTION=%s) processed",
- seqnum, device_action_to_string(action));
-
+ log_device_uevent(dev, "Device processed");
return 0;
}
assert(manager);
assert(event);
- if (DEBUG_LOGGING) {
- DeviceAction action;
-
- r = device_get_action(event->dev, &action);
- log_device_debug(event->dev, "Device (SEQNUM=%"PRIu64", ACTION=%s) ready for processing",
- event->seqnum, r >= 0 ? device_action_to_string(action) : "<unknown>");
- }
+ log_device_uevent(event->dev, "Device ready for processing");
HASHMAP_FOREACH(worker, manager->workers) {
if (worker->state != WORKER_IDLE)
static int event_queue_insert(Manager *manager, sd_device *dev) {
_cleanup_(sd_device_unrefp) sd_device *clone = NULL;
struct event *event;
- DeviceAction action;
uint64_t seqnum;
int r;
if (r < 0)
return r;
- /* Refuse devices do not have ACTION property. */
- r = device_get_action(dev, &action);
- if (r < 0)
- return r;
-
/* Save original device to restore the state on failures. */
r = device_shallow_clone(dev, &clone);
if (r < 0)
LIST_APPEND(event, manager->events, event);
- log_device_debug(dev, "Device (SEQNUM=%"PRIu64", ACTION=%s) is queued",
- seqnum, device_action_to_string(action));
+ log_device_uevent(dev, "Device is queued");
return 0;
}