summaryrefslogtreecommitdiff
path: root/src/libcamera/device_enumerator_udev.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/device_enumerator_udev.cpp')
-rw-r--r--src/libcamera/device_enumerator_udev.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp
index 40853e77..e0c646c9 100644
--- a/src/libcamera/device_enumerator_udev.cpp
+++ b/src/libcamera/device_enumerator_udev.cpp
@@ -178,10 +178,9 @@ int DeviceEnumeratorUdev::populateMediaDevice(const std::shared_ptr<MediaDevice>
if (entity->deviceMajor() == 0 && entity->deviceMinor() == 0)
continue;
- std::string deviceNode = lookupDeviceNode(entity->deviceMajor(),
- entity->deviceMinor());
dev_t devnum = makedev(entity->deviceMajor(),
entity->deviceMinor());
+ std::string deviceNode = lookupDeviceNode(devnum);
/* Take device from orphan list first, if it is in the list. */
if (std::find(orphans_.begin(), orphans_.end(), devnum) != orphans_.end()) {
@@ -205,14 +204,21 @@ int DeviceEnumeratorUdev::populateMediaDevice(const std::shared_ptr<MediaDevice>
return pendingNodes;
}
-std::string DeviceEnumeratorUdev::lookupDeviceNode(int major, int minor)
+/**
+ * \brief Lookup device node path from device number
+ * \param[in] devnum The device number
+ *
+ * Translate a device number given as \a devnum to a device node path.
+ *
+ * \return The device node path on success, or an empty string if the lookup
+ * fails
+ */
+std::string DeviceEnumeratorUdev::lookupDeviceNode(dev_t devnum)
{
struct udev_device *device;
const char *name;
- dev_t devnum;
std::string deviceNode = std::string();
- devnum = makedev(major, minor);
device = udev_device_new_from_devnum(udev_, 'c', devnum);
if (!device)
return std::string();
@@ -246,8 +252,7 @@ int DeviceEnumeratorUdev::addV4L2Device(dev_t devnum)
return 0;
}
- std::string deviceNode = lookupDeviceNode(entity->deviceMajor(),
- entity->deviceMinor());
+ std::string deviceNode = lookupDeviceNode(devnum);
if (deviceNode.empty())
return -EINVAL;