[{"id":447,"web_url":"https://patchwork.libcamera.org/comment/447/","msgid":"<20190121121946.GD12780@pendragon.ideasonboard.com>","date":"2019-01-21T12:19:46","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nThank you for the patch.\n\nOn Mon, Jan 21, 2019 at 11:41:26AM +0000, Kieran Bingham wrote:\n> In the case that someone calls CameraManager::start() and it has already\n> started/enumerated, instead of returning -ENODEV, return -EBUSY.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/libcamera/camera_manager.cpp | 2 +-\n>  1 file changed, 1 insertion(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n> index d76eaa7ace86..21cb36dcb9b5 100644\n> --- a/src/libcamera/camera_manager.cpp\n> +++ b/src/libcamera/camera_manager.cpp\n> @@ -76,7 +76,7 @@ CameraManager::~CameraManager()\n>  int CameraManager::start()\n>  {\n>  \tif (enumerator_)\n> -\t\treturn -ENODEV;\n> +\t\treturn -EBUSY;\n>  \n>  \tenumerator_ = DeviceEnumerator::create();\n>  \tif (enumerator_->enumerate())","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3921960C7F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jan 2019 13:21:58 +0100 (CET)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8DE1B53E;\n\tMon, 21 Jan 2019 13:21:57 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1548073317;\n\tbh=9mIWPm2+kX/yRkCFKVFihMjb5rmPTJ2YeIWmgSxW3Kg=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=iDO8+BDDZk2LspUxBhETeEa90tfKKPk/ZIIJB7rY1g6zQMPEAWJj8ExCoUGK0kHFv\n\txUsTDQsOWuzBJscClasD1Db38fgU24wmSp/KZXBbkRchOIte56KzdLYp+0fCNfyYx0\n\tP0hv0A99Lcy0cjdKksR6ss5cYY8AGuuIwg82LeJM=","Date":"Mon, 21 Jan 2019 14:19:46 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"LibCamera Devel <libcamera-devel@lists.libcamera.org>","Message-ID":"<20190121121946.GD12780@pendragon.ideasonboard.com>","References":"<20190121114126.19577-1-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20190121114126.19577-1-kieran.bingham@ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Mon, 21 Jan 2019 12:21:58 -0000"}},{"id":455,"web_url":"https://patchwork.libcamera.org/comment/455/","msgid":"<20190121160140.GG6484@bigcity.dyn.berto.se>","date":"2019-01-21T16:01:40","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Kieran,\n\nOn 2019-01-21 11:41:26 +0000, Kieran Bingham wrote:\n> In the case that someone calls CameraManager::start() and it has already\n> started/enumerated, instead of returning -ENODEV, return -EBUSY.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nWhile working with this on the cam utility it struck me, should we \nreturn negative error codes from CameraManager? This faces the \napplication and it might be unexpected for it to receive a negative \nerror.\n\nIn any case this change matches our documentation and is a good change.\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/libcamera/camera_manager.cpp | 2 +-\n>  1 file changed, 1 insertion(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n> index d76eaa7ace86..21cb36dcb9b5 100644\n> --- a/src/libcamera/camera_manager.cpp\n> +++ b/src/libcamera/camera_manager.cpp\n> @@ -76,7 +76,7 @@ CameraManager::~CameraManager()\n>  int CameraManager::start()\n>  {\n>  \tif (enumerator_)\n> -\t\treturn -ENODEV;\n> +\t\treturn -EBUSY;\n>  \n>  \tenumerator_ = DeviceEnumerator::create();\n>  \tif (enumerator_->enumerate())\n> -- \n> 2.17.1\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lf1-x141.google.com (mail-lf1-x141.google.com\n\t[IPv6:2a00:1450:4864:20::141])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A8B9C60C80\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jan 2019 17:01:42 +0100 (CET)","by mail-lf1-x141.google.com with SMTP id a8so15873591lfk.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jan 2019 08:01:42 -0800 (PST)","from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99])\n\tby smtp.gmail.com with ESMTPSA id\n\tm63-v6sm2589541lje.81.2019.01.21.08.01.41\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tMon, 21 Jan 2019 08:01:41 -0800 (PST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to\n\t:user-agent; bh=VBf8I4Gb6FJbsPH7/+8iJIucy/KdbkWukQmMP7mtQwA=;\n\tb=M9eEAHtQpWFwQRnNS1ZqpuY1yu/E2FBm85HVGTmEIuhAAlvP5TtXbDGfzsy/0FrEGu\n\tJBYCLCG6yshOg7r8JcpOudKzWp2U3xcgBSnFxYA3lHhr/sTvNIP6t3oH89CM2jn4i149\n\t+cE/qSBIgRmvUWgfihPkwd9fhdLiRriAANfBgIR2wtMyipZBD5UEJvJXl0IDxIuE4RwB\n\tLrmAIN+/UE0mY4ZR/dJeD1/yMdZDCbv+/Z+BC6Es9PX9EtAgjV7l8RaMRHq3DhjamXzt\n\tYDjeEupEsQE73Tyz2AmRhK7Ms8eqNFPof+WHBj6m7G8NpTzm+X6DID/PhIOJeRtBh6I2\n\tIZHw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to:user-agent;\n\tbh=VBf8I4Gb6FJbsPH7/+8iJIucy/KdbkWukQmMP7mtQwA=;\n\tb=NmHiNqDQTWOxbjVuwYDz74XZa5apK+hy1sYU3cSuZlYdERo1K8CC2MS2i6MGtDSxyu\n\thXvOO2VQNZIX+HxidI5Ma5QVtP29r2iAp3+cL6/gVsat/2gah9d1aI6LzIoJ8Wt1R0WM\n\tXHb9oupTHY5hj7cSYhWDqKvaeu29PfAM3CruxqWXLFiVgsE+Va2At/Qe5wcPylsy0yJF\n\tCMWDtzN7EcTyIC68Qfdj4nUaAT/u4AO4nSCbaGmlhat9Uack49yfES2IUpqwg6XYlloz\n\tDtp0hZiBd18tphlu0vmMRFkKJ9IyKZp91EL9POUAIdTTn59OXDgISIEV1pFge6mWGv9P\n\tvqJQ==","X-Gm-Message-State":"AJcUukeOsQZ3GMH14paC71Pq6Fl7dFN2ox2afdUsfMNTi5g92ehXJPtg\n\tw91Wb8pjaFf1VjEbjI9Jmwl+Ug==","X-Google-Smtp-Source":"ALg8bN6yxUoMo05xEyW2di5vSyGvQ3Fbx0VStchjSj0QSJvv8QEpnSk0mRZtb/RznkYgI1CJAwNv/A==","X-Received":"by 2002:a19:1994:: with SMTP id\n\t142mr19599748lfz.134.1548086501804; \n\tMon, 21 Jan 2019 08:01:41 -0800 (PST)","Date":"Mon, 21 Jan 2019 17:01:40 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"LibCamera Devel <libcamera-devel@lists.libcamera.org>","Message-ID":"<20190121160140.GG6484@bigcity.dyn.berto.se>","References":"<20190121114126.19577-1-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190121114126.19577-1-kieran.bingham@ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Mon, 21 Jan 2019 16:01:42 -0000"}},{"id":457,"web_url":"https://patchwork.libcamera.org/comment/457/","msgid":"<20190121170505.GI12780@pendragon.ideasonboard.com>","date":"2019-01-21T17:05:05","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hello,\n\nOn Mon, Jan 21, 2019 at 05:01:40PM +0100, Niklas Söderlund wrote:\n> On 2019-01-21 11:41:26 +0000, Kieran Bingham wrote:\n> > In the case that someone calls CameraManager::start() and it has already\n> > started/enumerated, instead of returning -ENODEV, return -EBUSY.\n> > \n> > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> While working with this on the cam utility it struck me, should we \n> return negative error codes from CameraManager? This faces the \n> application and it might be unexpected for it to receive a negative \n> error.\n\nWe have to standardize on error codes (and of course document them). Is\nit unusual for libraries to return negative error codes ? I've been\nworking with the kernel for so long that it just seems natural to me :-)\n\n> In any case this change matches our documentation and is a good change.\n> \n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> \n> > ---\n> >  src/libcamera/camera_manager.cpp | 2 +-\n> >  1 file changed, 1 insertion(+), 1 deletion(-)\n> > \n> > diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n> > index d76eaa7ace86..21cb36dcb9b5 100644\n> > --- a/src/libcamera/camera_manager.cpp\n> > +++ b/src/libcamera/camera_manager.cpp\n> > @@ -76,7 +76,7 @@ CameraManager::~CameraManager()\n> >  int CameraManager::start()\n> >  {\n> >  \tif (enumerator_)\n> > -\t\treturn -ENODEV;\n> > +\t\treturn -EBUSY;\n> >  \n> >  \tenumerator_ = DeviceEnumerator::create();\n> >  \tif (enumerator_->enumerate())","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E183C60C80\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jan 2019 18:05:06 +0100 (CET)","from pendragon.ideasonboard.com\n\t(dfj612yhrgyx302h3jwwy-3.rev.dnainternet.fi\n\t[IPv6:2001:14ba:21f5:5b00:ce28:277f:58d7:3ca4])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4C30853E;\n\tMon, 21 Jan 2019 18:05:06 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1548090306;\n\tbh=bIvCZnTG7AWVehsAytqMfNDgVJ9LRmekyxdEojkQ/hI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=PyPf/q9MWjOXTb9qikz/yzRbp5cmh++5Th51zJkegjIQ0GfRuoDjixAirg81stvy2\n\tIqo3SerNI6kQRv8Ac0mTppnamyMGgDjkRv+guXD4BUjxxJJs2YTrjPi+22jJsFceKA\n\t92fRIz1mTv7KuFLLZ1yMEB2GyF/YMmawGYKfMdVU=","Date":"Mon, 21 Jan 2019 19:05:05 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tLibCamera Devel <libcamera-devel@lists.libcamera.org>","Message-ID":"<20190121170505.GI12780@pendragon.ideasonboard.com>","References":"<20190121114126.19577-1-kieran.bingham@ideasonboard.com>\n\t<20190121160140.GG6484@bigcity.dyn.berto.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190121160140.GG6484@bigcity.dyn.berto.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Mon, 21 Jan 2019 17:05:07 -0000"}},{"id":482,"web_url":"https://patchwork.libcamera.org/comment/482/","msgid":"<20190122115952.GN6484@bigcity.dyn.berto.se>","date":"2019-01-22T11:59:52","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi,\n\nOn 2019-01-21 19:05:05 +0200, Laurent Pinchart wrote:\n> Hello,\n> \n> On Mon, Jan 21, 2019 at 05:01:40PM +0100, Niklas Söderlund wrote:\n> > On 2019-01-21 11:41:26 +0000, Kieran Bingham wrote:\n> > > In the case that someone calls CameraManager::start() and it has already\n> > > started/enumerated, instead of returning -ENODEV, return -EBUSY.\n> > > \n> > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > \n> > While working with this on the cam utility it struck me, should we \n> > return negative error codes from CameraManager? This faces the \n> > application and it might be unexpected for it to receive a negative \n> > error.\n> \n> We have to standardize on error codes (and of course document them). Is\n> it unusual for libraries to return negative error codes ? I've been\n> working with the kernel for so long that it just seems natural to me :-)\n\nI agree negative error codes seems natural. I'm not sure how to best \nhandle that in the interface between a library and application. I did a \nquick survey of a handful of libraries and it seems there is no \n'standard' way of doing it.\n\n- zlib defines a set of values Z_OK, Z_STREAM_ERROR etc.\n- libpcap like zlib defines PCAP_ERROR_ACTIVATED, PCAP_ERROR etc.\n- libssh seems to mostly do '0 on success, < 0 on error'.\n\nTo no surprise it seems a return code 0 signals OK in all of them. So \nmaybe we are OK mimicking libssh which seems to be what we are doing \ntoday? To me that feels more natural then adding a set of values an \napplication needs to check for which are library specific.\n\n> \n> > In any case this change matches our documentation and is a good change.\n> > \n> > Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> > \n> > > ---\n> > >  src/libcamera/camera_manager.cpp | 2 +-\n> > >  1 file changed, 1 insertion(+), 1 deletion(-)\n> > > \n> > > diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n> > > index d76eaa7ace86..21cb36dcb9b5 100644\n> > > --- a/src/libcamera/camera_manager.cpp\n> > > +++ b/src/libcamera/camera_manager.cpp\n> > > @@ -76,7 +76,7 @@ CameraManager::~CameraManager()\n> > >  int CameraManager::start()\n> > >  {\n> > >  \tif (enumerator_)\n> > > -\t\treturn -ENODEV;\n> > > +\t\treturn -EBUSY;\n> > >  \n> > >  \tenumerator_ = DeviceEnumerator::create();\n> > >  \tif (enumerator_->enumerate())\n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lj1-x244.google.com (mail-lj1-x244.google.com\n\t[IPv6:2a00:1450:4864:20::244])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1BD3760B21\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 22 Jan 2019 12:59:55 +0100 (CET)","by mail-lj1-x244.google.com with SMTP id l15-v6so20333069lja.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 22 Jan 2019 03:59:55 -0800 (PST)","from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99])\n\tby smtp.gmail.com with ESMTPSA id\n\tg17sm2953127lfj.36.2019.01.22.03.59.53\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tTue, 22 Jan 2019 03:59:53 -0800 (PST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to\n\t:user-agent; bh=cQ+j5mE5iIsLazbuWZLTRBjMJ2RjZiB2guhpn3xFLRA=;\n\tb=UicN+9jgk6HqUJo6jxovp659zW88Uw1XEbC54nCjs44JqZDSwdMBRlumWOtfDu4asX\n\tkc3pX9uWoAn+0sWBoja3VOTE4pFPgTDEYu+OkdCySOX1ee7UEpjaAyDID4cxUtZf4UPz\n\twUngOZpnVxuj9nXsTjxpD/CmY7p4LRK3OtYQNrOB7PdG0TnQ+AgWSGGx1/mvTY0DixVg\n\tNvsvlKxcIPP7+yULkCTZg06RI/nEdKnNNKbqelfAzbVWzLWGT/UNyy5KIghXT6SJJDNX\n\tkREREHGwSOsTe4SSpO7NTlyRp38hDC8jbU6tvi3Y/KlLrLyM7+lUPq1ZDlEWWoatQY+w\n\tXtvw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to:user-agent;\n\tbh=cQ+j5mE5iIsLazbuWZLTRBjMJ2RjZiB2guhpn3xFLRA=;\n\tb=AzLS4rrcs8j9SGmkj7GLG/srTmTcMZjtHUje7x2QaS0qGmZjRoIa5yyl3sHVmzHozP\n\tiE2fwS8CjnsaWmw4U0swisUVUNsiprD47H7pquMrrrlg7elAycdqA945V1QGvXGqLmIJ\n\tdnZXgQXhu0L9dQ61Vhjx2YXjEnzqDhkbU8CrPvnrO8d3ZIK5rgssNmFobH7OFJU4zqQD\n\tzE3QNKOupdRP/VBmzwdoJv7IhQ1mPf4IFYWYKL3vmJAvXAqpDqf/mrXm6pYKgOE9U4N8\n\tlwJdKAb9GOdkydHDMjGkxWgHFoILzBwrDCLdQr2wiCK65k6F6b3rc7qok8yI65HIyImr\n\t4Yhg==","X-Gm-Message-State":"AJcUukcvi9MxhmupdxZDJCMFgzX3A0w2uwdiKZCnvWyM0f6qUF/ziViO\n\t8/fKO7DxWqZDA61QgiJc3Y24Iqam4j8=","X-Google-Smtp-Source":"ALg8bN7LEfSgzCxk97MHqfwxKaiPLB4p0zEuddmec9KVLH9mWaE9bIO7qUwWrcZBCSxJ0Pvk5XGEMA==","X-Received":"by 2002:a2e:1b47:: with SMTP id\n\tb68-v6mr17576812ljb.104.1548158394362; \n\tTue, 22 Jan 2019 03:59:54 -0800 (PST)","Date":"Tue, 22 Jan 2019 12:59:52 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tLibCamera Devel <libcamera-devel@lists.libcamera.org>","Message-ID":"<20190122115952.GN6484@bigcity.dyn.berto.se>","References":"<20190121114126.19577-1-kieran.bingham@ideasonboard.com>\n\t<20190121160140.GG6484@bigcity.dyn.berto.se>\n\t<20190121170505.GI12780@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190121170505.GI12780@pendragon.ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 22 Jan 2019 11:59:55 -0000"}},{"id":483,"web_url":"https://patchwork.libcamera.org/comment/483/","msgid":"<22c82ad7-53f3-8fbb-18c7-54121b9a264f@ideasonboard.com>","date":"2019-01-22T12:06:28","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi All,\n\nOn 22/01/2019 11:59, Niklas Söderlund wrote:\n> Hi,\n> \n> On 2019-01-21 19:05:05 +0200, Laurent Pinchart wrote:\n>> Hello,\n>>\n>> On Mon, Jan 21, 2019 at 05:01:40PM +0100, Niklas Söderlund wrote:\n>>> On 2019-01-21 11:41:26 +0000, Kieran Bingham wrote:\n>>>> In the case that someone calls CameraManager::start() and it has already\n>>>> started/enumerated, instead of returning -ENODEV, return -EBUSY.\n>>>>\n>>>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>>\n>>> While working with this on the cam utility it struck me, should we \n>>> return negative error codes from CameraManager? This faces the \n>>> application and it might be unexpected for it to receive a negative \n>>> error.\n>>\n>> We have to standardize on error codes (and of course document them). Is\n>> it unusual for libraries to return negative error codes ? I've been\n>> working with the kernel for so long that it just seems natural to me :-)\n> \n> I agree negative error codes seems natural. I'm not sure how to best \n> handle that in the interface between a library and application. I did a \n> quick survey of a handful of libraries and it seems there is no \n> 'standard' way of doing it.\n\nI see nothing wrong with negative return codes, especially if we\ndocument it.\n\n\n> - zlib defines a set of values Z_OK, Z_STREAM_ERROR etc.\n> - libpcap like zlib defines PCAP_ERROR_ACTIVATED, PCAP_ERROR etc.\n\nhttps://github.com/the-tcpdump-group/libpcap/blob/master/pcap/pcap.h#L296\n\nThose are negative numbers. We can define our own, but I don't see\nanything wrong with using standard errno values.\n\n\n\n> - libssh seems to mostly do '0 on success, < 0 on error'.\n> \n> To no surprise it seems a return code 0 signals OK in all of them. So \n> maybe we are OK mimicking libssh which seems to be what we are doing \n> today? To me that feels more natural then adding a set of values an \n> application needs to check for which are library specific.\n> \n>>\n>>> In any case this change matches our documentation and is a good change.\n>>>\n>>> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n>>>\n>>>> ---\n>>>>  src/libcamera/camera_manager.cpp | 2 +-\n>>>>  1 file changed, 1 insertion(+), 1 deletion(-)\n>>>>\n>>>> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n>>>> index d76eaa7ace86..21cb36dcb9b5 100644\n>>>> --- a/src/libcamera/camera_manager.cpp\n>>>> +++ b/src/libcamera/camera_manager.cpp\n>>>> @@ -76,7 +76,7 @@ CameraManager::~CameraManager()\n>>>>  int CameraManager::start()\n>>>>  {\n>>>>  \tif (enumerator_)\n>>>> -\t\treturn -ENODEV;\n>>>> +\t\treturn -EBUSY;\n>>>>  \n>>>>  \tenumerator_ = DeviceEnumerator::create();\n>>>>  \tif (enumerator_->enumerate())\n>>\n>> -- \n>> Regards,\n>>\n>> Laurent Pinchart\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DBD7C60B21\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 22 Jan 2019 13:06:31 +0100 (CET)","from [192.168.0.21]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1DFD753E;\n\tTue, 22 Jan 2019 13:06:31 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1548158791;\n\tbh=CqwK5sAU8uWLBm3pKzz2bvdvTVnUS7KtCudIKzodWpM=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=UF5XtpEZTnfxsi/65s9w44jVuPiRLCtq8ss9PQZzMVk/dTR9aNRmZ4xuVmKc2wqq+\n\tQ9RXWhIDTOXYJslzf9Mx7XcmoxcTfemPt1yUBFbo6RPuFXd5opfP799weRziMU5AJR\n\t3R/t3rmqANNM5uuOa7ijsJOh2Hnk9/V8l2XjI2c8=","Reply-To":"kieran.bingham@ideasonboard.com","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"LibCamera Devel <libcamera-devel@lists.libcamera.org>","References":"<20190121114126.19577-1-kieran.bingham@ideasonboard.com>\n\t<20190121160140.GG6484@bigcity.dyn.berto.se>\n\t<20190121170505.GI12780@pendragon.ideasonboard.com>\n\t<20190122115952.GN6484@bigcity.dyn.berto.se>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<22c82ad7-53f3-8fbb-18c7-54121b9a264f@ideasonboard.com>","Date":"Tue, 22 Jan 2019 12:06:28 +0000","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.2.1","MIME-Version":"1.0","In-Reply-To":"<20190122115952.GN6484@bigcity.dyn.berto.se>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 22 Jan 2019 12:06:32 -0000"}},{"id":485,"web_url":"https://patchwork.libcamera.org/comment/485/","msgid":"<20190122122412.GB4455@pendragon.ideasonboard.com>","date":"2019-01-22T12:24:12","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nOn Tue, Jan 22, 2019 at 12:59:52PM +0100, Niklas Söderlund wrote:\n>  On 2019-01-21 19:05:05 +0200, Laurent Pinchart wrote:\n> > On Mon, Jan 21, 2019 at 05:01:40PM +0100, Niklas Söderlund wrote:\n> >> On 2019-01-21 11:41:26 +0000, Kieran Bingham wrote:\n> >>> In the case that someone calls CameraManager::start() and it has already\n> >>> started/enumerated, instead of returning -ENODEV, return -EBUSY.\n> >>> \n> >>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> >> \n> >> While working with this on the cam utility it struck me, should we \n> >> return negative error codes from CameraManager? This faces the \n> >> application and it might be unexpected for it to receive a negative \n> >> error.\n> > \n> > We have to standardize on error codes (and of course document them). Is\n> > it unusual for libraries to return negative error codes ? I've been\n> > working with the kernel for so long that it just seems natural to me :-)\n>  \n> I agree negative error codes seems natural. I'm not sure how to best \n> handle that in the interface between a library and application. I did a \n> quick survey of a handful of libraries and it seems there is no \n> 'standard' way of doing it.\n>  \n> - zlib defines a set of values Z_OK, Z_STREAM_ERROR etc.\n> - libpcap like zlib defines PCAP_ERROR_ACTIVATED, PCAP_ERROR etc.\n> - libssh seems to mostly do '0 on success, < 0 on error'.\n>  \n> To no surprise it seems a return code 0 signals OK in all of them. So \n> maybe we are OK mimicking libssh which seems to be what we are doing \n> today? To me that feels more natural then adding a set of values an \n> application needs to check for which are library specific.\n\nThat would be my preference too. It feels more natural to me as well,\nbut I'm biased :-)\n\n> >> In any case this change matches our documentation and is a good change.\n> >> \n> >> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> >> \n> >>> ---\n> >>> src/libcamera/camera_manager.cpp | 2 +-\n> >>> 1 file changed, 1 insertion(+), 1 deletion(-)\n> >>> \n> >>> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\n> >>> index d76eaa7ace86..21cb36dcb9b5 100644\n> >>> --- a/src/libcamera/camera_manager.cpp\n> >>> +++ b/src/libcamera/camera_manager.cpp\n> >>> @@ -76,7 +76,7 @@ CameraManager::~CameraManager()\n> >>> int CameraManager::start()\n> >>> {\n> >>> \tif (enumerator_)\n> >>> -\t\treturn -ENODEV;\n> >>> +\t\treturn -EBUSY;\n> >>> \n> >>> \tenumerator_ = DeviceEnumerator::create();\n> >>> \tif (enumerator_->enumerate())","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 70A4460B21\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 22 Jan 2019 13:24:13 +0100 (CET)","from pendragon.ideasonboard.com\n\t(dfj612yyyyyyyyyyyyyby-3.rev.dnainternet.fi\n\t[IPv6:2001:14ba:21f5:5b00::2])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E6B7453E;\n\tTue, 22 Jan 2019 13:24:12 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1548159853;\n\tbh=mMQvzPjjbY4d+euZLGhmaInwxWmJP/SBDmqKMzErnNo=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=enPvhfbOT3oQH0Hr0ve4mTPiKh81JNvjFiuc9k74AiHxph7xhJgGjnRs/s92KfH5A\n\t+ukJ5KbpqIaIiozMO7BZo2g7scQQmhhcitAL8E5uMBL3/cilfc4QX4UhYipQ9/96z6\n\tuZRybyDh2+KeHxRgnUJQvgs1Y7MJl3D76qV11Cak=","Date":"Tue, 22 Jan 2019 14:24:12 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tLibCamera Devel <libcamera-devel@lists.libcamera.org>","Message-ID":"<20190122122412.GB4455@pendragon.ideasonboard.com>","References":"<20190121114126.19577-1-kieran.bingham@ideasonboard.com>\n\t<20190121160140.GG6484@bigcity.dyn.berto.se>\n\t<20190121170505.GI12780@pendragon.ideasonboard.com>\n\t<20190122115952.GN6484@bigcity.dyn.berto.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190122115952.GN6484@bigcity.dyn.berto.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_manager: Return\n\tEBUSY if enumerator exists","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 22 Jan 2019 12:24:13 -0000"}}]