Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/1185/?format=api
{ "id": 1185, "url": "https://patchwork.libcamera.org/api/1.1/covers/1185/?format=api", "web_url": "https://patchwork.libcamera.org/cover/1185/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20190511091907.10050-1-niklas.soderlund@ragnatech.se>", "date": "2019-05-11T09:18:56", "name": "[libcamera-devel,v3,00/11] libcamerea: Add support for exclusive access to cameras between processes", "submitter": { "id": 5, "url": "https://patchwork.libcamera.org/api/1.1/people/5/?format=api", "name": "Niklas Söderlund", "email": "niklas.soderlund@ragnatech.se" }, "mbox": "https://patchwork.libcamera.org/cover/1185/mbox/", "series": [ { "id": 303, "url": "https://patchwork.libcamera.org/api/1.1/series/303/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=303", "date": "2019-05-11T09:18:56", "name": "libcamerea: Add support for exclusive access to cameras between processes", "version": 3, "mbox": "https://patchwork.libcamera.org/series/303/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/1185/comments/", "headers": { "Return-Path": "<niklas.soderlund@ragnatech.se>", "Received": [ "from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net\n\t[195.74.38.228])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7EA2B60E4E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 11 May 2019 11:19:42 +0200 (CEST)", "from localhost.localdomain (unknown [185.224.57.161])\n\tby bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA\n\tid e19cc99e-73cd-11e9-8e2f-005056917f90;\n\tSat, 11 May 2019 11:19:39 +0200 (CEST)" ], "X-Halon-ID": "e19cc99e-73cd-11e9-8e2f-005056917f90", "Authorized-sender": "niklas@soderlund.pp.se", "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Sat, 11 May 2019 11:18:56 +0200", "Message-Id": "<20190511091907.10050-1-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.21.0", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v3 00/11] libcamerea: Add support for\n\texclusive access to cameras between processes", "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": "Sat, 11 May 2019 09:19:42 -0000" }, "content": "Hi,\n\nThis series aims to solve mutably exclusive access to a camera between\ntwo or more processes by the use of lockf(). In the process of adding\nsupport for this the MediaDevice implementation is cleaned up a bit and\nstricter call patterns are enforced. At the same time a small load is\ntaken of pipeline handler implementations.\n\nAs a camera might share resources with other cameras from the same\npipeline handler instance I have chosen to put the granularity of the\nlock at the media device level. When a camera is acquired by an\napplications all media devices the pipeline handler it belongs to have\nclaimed are locked and becomes unavailable to other processes. Other\nprocess can still enumerate locked media devices and list all cameras\nthey provide but they can't use any of the cameras who are backed by a\nlocked media device.\n\nPatches 1/11 -- 7/11 deals with tidying up and adding more restrictions\nto the MediaDevices and how they handled inside pipeline handlers. While\npatches 8/11 -- 11/11 adds the new locking scheme which depends on the\nnew stricter handling of media devices.\n\n* Changes since v2\n- Moved cleanup from 2/11 into 1/11 hence dropping all tags from 1/11 as \n it was a big move.\n- Iterate of MediaDevice references in 10/11.\n- Fixed spelling in commit messages.\n\n* Changes since v1\n- Spelling in commit messages.\n- Explicitly prohibit nested locking inside the same libcamera instance,\n thanks Kieran for spotting this!\n\n\nNiklas Söderlund (11):\n libcamera: Always check return value of MediaDevice::acquire()\n libcamera: media_device: Open and close media device inside populate()\n libcamera: media_device: Only read device information in populate()\n libcamera: media_device: Handle media device fd in acquire() and\n release()\n test: media_device: Create a common MediaDeviceTest base class\n test: media_device: Add test for acquire() and release()\n libcamera: media_device: Make open() and close() private\n libcamera: media_device: Add functions to lock device for other\n processes\n libcamera: pipeline_handler: Keep track of MediaDevice\n libcamera: pipeline_handler: Add functions to lock a whole pipeline\n libcamera: camera: Lock the pipeline handler in acquire()\n\n src/libcamera/camera.cpp | 7 +\n src/libcamera/device_enumerator.cpp | 8 +-\n src/libcamera/include/media_device.h | 10 +-\n src/libcamera/include/pipeline_handler.h | 7 +\n src/libcamera/media_device.cpp | 242 +++++++++++-------\n src/libcamera/pipeline/ipu3/ipu3.cpp | 71 +----\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 57 ++---\n src/libcamera/pipeline/uvcvideo.cpp | 23 +-\n src/libcamera/pipeline/vimc.cpp | 21 +-\n src/libcamera/pipeline_handler.cpp | 71 +++++\n test/media_device/media_device_basic.cpp | 41 +++\n test/media_device/media_device_link_test.cpp | 76 ++----\n test/media_device/media_device_print_test.cpp | 17 --\n test/media_device/media_device_test.cpp | 41 +++\n test/media_device/media_device_test.h | 35 +++\n test/media_device/meson.build | 3 +-\n test/pipeline/ipu3/ipu3_pipeline_test.cpp | 5 -\n test/v4l2_device/v4l2_device_test.cpp | 4 -\n test/v4l2_subdevice/v4l2_subdevice_test.cpp | 17 +-\n 19 files changed, 424 insertions(+), 332 deletions(-)\n create mode 100644 test/media_device/media_device_basic.cpp\n create mode 100644 test/media_device/media_device_test.cpp\n create mode 100644 test/media_device/media_device_test.h" }