mirror of
https://github.com/systemd/systemd.git
synced 2024-12-25 01:34:28 +03:00
add debug output to sysfs operations
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
This commit is contained in:
parent
9538b16d8b
commit
7e75cfa6fe
18
udev_sysfs.c
18
udev_sysfs.c
@ -175,7 +175,7 @@ struct sysfs_device *sysfs_device_get(const char *devpath)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* it is a new device */
|
/* it is a new device */
|
||||||
dbg("'%s'", devpath_real);
|
dbg("new uncached device '%s'", devpath_real);
|
||||||
dev = malloc(sizeof(struct sysfs_device));
|
dev = malloc(sizeof(struct sysfs_device));
|
||||||
if (dev == NULL)
|
if (dev == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -253,6 +253,9 @@ struct sysfs_device *sysfs_device_get_parent(struct sysfs_device *dev)
|
|||||||
int len;
|
int len;
|
||||||
int back;
|
int back;
|
||||||
|
|
||||||
|
dbg("open '%s'", dev->devpath);
|
||||||
|
|
||||||
|
/* look if we already know the parent */
|
||||||
if (dev->parent != NULL)
|
if (dev->parent != NULL)
|
||||||
return dev->parent;
|
return dev->parent;
|
||||||
|
|
||||||
@ -271,7 +274,7 @@ struct sysfs_device *sysfs_device_get_parent(struct sysfs_device *dev)
|
|||||||
return NULL;
|
return NULL;
|
||||||
pos[0] = '\0';
|
pos[0] = '\0';
|
||||||
|
|
||||||
/* are we at the top level */
|
/* are we at the top level of /devices */
|
||||||
if (strcmp(parent_devpath, "/devices") == 0) {
|
if (strcmp(parent_devpath, "/devices") == 0) {
|
||||||
dbg("/devices top level");
|
dbg("/devices top level");
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -289,6 +292,7 @@ struct sysfs_device *sysfs_device_get_parent(struct sysfs_device *dev)
|
|||||||
goto device_link;
|
goto device_link;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* get parent and remember it */
|
||||||
dev->parent = sysfs_device_get(parent_devpath);
|
dev->parent = sysfs_device_get(parent_devpath);
|
||||||
return dev->parent;
|
return dev->parent;
|
||||||
|
|
||||||
@ -316,6 +320,7 @@ device_link:
|
|||||||
strlcat(parent_devpath, "/", sizeof(parent_devpath));
|
strlcat(parent_devpath, "/", sizeof(parent_devpath));
|
||||||
strlcat(parent_devpath, &device_link_target[back * 3], sizeof(parent_devpath));
|
strlcat(parent_devpath, &device_link_target[back * 3], sizeof(parent_devpath));
|
||||||
|
|
||||||
|
/* get parent and remember it */
|
||||||
dev->parent = sysfs_device_get(parent_devpath);
|
dev->parent = sysfs_device_get(parent_devpath);
|
||||||
return dev->parent;
|
return dev->parent;
|
||||||
}
|
}
|
||||||
@ -344,6 +349,7 @@ char *sysfs_attr_get_value(const char *devpath, const char *attr_name)
|
|||||||
ssize_t size;
|
ssize_t size;
|
||||||
size_t sysfs_len;
|
size_t sysfs_len;
|
||||||
|
|
||||||
|
dbg("open '%s'/'%s'", devpath, attr_name);
|
||||||
sysfs_len = strlcpy(path_full, sysfs_path, sizeof(path_full));
|
sysfs_len = strlcpy(path_full, sysfs_path, sizeof(path_full));
|
||||||
path = &path_full[sysfs_len];
|
path = &path_full[sysfs_len];
|
||||||
strlcat(path_full, devpath, sizeof(path_full));
|
strlcat(path_full, devpath, sizeof(path_full));
|
||||||
@ -359,18 +365,21 @@ char *sysfs_attr_get_value(const char *devpath, const char *attr_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* store attribute in cache (also negatives are kept in cache) */
|
/* store attribute in cache (also negatives are kept in cache) */
|
||||||
|
dbg("new uncached attribute '%s'", path_full);
|
||||||
attr = malloc(sizeof(struct sysfs_attr));
|
attr = malloc(sizeof(struct sysfs_attr));
|
||||||
if (attr == NULL)
|
if (attr == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
memset(attr, 0x00, sizeof(struct sysfs_attr));
|
memset(attr, 0x00, sizeof(struct sysfs_attr));
|
||||||
strlcpy(attr->path, path, sizeof(attr->path));
|
strlcpy(attr->path, path, sizeof(attr->path));
|
||||||
dbg("add to cache '%s' '%s'", attr->path, attr->value);
|
dbg("add to cache '%s'", path_full);
|
||||||
list_add(&attr->node, &attr_list);
|
list_add(&attr->node, &attr_list);
|
||||||
|
|
||||||
/* read attribute value */
|
/* read attribute value */
|
||||||
fd = open(path_full, O_RDONLY);
|
fd = open(path_full, O_RDONLY);
|
||||||
if (fd < 0)
|
if (fd < 0) {
|
||||||
|
dbg("attribute '%s' does not exist", path_full);
|
||||||
goto out;
|
goto out;
|
||||||
|
}
|
||||||
size = read(fd, value, sizeof(value));
|
size = read(fd, value, sizeof(value));
|
||||||
close(fd);
|
close(fd);
|
||||||
if (size < 0)
|
if (size < 0)
|
||||||
@ -381,6 +390,7 @@ char *sysfs_attr_get_value(const char *devpath, const char *attr_name)
|
|||||||
/* got a valid value, store and return it */
|
/* got a valid value, store and return it */
|
||||||
value[size] = '\0';
|
value[size] = '\0';
|
||||||
remove_trailing_chars(value, '\n');
|
remove_trailing_chars(value, '\n');
|
||||||
|
dbg("cache '%s' with value '%s'", path_full, value);
|
||||||
strlcpy(attr->value_local, value, sizeof(attr->value_local));
|
strlcpy(attr->value_local, value, sizeof(attr->value_local));
|
||||||
attr->value = attr->value_local;
|
attr->value = attr->value_local;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user