Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp970989rwl; Fri, 31 Mar 2023 05:11:05 -0700 (PDT) X-Google-Smtp-Source: AKy350bEg1CMaWaUPrqiZQPC7mQxVTxsDauSY43UZr3b11rWhPNWPe3uQTO45+gcqxIq7EaLct9v X-Received: by 2002:a05:6402:524e:b0:4fd:2978:d80 with SMTP id t14-20020a056402524e00b004fd29780d80mr27498987edd.1.1680264665523; Fri, 31 Mar 2023 05:11:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680264665; cv=none; d=google.com; s=arc-20160816; b=utd3uzovlRzsrko8EXU8QQRPCMysDSijkJU8Zqs/2ENxOnBQeqK2gDaNqtJn3pcYjj g80srtgFNyNH9dNms3BTFs2B4TUtRwnhdpe7RjDEZfnxsLAEJjoiG7K0WWtr6Od/s4GA GwXeQthxKKKR2GFLDQPTEtIF2u5qiOGG0BxftclkQhFQVg8SUifMMQgnmsLfnMDRhA18 MhlD5XUjTKpGGrN8Nr0bmetFX/hnUnlMZdP2ZBdIjM4nMu9caZWnpzmQLGn5sWFUbZVq WzC3cIC7M4slWwwXh9cJErfFUjxnnXZoHMoiRO7jWBuSZslwlqT9s/K+mIVUu1yy94TM 78kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:in-reply-to:date:subject :cc:to:from:user-agent:references:dkim-signature; bh=me6wuukqjm6+JgHKL/b7Cfg/XRIamYGaPs47EOLk4SA=; b=evsMW27ZxD7ySGkTzQM00dtKTjZTpDFI8AZhephxRT9n0RQwAe7Mcvwq8uX2q1OBKl OLS42zi71ZMlWulC+XYiFmJm8u/HWDHA08/i06ob7BP8cXU/3h/haTYskBaR0bEG2CDp BZfdtmUouv2SOKWUP2e8GeuajD1YDIS4IrwyP/b1SHcUM/IV/C37c25BMWxs063Y6T3U GsIWhV3Czw3hWiLXMv2s/N10Q6B3eajUHpifIcpPljg2TWv4U8HCKdPweq/Ll27IX1PN UoD+5g5QaUViJ17yJqsWjGBNCG4uuODASFrldoNecn4VtDCQTBnUPqc35EwFjCHvyivz yptA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@metaspace-dk.20210112.gappssmtp.com header.s=20210112 header.b=NtEMRH7l; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v5-20020a170906380500b0093f3027f7c8si1630459ejc.802.2023.03.31.05.10.35; Fri, 31 Mar 2023 05:11:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@metaspace-dk.20210112.gappssmtp.com header.s=20210112 header.b=NtEMRH7l; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229792AbjCaMCW (ORCPT + 99 others); Fri, 31 Mar 2023 08:02:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44010 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229758AbjCaMCU (ORCPT ); Fri, 31 Mar 2023 08:02:20 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 584FD1BF64 for ; Fri, 31 Mar 2023 05:02:19 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id q19so19065438wrc.5 for ; Fri, 31 Mar 2023 05:02:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=metaspace-dk.20210112.gappssmtp.com; s=20210112; t=1680264138; h=mime-version:message-id:in-reply-to:date:subject:cc:to:from :user-agent:references:from:to:cc:subject:date:message-id:reply-to; bh=me6wuukqjm6+JgHKL/b7Cfg/XRIamYGaPs47EOLk4SA=; b=NtEMRH7lOht6iy9cvC9nfq7w6MPzHGqwFfvITBaIWiPIICbDdkmz5L3qKu16YujBLP rJapPCtzjxPECq39Es2y1wu50GTpiSXNHyVqN3YIBKq7VXjTjRm6NuFxKINK4VcA67kO u7EqxjhmWwl9c0TqtWNB+bs/Ph2/g5d48oFH7tq4WjjTn8Su2S/cV6XOl8ndff4boVuZ cU0ly+emc0ndyjSiTOAOwRKOw/yfxdA0UEpb7kct7f0QQzXPEtVPu4al3ldiv8gD95Q/ 2qaHmJR4la9wVKcs9PuyrSR19P6ijNL5/xSkEzYkkdDrd/nxyZ2iOttIzECWMFNh0vmh OkdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680264138; h=mime-version:message-id:in-reply-to:date:subject:cc:to:from :user-agent:references:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=me6wuukqjm6+JgHKL/b7Cfg/XRIamYGaPs47EOLk4SA=; b=YFbyBdiWGKs3Pu+5/VKnKsKGbLnk3yX3FG4jjYvWE1AQuqh+2VEoYX1CDwJTwvREgg pOvVVOEqkH1mTWw6LT8VYXMv2TAtxcEXGeHvIM2bmpTU2h4n/kO8zYXhAJcWj9gj+o/f MjMy9lDF9VvQ35iKc/OWMxB1F04uDwEgMcbMvn4fUE07n8bX+zXF1vYLamanuTH2iM1h 6zhcXwYQ9xwS9kGonOuntXAM+Mfor9me52DU5YS2McsJDsV2s6uRYNW+O5bK9aQHMmkd Bw0K2+hRVUEkNMT+k0y6HMthKFq/BMhKkgQ4wAZml9hrhGvg6Lzr8W6q/kO4aBcPbIyn y9Og== X-Gm-Message-State: AAQBX9fgEalHPLvU1ByUE5isa7zpPOtLjplQ2wIkpx+u1tgyNFO9vuEh laU3hUTayZlddkspKtI7Z0IxXg== X-Received: by 2002:adf:f6cc:0:b0:2cf:1c43:7056 with SMTP id y12-20020adff6cc000000b002cf1c437056mr19268160wrp.36.1680264137871; Fri, 31 Mar 2023 05:02:17 -0700 (PDT) Received: from localhost ([147.161.155.91]) by smtp.gmail.com with ESMTPSA id l5-20020a5d5265000000b002e55cc69169sm2064017wrc.38.2023.03.31.05.02.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Mar 2023 05:02:17 -0700 (PDT) References: <20230329223239.138757-1-y86-dev@protonmail.com> <20230329223239.138757-5-y86-dev@protonmail.com> User-agent: mu4e 1.9.18; emacs 28.2.50 From: Andreas Hindborg To: y86-dev@protonmail.com Cc: Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , =?utf-8?Q?Bj=C3=B6rn?= Roy Baron , Alice Ryhl , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, Andreas Hindborg Subject: Re: [PATCH v3 04/13] rust: add pin-init API core Date: Fri, 31 Mar 2023 14:00:31 +0200 In-reply-to: <20230329223239.138757-5-y86-dev@protonmail.com> Message-ID: <87sfdl2kon.fsf@metaspace.dk> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=0.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org y86-dev@protonmail.com writes: > From: Benno Lossin > > This API is used to facilitate safe pinned initialization of structs. It > replaces cumbersome `unsafe` manual initialization with elegant safe macro > invocations. > > Due to the size of this change it has been split into six commits: > 1. This commit introducing the basic public interface: traits and > functions to represent and create initializers. > 2. Adds the `#[pin_data]`, `pin_init!`, `try_pin_init!`, `init!` and > `try_init!` macros along with their internal types. > 3. Adds the `InPlaceInit` trait that allows using an initializer to create > an object inside of a `Box` and other smart pointers. > 4. Adds the `PinnedDrop` trait and adds macro support for it in > the `#[pin_data]` macro. > 5. Adds the `stack_pin_init!` macro allowing to pin-initialize a struct on > the stack. > 6. Adds the `Zeroable` trait and `init::zeroed` function to initialize > types that have `0x00` in all bytes as a valid bit pattern. > > -- > Co-developed-by: Gary Guo > Signed-off-by: Gary Guo > Signed-off-by: Benno Lossin > --- Reviewed-by: Andreas Hindborg