[libcamera-devel] [PATCH 2/4] libcamera: device_enumerator_udev: Delay device node lookup

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Sep 13 10:43:28 CEST 2019


Hi Laurent

On 12/09/2019 21:03, Laurent Pinchart wrote:
> When populating media devices, we look up device nodes for every entity
> in the media device, regardless of if the entity is present in the
> orphans list. This causes unnecessary lookups (that may also fail as the
> device node may not be ready yet at that time). Move the lookup at a
> later time, when the device node is actually needed.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  src/libcamera/device_enumerator_udev.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp
> index e0c646c997de..210f5c1f2870 100644
> --- a/src/libcamera/device_enumerator_udev.cpp
> +++ b/src/libcamera/device_enumerator_udev.cpp
> @@ -180,10 +180,10 @@ int DeviceEnumeratorUdev::populateMediaDevice(const std::shared_ptr<MediaDevice>
>  
>  		dev_t devnum = makedev(entity->deviceMajor(),
>  				       entity->deviceMinor());
> -		std::string deviceNode = lookupDeviceNode(devnum);
>  

I guess as this line was only just added it could have been put in the
right place in the previous patch - but I like the fact that this is
split out to explain /why/ it is better located inside the conditional.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>


>  		/* Take device from orphan list first, if it is in the list. */
>  		if (std::find(orphans_.begin(), orphans_.end(), devnum) != orphans_.end()) {
> +			std::string deviceNode = lookupDeviceNode(devnum);
>  			if (deviceNode.empty())
>  				return -EINVAL;
>  
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list