aboutsummaryrefslogtreecommitdiff
path: root/src/kerneldevice
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2017-10-12 21:07:09 +0200
committerAleksander Morgado <aleksander@aleksander.es>2017-12-05 10:58:28 +0100
commit345d9747a7408cc5263b425e149bf3b4ac4926a4 (patch)
tree515bbf05835a6f228031712ca1ee98e1c8b8d563 /src/kerneldevice
parent0e4e4a6b138cccc49a8f7a4d8bacc9273f8b4cb3 (diff)
kerneldevice: allow loading physdev sysfs path
Diffstat (limited to 'src/kerneldevice')
-rw-r--r--src/kerneldevice/mm-kernel-device-generic.c9
-rw-r--r--src/kerneldevice/mm-kernel-device-udev.c16
-rw-r--r--src/kerneldevice/mm-kernel-device.c10
-rw-r--r--src/kerneldevice/mm-kernel-device.h3
4 files changed, 38 insertions, 0 deletions
diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c
index d1d2400c..63c29741 100644
--- a/src/kerneldevice/mm-kernel-device-generic.c
+++ b/src/kerneldevice/mm-kernel-device-generic.c
@@ -498,6 +498,14 @@ kernel_device_get_physdev_pid (MMKernelDevice *self)
}
static const gchar *
+kernel_device_get_physdev_sysfs_path (MMKernelDevice *self)
+{
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE_GENERIC (self), 0);
+
+ return MM_KERNEL_DEVICE_GENERIC (self)->priv->physdev_sysfs_path;
+}
+
+static const gchar *
kernel_device_get_physdev_subsystem (MMKernelDevice *self)
{
g_return_val_if_fail (MM_IS_KERNEL_DEVICE_GENERIC (self), NULL);
@@ -1099,6 +1107,7 @@ mm_kernel_device_generic_class_init (MMKernelDeviceGenericClass *klass)
kernel_device_class->get_physdev_uid = kernel_device_get_physdev_uid;
kernel_device_class->get_physdev_vid = kernel_device_get_physdev_vid;
kernel_device_class->get_physdev_pid = kernel_device_get_physdev_pid;
+ kernel_device_class->get_physdev_sysfs_path = kernel_device_get_physdev_sysfs_path;
kernel_device_class->get_physdev_subsystem = kernel_device_get_physdev_subsystem;
kernel_device_class->get_physdev_manufacturer = kernel_device_get_physdev_manufacturer;
kernel_device_class->get_parent_sysfs_path = kernel_device_get_parent_sysfs_path;
diff --git a/src/kerneldevice/mm-kernel-device-udev.c b/src/kerneldevice/mm-kernel-device-udev.c
index 1248d5ba..b5e463a0 100644
--- a/src/kerneldevice/mm-kernel-device-udev.c
+++ b/src/kerneldevice/mm-kernel-device-udev.c
@@ -384,6 +384,21 @@ kernel_device_get_physdev_pid (MMKernelDevice *_self)
}
static const gchar *
+kernel_device_get_physdev_sysfs_path (MMKernelDevice *_self)
+{
+ MMKernelDeviceUdev *self;
+
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE_UDEV (_self), NULL);
+
+ self = MM_KERNEL_DEVICE_UDEV (_self);
+ ensure_physdev (self);
+ if (!self->priv->physdev)
+ return NULL;
+
+ return g_udev_device_get_sysfs_path (self->priv->physdev);
+}
+
+static const gchar *
kernel_device_get_physdev_subsystem (MMKernelDevice *_self)
{
MMKernelDeviceUdev *self;
@@ -894,6 +909,7 @@ mm_kernel_device_udev_class_init (MMKernelDeviceUdevClass *klass)
kernel_device_class->get_physdev_uid = kernel_device_get_physdev_uid;
kernel_device_class->get_physdev_vid = kernel_device_get_physdev_vid;
kernel_device_class->get_physdev_pid = kernel_device_get_physdev_pid;
+ kernel_device_class->get_physdev_sysfs_path = kernel_device_get_physdev_sysfs_path;
kernel_device_class->get_physdev_subsystem = kernel_device_get_physdev_subsystem;
kernel_device_class->get_physdev_manufacturer = kernel_device_get_physdev_manufacturer;
kernel_device_class->get_parent_sysfs_path = kernel_device_get_parent_sysfs_path;
diff --git a/src/kerneldevice/mm-kernel-device.c b/src/kerneldevice/mm-kernel-device.c
index ce4f7793..8cfa1723 100644
--- a/src/kerneldevice/mm-kernel-device.c
+++ b/src/kerneldevice/mm-kernel-device.c
@@ -100,6 +100,16 @@ mm_kernel_device_get_physdev_subsystem (MMKernelDevice *self)
}
const gchar *
+mm_kernel_device_get_physdev_sysfs_path (MMKernelDevice *self)
+{
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE (self), NULL);
+
+ return (MM_KERNEL_DEVICE_GET_CLASS (self)->get_physdev_sysfs_path ?
+ MM_KERNEL_DEVICE_GET_CLASS (self)->get_physdev_sysfs_path (self) :
+ NULL);
+}
+
+const gchar *
mm_kernel_device_get_physdev_manufacturer (MMKernelDevice *self)
{
g_return_val_if_fail (MM_IS_KERNEL_DEVICE (self), NULL);
diff --git a/src/kerneldevice/mm-kernel-device.h b/src/kerneldevice/mm-kernel-device.h
index 480e1ed5..34df9075 100644
--- a/src/kerneldevice/mm-kernel-device.h
+++ b/src/kerneldevice/mm-kernel-device.h
@@ -55,6 +55,8 @@ struct _MMKernelDeviceClass {
guint16 (* get_physdev_pid) (MMKernelDevice *self);
+ const gchar * (* get_physdev_sysfs_path) (MMKernelDevice *self);
+
const gchar * (* get_physdev_subsystem) (MMKernelDevice *self);
const gchar * (* get_physdev_manufacturer) (MMKernelDevice *self);
@@ -89,6 +91,7 @@ const gchar *mm_kernel_device_get_parent_sysfs_path (MMKernelDevice *self);
const gchar *mm_kernel_device_get_physdev_uid (MMKernelDevice *self);
guint16 mm_kernel_device_get_physdev_vid (MMKernelDevice *self);
guint16 mm_kernel_device_get_physdev_pid (MMKernelDevice *self);
+const gchar *mm_kernel_device_get_physdev_sysfs_path (MMKernelDevice *self);
const gchar *mm_kernel_device_get_physdev_subsystem (MMKernelDevice *self);
const gchar *mm_kernel_device_get_physdev_manufacturer (MMKernelDevice *self);