From patchwork Wed Dec 11 04:16:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cheng-Hao Yang X-Patchwork-Id: 22286 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id E9C86BD80A for ; Wed, 11 Dec 2024 04:16:44 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DDD0A67E95; Wed, 11 Dec 2024 05:16:43 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="Fd4O/hgv"; dkim-atps=neutral Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 56EB0618AA for ; Wed, 11 Dec 2024 05:16:24 +0100 (CET) Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2166651f752so23740085ad.3 for ; Tue, 10 Dec 2024 20:16:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1733890582; x=1734495382; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=MUpO+Ayn7Uuo+yrRoTUsvo+gZIvzgEsmVVl5FJlHn28=; b=Fd4O/hgvWzWEQzvGAELK9gy/4ESRgpcAEeDk5gRUYK2R5EXgr9s5Ls3J8Bj2AJ7GEA nd4517V8fi0xWPPn1KOw4Tjxf/7URFN9DRwGws8M7nXOQvtfE/pJrZqfKDLzVq6kV5HP McP7aNPhPWmMyvE2EKKawE6OUpdDhbzHkZ7zA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733890582; x=1734495382; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MUpO+Ayn7Uuo+yrRoTUsvo+gZIvzgEsmVVl5FJlHn28=; b=VNtRkhjvPavj+WSJKK/T6ZPe2WjWz2O8+lx4Ahqz0LjUt7kxZL7cutdX/twmadxFiC lKRsYVNak8skztcBh5eN8QgUUsAJ285+sHLpi3FzrMsVxsA/rLILCQHyO5Z30JQi3lDx wWHx0Uvs2JN0U1D2ckhNB2pQ/p7fsf5mxJXzCl7f2/XGjY1afCV4I/d4fnVzolIiVZME x/6EAsLulXWYTE1XT8/izRp1VV+qlNamTJE4SbLU1kfcpuPIqE30Inx+brP2gQpWQBdw PKAgBApCOEhSGh7klt2uncwXdhBOBbs0afuzusDos2BX5gKxLVswy+awLAfxBSNGHvwA BnxA== X-Gm-Message-State: AOJu0YyiKi+gTLbFfUGYrpIb46/izK/p3WW4taj3KRwJW1mbTKEb2PSA neKPVo3OiCz+XaBapXEpxO26FYC3QW64lMj70hO703dkJ6/FUQwNCNdcM8yqka48VxkHIWGktpk = X-Gm-Gg: ASbGncuSbHo0JIV+pO/46n+iZD7Ipn27YL/cBnZNdIZ2izipsnfJuMdnaPj1/C7n6U5 9HPCoC1rW0XVJzXK2VrtEdb4QpI8OZLMXi40S0qzla4hw7FrJuxsZ5ocnvyWtyltK81v+kgn/Mm /KzeX2qarmAuLZ9YWRvJQgIPo3AW6gVCiaUuDGrMRuSc3uGUfc8CSyQFI5AtAK/IOHO/u5To66s udjMrSHilfu3ISWP79S98y70Wp/giieHNMuooSAsqVyRTptdtNHunXiPvtyrnXki8sZOC+nDRZW nHz4YNx6HdsHvAr8V3BerA0HSeVe8KptI9ygL9QDmXQQAYkn00SwPVDyVizZ X-Google-Smtp-Source: AGHT+IHhNxwcJwJqLfD/+DwVZi87nNKCmcSQbih5fK//khxHatKHE5t/4cFFMZfRYo8OuAMfywQjaQ== X-Received: by 2002:a17:903:2282:b0:215:431f:268f with SMTP id d9443c01a7336-217783984bbmr28202925ad.10.1733890582220; Tue, 10 Dec 2024 20:16:22 -0800 (PST) Received: from chenghaoyang-low.c.googlers.com.com (112.212.229.35.bc.googleusercontent.com. [35.229.212.112]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-215f8f29bcbsm97261235ad.262.2024.12.10.20.16.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Dec 2024 20:16:21 -0800 (PST) From: Harvey Yang To: libcamera-devel@lists.libcamera.org Cc: Harvey Yang , Kieran Bingham Subject: [PATCH v2] DmaBufAllocator: Make DmaSyncer non-copyable Date: Wed, 11 Dec 2024 04:16:08 +0000 Message-ID: <20241211041617.1979087-1-chenghaoyang@chromium.org> X-Mailer: git-send-email 2.47.0.338.g60cca15819-goog MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" As DmaSyncer does sync start/end in the c'tor/d'tor, copying a DmaSyncer instance would trigger sync end earlier than expected. This patch makes it non-copyable to avoid the issue. Fixes: 39482d59fe71 ("DmaBufAllocator: Add Dma Buffer synchronization function & helper class") Signed-off-by: Harvey Yang Reviewed-by: Kieran Bingham Reviewed-by: Laurent Pinchart --- include/libcamera/internal/dma_buf_allocator.h | 5 +++++ src/libcamera/dma_buf_allocator.cpp | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/include/libcamera/internal/dma_buf_allocator.h b/include/libcamera/internal/dma_buf_allocator.h index fc5de2c13edd..0cb20963098c 100644 --- a/include/libcamera/internal/dma_buf_allocator.h +++ b/include/libcamera/internal/dma_buf_allocator.h @@ -60,9 +60,14 @@ public: explicit DmaSyncer(SharedFD fd, SyncType type = SyncType::ReadWrite); + DmaSyncer(DmaSyncer &&) = default; + DmaSyncer &operator=(DmaSyncer &&) = default; + ~DmaSyncer(); private: + LIBCAMERA_DISABLE_COPY(DmaSyncer) + void sync(uint64_t step); SharedFD fd_; diff --git a/src/libcamera/dma_buf_allocator.cpp b/src/libcamera/dma_buf_allocator.cpp index 3cc52f9686b0..5f517828d960 100644 --- a/src/libcamera/dma_buf_allocator.cpp +++ b/src/libcamera/dma_buf_allocator.cpp @@ -311,6 +311,16 @@ DmaSyncer::DmaSyncer(SharedFD fd, SyncType type) sync(DMA_BUF_SYNC_START); } +/** + * \fn DmaSyncer::DmaSyncer(DmaSyncer &&) = default; + * \brief Enable move on class DmaSyncer + */ + +/** + * \fn DmaSyncer::operator=(DmaSyncer &&) = default; + * \brief Enable move on class DmaSyncer + */ + DmaSyncer::~DmaSyncer() { sync(DMA_BUF_SYNC_END);