mirror of
https://github.com/systemd/systemd.git
synced 2024-10-28 20:25:38 +03:00
add a bunch of private device properties to udev_device
This commit is contained in:
parent
9d7e1b3fdd
commit
c4f5f942d7
@ -17,6 +17,9 @@ udev_device_get_devname
|
||||
udev_device_get_subsystem
|
||||
udev_device_get_devlinks
|
||||
udev_device_get_properties
|
||||
udev_device_get_action
|
||||
udev_device_get_driver
|
||||
udev_device_get_devnum
|
||||
udev_devices_enumerate
|
||||
udev_monitor_new_from_socket
|
||||
udev_monitor_enable_receiving
|
||||
|
@ -41,6 +41,12 @@ struct udev_device {
|
||||
char *subsystem;
|
||||
struct list_head link_list;
|
||||
struct list_head env_list;
|
||||
char *action;
|
||||
char *driver;
|
||||
char *devpath_old;
|
||||
char *physdevpath;
|
||||
int timeout;
|
||||
dev_t devnum;
|
||||
};
|
||||
|
||||
struct udev_device *device_init(struct udev *udev)
|
||||
@ -333,6 +339,27 @@ int udev_device_get_properties(struct udev_device *udev_device,
|
||||
return count;
|
||||
}
|
||||
|
||||
const char *udev_device_get_driver(struct udev_device *udev_device)
|
||||
{
|
||||
if (udev_device == NULL)
|
||||
return NULL;
|
||||
return udev_device->driver;
|
||||
}
|
||||
|
||||
dev_t udev_device_get_devnum(struct udev_device *udev_device)
|
||||
{
|
||||
if (udev_device == NULL)
|
||||
return makedev(0, 0);
|
||||
return udev_device->devnum;
|
||||
}
|
||||
|
||||
const char *udev_device_get_action(struct udev_device *udev_device)
|
||||
{
|
||||
if (udev_device == NULL)
|
||||
return NULL;
|
||||
return udev_device->action;
|
||||
}
|
||||
|
||||
int device_set_devpath(struct udev_device *udev_device, const char *devpath)
|
||||
{
|
||||
if (asprintf(&udev_device->syspath, "%s%s", udev_get_sys_path(udev_device->udev), devpath) < 0)
|
||||
@ -370,3 +397,68 @@ int device_add_property(struct udev_device *udev_device, const char *property)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int device_set_action(struct udev_device *udev_device, const char *action)
|
||||
{
|
||||
udev_device->action = strdup(action);
|
||||
if (udev_device->action == NULL)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int device_set_driver(struct udev_device *udev_device, const char *driver)
|
||||
{
|
||||
udev_device->driver = strdup(driver);
|
||||
if (udev_device->driver == NULL)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *device_get_devpath_old(struct udev_device *udev_device)
|
||||
{
|
||||
if (udev_device == NULL)
|
||||
return NULL;
|
||||
return udev_device->devpath_old;
|
||||
}
|
||||
|
||||
int device_set_devpath_old(struct udev_device *udev_device, const char *devpath_old)
|
||||
{
|
||||
udev_device->devpath_old = strdup(devpath_old);
|
||||
if (udev_device->devpath_old == NULL)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *device_get_physdevpath(struct udev_device *udev_device)
|
||||
{
|
||||
if (udev_device == NULL)
|
||||
return NULL;
|
||||
return udev_device->physdevpath;
|
||||
}
|
||||
|
||||
int device_set_physdevpath(struct udev_device *udev_device, const char *physdevpath)
|
||||
{
|
||||
udev_device->physdevpath = strdup(physdevpath);
|
||||
if (udev_device->physdevpath == NULL)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int device_get_timeout(struct udev_device *udev_device)
|
||||
{
|
||||
if (udev_device == NULL)
|
||||
return -1;
|
||||
return udev_device->timeout;
|
||||
}
|
||||
|
||||
int device_set_timeout(struct udev_device *udev_device, int timeout)
|
||||
{
|
||||
udev_device->timeout = timeout;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int device_set_devnum(struct udev_device *udev_device, dev_t devnum)
|
||||
{
|
||||
udev_device->devnum = devnum;
|
||||
return 0;
|
||||
}
|
||||
|
@ -88,6 +88,7 @@ struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char
|
||||
free(udev_monitor);
|
||||
return NULL;
|
||||
}
|
||||
info(udev, "monitor %p created with '%s'\n", udev_monitor, socket_path);
|
||||
return udev_monitor;
|
||||
}
|
||||
|
||||
@ -96,7 +97,7 @@ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
|
||||
int err;
|
||||
const int on = 1;
|
||||
|
||||
err = bind(udev_monitor->sock, (struct sockaddr *) &udev_monitor->saddr, udev_monitor->addrlen);
|
||||
err = bind(udev_monitor->sock, (struct sockaddr *)&udev_monitor->saddr, udev_monitor->addrlen);
|
||||
if (err < 0) {
|
||||
err(udev_monitor->udev, "bind failed: %s\n", strerror(errno));
|
||||
return err;
|
||||
@ -104,7 +105,7 @@ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
|
||||
|
||||
/* enable receiving of the sender credentials */
|
||||
setsockopt(udev_monitor->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
|
||||
info(udev_monitor->udev, "udev_monitor: %p created\n", udev_monitor);
|
||||
info(udev_monitor->udev, "monitor %p listening\n", udev_monitor);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -142,7 +143,7 @@ void udev_monitor_unref(struct udev_monitor *udev_monitor)
|
||||
return;
|
||||
if (udev_monitor->sock >= 0)
|
||||
close(udev_monitor->sock);
|
||||
info(udev_monitor->udev, "udev_monitor: %p released\n", udev_monitor);
|
||||
info(udev_monitor->udev, "monitor %p released\n", udev_monitor);
|
||||
free(udev_monitor);
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,15 @@ extern int device_set_subsystem(struct udev_device *udev_device, const char *sub
|
||||
extern int device_set_devname(struct udev_device *udev_device, const char *devname);
|
||||
extern int device_add_devlink(struct udev_device *udev_device, const char *devlink);
|
||||
extern int device_add_property(struct udev_device *udev_device, const char *property);
|
||||
extern int device_set_action(struct udev_device *udev_device, const char *action);
|
||||
extern int device_set_driver(struct udev_device *udev_device, const char *driver);
|
||||
extern const char *device_get_devpath_old(struct udev_device *udev_device);
|
||||
extern int device_set_devpath_old(struct udev_device *udev_device, const char *devpath_old);
|
||||
extern const char *device_get_physdevpath(struct udev_device *udev_device);
|
||||
extern int device_set_physdevpath(struct udev_device *udev_device, const char *physdevpath);
|
||||
extern int device_get_timeout(struct udev_device *udev_device);
|
||||
extern int device_set_timeout(struct udev_device *udev_device, int timeout);
|
||||
extern int device_set_devnum(struct udev_device *udev_device, dev_t devnum);
|
||||
|
||||
/* udev_ctrl - daemon runtime setup */
|
||||
struct udev_ctrl;
|
||||
|
@ -21,6 +21,7 @@
|
||||
#define _LIBUDEV_H_
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* this will stay as long as the DeviceKit integration of udev is work in progress */
|
||||
#if !defined _LIBUDEV_COMPILATION && !defined LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE
|
||||
@ -57,6 +58,9 @@ extern int udev_device_get_properties(struct udev_device *udev_device,
|
||||
int (*cb)(struct udev_device *udev_device,
|
||||
const char *key, const char *value, void *data),
|
||||
void *data);
|
||||
extern const char *udev_device_get_driver(struct udev_device *udev_device);
|
||||
extern dev_t udev_device_get_devnum(struct udev_device *udev_device);
|
||||
extern const char *udev_device_get_action(struct udev_device *udev_device);
|
||||
|
||||
extern int udev_devices_enumerate(struct udev *udev, const char *subsystem,
|
||||
int (*cb)(struct udev *udev,
|
||||
|
Loading…
Reference in New Issue
Block a user