mirror of
https://github.com/systemd/systemd.git
synced 2025-01-12 13:18:14 +03:00
device: ignore a couple of 'API' devices
This commit is contained in:
parent
d2b9fd2bb9
commit
6326a423e7
24
device.c
24
device.c
@ -137,6 +137,28 @@ static int device_find_escape_name(Manager *m, const char *dn, Unit **_u) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool devnode_is_api(const char *node) {
|
||||
unsigned i;
|
||||
|
||||
static const char * const table[] = {
|
||||
"/dev/null",
|
||||
"/dev/zero",
|
||||
"/dev/urandom",
|
||||
"/dev/random",
|
||||
"/dev/port",
|
||||
"/dev/oldmem",
|
||||
"/dev/full",
|
||||
"/dev/kmsg",
|
||||
"/dev/mem"
|
||||
};
|
||||
|
||||
for (i = 0; i < ELEMENTSOF(table); i++)
|
||||
if (streq(table[i], node))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int device_process_new_device(Manager *m, struct udev_device *dev, bool update_state) {
|
||||
const char *dn, *names, *wants, *sysfs, *expose, *model;
|
||||
Unit *u = NULL;
|
||||
@ -168,7 +190,7 @@ static int device_process_new_device(Manager *m, struct udev_device *dev, bool u
|
||||
if (!b)
|
||||
return 0;
|
||||
} else
|
||||
if (!dn && !names && !wants)
|
||||
if ((!dn || devnode_is_api(dn)) && !names && !wants)
|
||||
return 0;
|
||||
|
||||
/* Ok, seems kinda interesting. Now, let's see if this one
|
||||
|
4
device.h
4
device.h
@ -31,7 +31,8 @@ typedef struct Device Device;
|
||||
typedef enum DeviceState {
|
||||
DEVICE_DEAD,
|
||||
DEVICE_AVAILABLE,
|
||||
_DEVICE_STATE_MAX
|
||||
_DEVICE_STATE_MAX,
|
||||
_DEVICE_STATE_INVALID = -1
|
||||
} DeviceState;
|
||||
|
||||
struct Device {
|
||||
@ -39,7 +40,6 @@ struct Device {
|
||||
|
||||
DeviceState state;
|
||||
|
||||
/* A single device can be created by multiple sysfs objects */
|
||||
char *sysfs;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user