From nobody Wed Dec 17 13:53:22 2025 Received: from mail-io1-f45.google.com (mail-io1-f45.google.com [209.85.166.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E7E2D53F; Mon, 24 Jun 2024 03:04:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719198256; cv=none; b=t9U64fubEZwfXqmpASKoMK1kU65h+wr7IARxVsBO663veLHkJ0rGZC3H8yn4SML+eq7gnz8QHQeD0zgNeKv1dI90tYSINuKSXBfroQ42wfh8j6FZa16q1Cq4ZOxxAMsNKXZNIwoyLUdP0IYhygfeHfcGLK4opONOxY/gFNsvkag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719198256; c=relaxed/simple; bh=Xvy39LBf0WnvL0pZD8JpkXNPg41X7rN80n3vjZN/Cgs=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZHTDRmx/8hhy1eOZEF1CLPwuL7USKqSG2arQxOGt5pMqdWltgSg9I2bmJ9LimaM2Qn23EuQD5R6bKUr0GapSLyay3Akn/9kjITO7SFCamUE16toH8T3EgrK3dk/2QXzx+Rufr+0WVBY2XhxeF17tONrqtoAuAi9z/WZyVgfRCIU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lXERLS7j; arc=none smtp.client-ip=209.85.166.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lXERLS7j" Received: by mail-io1-f45.google.com with SMTP id ca18e2360f4ac-7ec01b79de6so128255639f.3; Sun, 23 Jun 2024 20:04:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719198254; x=1719803054; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=AtBmzf0zsgTxIoUetvU80XXP5CdtBfX9zBQ+TAGQs8w=; b=lXERLS7jRZUKTZXOm+sfpfJ02CCZXQ4yecfwE62aJepnQc5p8he5MCZ21hOZW5htcp 13GCm8+EwD7gz+GJrzfRgpGe/drxIItw6emDR1yEULOYNOI9Bns7I5P9Tf96RDKC0NJQ 3/DMYc3IhtUharutBd3iyOe4E0VdCiKTSKNT3mLBXpyTtoJ6OSFkptZu8Fxx1+CMLiK5 jLQ/7tW5n2KpMvDPHmW4P5lbFxjkTkNQyU0lqXWkw3YH5Qh+2Oxwnmlh1QXYWWZMimFi T4qcS61PlHX67n9+aV41syu2C3m3/fZ4+KR/WfRHMSeZ5ZaZ5B3W4tyQ6wcCu+8KqwSt iyyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719198254; x=1719803054; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AtBmzf0zsgTxIoUetvU80XXP5CdtBfX9zBQ+TAGQs8w=; b=EI3kZr+qsaw3KRv1bcbzRisXRO+yoG3Iezeb0tlaAtDxvRpKcoI5LiykF6KD/rlJfl iqwn21e55sf7oR7AoucJRPSUiYOUbZc4wyZc0aVZuwmx4tccqZYRTbztFy6Qf0GbWsxB OTPFeevEDjd+lErsfKO4wG1K5yITRv3MHxppiVDpxXO9iR4zM35wOO6crFGQHoFGUTkJ f5xAgZpGMLpLv2O8q3W0yVdtgvJWDsPsrqTcbih2RW3cX0L6RbzQ7QMOj6r0xTR0Ivkq s2anw7OAKCzlmmkPPBtScsVmHLRUiCtz7vgqpdjjxTSFoZDmzFMGnzUs13T9rgMx5j99 KI6Q== X-Forwarded-Encrypted: i=1; AJvYcCUyTUprt3OCXFfVnAkRYcgHpz/uIz3Nr1iolc1OR27mVCjykiTtFf0YOqIZkwCXL8S6jqjcKudhiK36kak9d9ioMNwTOETPZHjga2v0zRM6LHQjn0SYpnOsjwM4UINL8wafk5c+0+iFdPeDGyg= X-Gm-Message-State: AOJu0Yw68L9+6ie1f8ICg3xrnlUXS7G+YUoW10ksqaI4ii8kLEXGPhQl OOcATcVPItNcse3W8mxHSvl1kSaXKo3KKc4YKmaprUIsLJ8ilMDC X-Google-Smtp-Source: AGHT+IGDXLOf6i1mgYJKv4jAN1Lq7U4A9khX3fOWtSQcSDWIHzn+wge5jQBC1QAqShH6lgqrONABHw== X-Received: by 2002:a05:6602:341d:b0:7ec:4c1:14fb with SMTP id ca18e2360f4ac-7f3a7470f43mr409991939f.3.1719198254456; Sun, 23 Jun 2024 20:04:14 -0700 (PDT) Received: from localhost.localdomain (h135-131-130-199.ashwwi.broadband.dynamic.tds.net. [135.131.130.199]) by smtp.gmail.com with ESMTPSA id 8926c6da1cb9f-4b9ea0957c0sm1045476173.131.2024.06.23.20.04.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jun 2024 20:04:14 -0700 (PDT) From: "Ethan D. Twardy" To: Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Martin Rodriguez Reboredo , "Ethan D. Twardy" , Aswin Unnikrishnan , Trevor Gross , rust-for-linux@vger.kernel.org (open list:RUST), linux-kernel@vger.kernel.org (open list) Subject: [PATCH 1/4] kbuild: rust: Expand rusttest target for macros Date: Sun, 23 Jun 2024 22:03:03 -0500 Message-ID: <20240624030327.90301-2-ethan.twardy@gmail.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20240624030327.90301-1-ethan.twardy@gmail.com> References: <20240624030327.90301-1-ethan.twardy@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Previously, the rusttest target for the macros crate did not specify the dependencies necessary to run the rustdoc tests. These test rely on the kernel crate, so add a specialized rustdoc tests command for this particular crate. Signed-off-by: Ethan D. Twardy diff --git a/rust/Makefile b/rust/Makefile index f70d5e244fee..de58f0cae23b 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -147,6 +147,23 @@ rusttestlib-macros: private rustc_test_library_proc = =3D yes rusttestlib-macros: $(src)/macros/lib.rs rusttest-prepare FORCE +$(call if_changed,rustc_test_library) =20 +rusttestlib-build_error: $(src)/build_error.rs $(obj)/compiler_builtins.o = FORCE + +$(call if_changed,rustc_test_library) + +rusttestlib-uapi: $(src)/uapi/lib.rs \ + $(obj)/compiler_builtins.o \ + $(obj)/uapi/uapi_generated.rs FORCE + +$(call if_changed,rustc_test_library) + +rusttestlib-kernel: private rustc_target_flags =3D --extern alloc \ + --extern build_error --extern macros=3D$(objtree)/$(obj)/libmacros.so \ + --extern bindings --extern uapi +rusttestlib-kernel: $(src)/kernel/lib.rs rustdoc-compiler_builtins \ + rustdoc-alloc rusttestlib-bindings rusttestlib-uapi rusttestlib-build_= error \ + $(obj)/libmacros.so \ + $(obj)/bindings.o FORCE + +$(call if_changed,rustc_test_library) + rusttestlib-bindings: $(src)/bindings/lib.rs rusttest-prepare FORCE +$(call if_changed,rustc_test_library) =20 @@ -245,11 +262,24 @@ quiet_cmd_rustsysroot =3D RUSTSYSROOT rusttest-prepare: FORCE +$(call if_changed,rustsysroot) =20 -rusttest-macros: private rustc_target_flags =3D --extern proc_macro +quiet_cmd_rustdoc_test_macros =3D RUSTDOC T $< + cmd_rustdoc_test_macros =3D \ + OBJTREE=3D$(abspath $(objtree)) \ + $(RUSTDOC) --test $(rust_common_flags) \ + @$(objtree)/include/generated/rustc_cfg \ + $(rustc_target_flags) $(rustdoc_test_target_flags) \ + --sysroot $(objtree)/$(obj)/test/sysroot $(rustdoc_test_quiet) \ + -L$(objtree)/$(obj)/test --output $(rustdoc_output) \ + -Zproc-macro-backtrace \ + --crate-name $(subst rusttest-,,$@) $< + +rusttest-macros: private rustc_target_flags =3D --extern proc_macro \ + --extern macros=3D$(objtree)/$(obj)/libmacros.so --extern kernel rusttest-macros: private rustdoc_test_target_flags =3D --crate-type proc-m= acro -rusttest-macros: $(src)/macros/lib.rs rusttest-prepare FORCE +rusttest-macros: $(src)/macros/lib.rs rusttest-prepare \ + rusttestlib-macros rusttestlib-kernel FORCE +$(call if_changed,rustc_test) - +$(call if_changed,rustdoc_test) + +$(call if_changed,rustdoc_test_macros) =20 rusttest-kernel: private rustc_target_flags =3D --extern alloc \ --extern build_error --extern macros --extern bindings --extern uapi --=20 2.44.2 From nobody Wed Dec 17 13:53:22 2025 Received: from mail-io1-f53.google.com (mail-io1-f53.google.com [209.85.166.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C7B310A1F; Mon, 24 Jun 2024 03:04:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719198262; cv=none; b=BXsV8ytiE58tWHTXqey3+Umm/Ejk3adBcRVgaPiP1MzMgCxYLL6YgLCUqMF2TC7cvIgG2btOpnotqUWAMUDeiyQXmxlunSzfGjvR1d704PQuC7w/gg2E/MJRsumHFZ0T0R7a01cACMD2DYVvP1X7LrkdU+lalRLEjnuDPaoK1Nw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719198262; c=relaxed/simple; bh=8946RKbWvVK34fcGypIqdtBOAHqUp7wD4UIPgWaIoR0=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AB51txR4J5kjKipD9+BJNQ+vyg+NmBrfGahRZE9EULZG0H5RM2plTk7fNgK0hVgfIj91qFOYjpN9V91YSuiFi4BT5oIx9ZXK22TD/NlyYHIeaXoKzALDMc4anGW76u2PivTztYg1XC3igeQY/8NnmKxT5/315JerxPHLELWePM8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ez2qFlUb; arc=none smtp.client-ip=209.85.166.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ez2qFlUb" Received: by mail-io1-f53.google.com with SMTP id ca18e2360f4ac-7eee734a668so173071939f.3; Sun, 23 Jun 2024 20:04:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719198260; x=1719803060; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=vmh5Jdcs1vkUsY1YmWKD/Kf7MsgGAo6MtXt52rq5Ywc=; b=ez2qFlUb7ycU334xt81gVuHo3+fxev8yHjo1WPOkr4MmiEEb+gzkjFiFgDzzCC6Y20 uvisU4XL/eC76VCpjeNXyrJ6o9bjspeAXhFRtziP4FHOGbLbjMuM4sXYdOF7Vl1ALtka td+WG71VNi4Sci2F6PQX4wzUEOknajULUclfQ9LaXoXhQXiyt8R5iZMTI+ytBNDIX7Lj KOFZokbQAlCvgTxM99x+3ds3iIWzxRmmrmW+Yo8fH5FGH9B5RAn9xFWVF7zwjtpcopx6 22Vb2Ri5k0CUbBBfXIv6iouC5TlQ79tqLAx3jqFExNCcMgy2w0Sxsq60keu3VmMHLvq1 HnLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719198260; x=1719803060; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vmh5Jdcs1vkUsY1YmWKD/Kf7MsgGAo6MtXt52rq5Ywc=; b=QGDVlDXWNgLbvkhejDiPgNA9qWinEElVoRNaHqt/9G6+iSlYKVV5pJCR/JnZTlEBm+ 40uL0NH1Dne2oAqsexNOmcMZvdAx8siBC10QtniRQk/qeIgkxG6a1uNBVjzbtVyldr4+ GVDXElyHrUNvyfJxwS1trkfo0PaHiJ6uNdhG9y10wtUcVQVakT8uo2jK0vBtYjFUFyES rCurZ0y1dOULg4OiRd5QiLuFs/mA+d06vT7zDJf2zOnjTEu+CQ7VpPpq/Pexp99qKQYs eNSaf5DN/1/Ozsl215wDhYyC8uIAfoHOWMCKVTx7uM+ylolKzOYihx53+ZHBTTJ++xsQ UB2A== X-Forwarded-Encrypted: i=1; AJvYcCX48XxlQEs5h5TfemPyPXbLjRfhG20PsFcX5gAdGoycK3yk+AYvqY5ZJZkNIiG1RWdjAQoh9LEd7RDuZJWA89qq71QyiDEM18u8uwa3b9DpshZ28f9gZftiFFCquI8zozR8gksioGi5Oe6Bvm0= X-Gm-Message-State: AOJu0YyK6klL9rfOvX/FuniJXMDxmc92k6mE7cXH7RFZpQkgdnSgwGpF J0V6nIzNMULnCTcNrMVjkMbqbcattcGx5AGthCJ6TXnMhrSvjvpK X-Google-Smtp-Source: AGHT+IHYWrf1jlsR2+uuv8SI6YO//NX+DmWcKo2Z62Th2e/nH2ROMKMWvT/6SeozZVPiz70Ut12CLQ== X-Received: by 2002:a05:6602:6c15:b0:7eb:7e53:6e0d with SMTP id ca18e2360f4ac-7f3a1539ddamr492183739f.13.1719198260397; Sun, 23 Jun 2024 20:04:20 -0700 (PDT) Received: from localhost.localdomain (h135-131-130-199.ashwwi.broadband.dynamic.tds.net. [135.131.130.199]) by smtp.gmail.com with ESMTPSA id 8926c6da1cb9f-4b9ea0957c0sm1045476173.131.2024.06.23.20.04.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jun 2024 20:04:20 -0700 (PDT) From: "Ethan D. Twardy" To: Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Martin Rodriguez Reboredo , "Ethan D. Twardy" , Trevor Gross , Aswin Unnikrishnan , rust-for-linux@vger.kernel.org (open list:RUST), linux-kernel@vger.kernel.org (open list) Subject: [PATCH 2/4] rust: Enable test for macros::module Date: Sun, 23 Jun 2024 22:03:04 -0500 Message-ID: <20240624030327.90301-3-ethan.twardy@gmail.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20240624030327.90301-1-ethan.twardy@gmail.com> References: <20240624030327.90301-1-ethan.twardy@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Previously, this test was ignored due to a missing necessary dependency on the `kernel` crate. Signed-off-by: Ethan D. Twardy diff --git a/rust/Makefile b/rust/Makefile index de58f0cae23b..16abb8175494 100644 Reviewed-by: Alice Ryhl --- a/rust/Makefile +++ b/rust/Makefile @@ -264,6 +264,7 @@ rusttest-prepare: FORCE =20 quiet_cmd_rustdoc_test_macros =3D RUSTDOC T $< cmd_rustdoc_test_macros =3D \ + export RUST_MODFILE=3Dtest.rs; \ OBJTREE=3D$(abspath $(objtree)) \ $(RUSTDOC) --test $(rust_common_flags) \ @$(objtree)/include/generated/rustc_cfg \ diff --git a/rust/macros/lib.rs b/rust/macros/lib.rs index 520eae5fd792..d8bd34c0ba89 100644 --- a/rust/macros/lib.rs +++ b/rust/macros/lib.rs @@ -26,9 +26,13 @@ /// /// # Examples /// -/// ```ignore +/// ```rust +/// #[macro_use] extern crate macros; +/// #[macro_use] extern crate kernel; /// use kernel::prelude::*; /// +/// struct MyModule(i32); +/// /// module!{ /// type: MyModule, /// name: "my_kernel_module", @@ -37,22 +41,15 @@ /// license: "GPL", /// } /// -/// struct MyModule; -/// /// impl kernel::Module for MyModule { -/// fn init() -> Result { -/// // If the parameter is writeable, then the kparam lock must be -/// // taken to read the parameter: -/// { -/// let lock =3D THIS_MODULE.kernel_param_lock(); -/// pr_info!("i32 param is: {}\n", writeable_i32.read(&lock)); -/// } -/// // If the parameter is read only, it can be read without locki= ng -/// // the kernel parameters: -/// pr_info!("i32 param is: {}\n", my_i32.read()); -/// Ok(Self) +/// fn init(module: &'static ThisModule) -> Result { +/// let foo: i32 =3D 42; +/// pr_info!("I contain: {}\n", foo); +/// Ok(Self(foo)) /// } /// } +/// +/// # fn main() {} /// ``` /// /// # Supported argument types --=20 2.44.2 From nobody Wed Dec 17 13:53:22 2025 Received: from mail-io1-f54.google.com (mail-io1-f54.google.com [209.85.166.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 28D5015E83; Mon, 24 Jun 2024 03:04:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719198268; cv=none; b=jJ+y78AZmBuzCzZOF72wrQqfNCvr3lLmYXq1ZdowUYqRzPKdcyFHaRGWgJ5qnsHfxUD9f+njywGepH2iLhQFSb834eQ42oX864ElxyM9n7LuD/suD4H/4wbImnJ9Jsjn2a0Tbs+X3nkVDTvNcASCK1eZJjtM40LJSqj34bakkeQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719198268; c=relaxed/simple; bh=8SgSh3BVvDcW2Wrj9oTKukbPMt7005OVvY4ng+7QqLU=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bsKSX+wAb9qW1tZzYphoDs6Ftnj+77kfrfjqYZSk3jFVcl0yKb6+2YLqF4x5VbYlBxb7h2s+FFMRZwKRNnwaJTKQR+L/CLbUPskAigCDKssM6hqHwcK/sYzmqW0P9WInXreyOQtfmnDE1o2ovO8gFfkQRZ6V9DWDp8PZVHPmjM4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iPovRjf4; arc=none smtp.client-ip=209.85.166.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iPovRjf4" Received: by mail-io1-f54.google.com with SMTP id ca18e2360f4ac-7eb5dd9f994so138007039f.2; Sun, 23 Jun 2024 20:04:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719198266; x=1719803066; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=sGbYXEplpjwD5wkMdsIyGjNuNYKckUejQgWaAgd12FM=; b=iPovRjf4eP4o0cmNMVvpSeypEeg+7e2xPX8jDyX6ooPy6esoSxZ3crsZ7rmzyslltV RAuBsmrclnLpEm4QqxYh2k5pCttxBc6itVPPQvUi1Q9BTgbEyrcjS00ALFfVffJQGfez uxk5iSGNl6SfcImAF361an/l1fy1HSWztq/Y7g4DK4D8vRK7KpytKwqY/g4lKrAW73Bh oIWsXpx7m1v9smWHArO5+LwcecbYP4HXnNa9jmfRmSltv+0zFWa8VqY/kFw4JUjE5DuX pIERhwniEhZznO1TsX6rAqpZtjB7nf7xK/uZjTnFMTNmfW5VfIkk7r2tilNrBk74CmuM fJ7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719198266; x=1719803066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sGbYXEplpjwD5wkMdsIyGjNuNYKckUejQgWaAgd12FM=; b=stV1RdutS1WYFrWA5opTRSIgnpY02+s7A2h97RiWjJ9CmcLwtTuN24CLKQg015b2Vy 9kRSSltCl+RA5czlfjX3Ng7Y2eUuULMOfSkSlkt3EniyURUspcvi4yx1i70/8RcraqWD gaHFNB8gmVTG8F3gny5xRxq8jdaU03JLe3p3LnEfH0wE4yExDYIoL+a9G7g75skfJhlw LM9+AmyEG2CHmdkDPv10AgiBgGFy9SPicLKElBg0u5hpsKs7z2KN0yz/lXNtKR/Lk2+I fCq4SDUurMm1UjF1R88GkxN2VPwdvabou/voZSNOEXkKqj/sez2WKUhc2mZP9+uJIHZU BxCw== X-Forwarded-Encrypted: i=1; AJvYcCVZDu0aZoc0MTiqu9LMBvhq8qj2Q5iCs6+k6ET/dD62uipsRhwQxUYVo83TZxbMwg4ZtClkL6uw3tuusFcH03CZmG3NAUACKeGK5mm7XHfuAQ395MIjTFbQCfgFuhnHc3pQxVEgOxVzTVRKKRc= X-Gm-Message-State: AOJu0Yw5ZcR9lfAXa7N0APGETQbZ9htIO3blLEOq/nL5k813r+Yh+4MP xS1hZE+gdRvOGHQSuV5XIZ+guv51ICZ5PnVheKHjXBUfocehxonB X-Google-Smtp-Source: AGHT+IGGh2r+QdPigrqsEedU7f7SfWPpMbQdG14OFtxKZwvXMRSAK++h7agiUtBE9dxZDM74KmW+Ew== X-Received: by 2002:a05:6602:14c2:b0:7eb:80dd:83c9 with SMTP id ca18e2360f4ac-7f3a13eb9f6mr555721239f.9.1719198266130; Sun, 23 Jun 2024 20:04:26 -0700 (PDT) Received: from localhost.localdomain (h135-131-130-199.ashwwi.broadband.dynamic.tds.net. [135.131.130.199]) by smtp.gmail.com with ESMTPSA id 8926c6da1cb9f-4b9ea0957c0sm1045476173.131.2024.06.23.20.04.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jun 2024 20:04:25 -0700 (PDT) From: "Ethan D. Twardy" To: Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Martin Rodriguez Reboredo , "Ethan D. Twardy" , Trevor Gross , Aswin Unnikrishnan , rust-for-linux@vger.kernel.org (open list:RUST), linux-kernel@vger.kernel.org (open list) Subject: [PATCH 3/4] rust: macros: Enable use from macro_rules! Date: Sun, 23 Jun 2024 22:03:05 -0500 Message-ID: <20240624030327.90301-4-ethan.twardy@gmail.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20240624030327.90301-1-ethan.twardy@gmail.com> References: <20240624030327.90301-1-ethan.twardy@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" According to the rustdoc for the proc_macro crate[1], tokens captured from a "macro variable" (e.g. from within macro_rules!) may be delimited by invisible tokens and be contained within a proc_macro::Group. Previously, this scenario was not handled by macros::paste, which caused a proc-macro panic when the corresponding tests are enabled. Enable the tests, and handle this case by making macros::paste::concat recursive. [1]: https://doc.rust-lang.org/stable/proc_macro/enum.Delimiter.html Signed-off-by: Ethan D. Twardy diff --git a/rust/macros/lib.rs b/rust/macros/lib.rs index d8bd34c0ba89..8afed8facb21 100644 Reviewed-by: Alice Ryhl --- a/rust/macros/lib.rs +++ b/rust/macros/lib.rs @@ -269,12 +269,26 @@ pub fn pinned_drop(args: TokenStream, input: TokenStr= eam) -> TokenStream { /// /// # Example /// -/// ```ignore -/// use kernel::macro::paste; +/// ``` +/// # const binder_driver_return_protocol_BR_OK: u32 =3D 0; +/// # const binder_driver_return_protocol_BR_ERROR: u32 =3D 1; +/// # const binder_driver_return_protocol_BR_TRANSACTION: u32 =3D 2; +/// # const binder_driver_return_protocol_BR_REPLY: u32 =3D 3; +/// # const binder_driver_return_protocol_BR_DEAD_REPLY: u32 =3D 4; +/// # const binder_driver_return_protocol_BR_TRANSACTION_COMPLETE: u32 =3D= 5; +/// # const binder_driver_return_protocol_BR_INCREFS: u32 =3D 6; +/// # const binder_driver_return_protocol_BR_ACQUIRE: u32 =3D 7; +/// # const binder_driver_return_protocol_BR_RELEASE: u32 =3D 8; +/// # const binder_driver_return_protocol_BR_DECREFS: u32 =3D 9; +/// # const binder_driver_return_protocol_BR_NOOP: u32 =3D 10; +/// # const binder_driver_return_protocol_BR_SPAWN_LOOPER: u32 =3D 11; +/// # const binder_driver_return_protocol_BR_DEAD_BINDER: u32 =3D 12; +/// # const binder_driver_return_protocol_BR_CLEAR_DEATH_NOTIFICATION_DONE= : u32 =3D 13; +/// # const binder_driver_return_protocol_BR_FAILED_REPLY: u32 =3D 14; /// /// macro_rules! pub_no_prefix { /// ($prefix:ident, $($newname:ident),+) =3D> { -/// paste! { +/// kernel::macros::paste! { /// $(pub(crate) const $newname: u32 =3D [<$prefix $newname>];= )+ /// } /// }; @@ -313,13 +327,29 @@ pub fn pinned_drop(args: TokenStream, input: TokenStr= eam) -> TokenStream { /// * `lower`: change the identifier to lower case. /// * `upper`: change the identifier to upper case. /// -/// ```ignore -/// use kernel::macro::paste; +/// ```rust +/// # const binder_driver_return_protocol_BR_OK: u32 =3D 0; +/// # const binder_driver_return_protocol_BR_ERROR: u32 =3D 1; +/// # const binder_driver_return_protocol_BR_TRANSACTION: u32 =3D 2; +/// # const binder_driver_return_protocol_BR_REPLY: u32 =3D 3; +/// # const binder_driver_return_protocol_BR_DEAD_REPLY: u32 =3D 4; +/// # const binder_driver_return_protocol_BR_TRANSACTION_COMPLETE: u32 =3D= 5; +/// # const binder_driver_return_protocol_BR_INCREFS: u32 =3D 6; +/// # const binder_driver_return_protocol_BR_ACQUIRE: u32 =3D 7; +/// # const binder_driver_return_protocol_BR_RELEASE: u32 =3D 8; +/// # const binder_driver_return_protocol_BR_DECREFS: u32 =3D 9; +/// # const binder_driver_return_protocol_BR_NOOP: u32 =3D 10; +/// # const binder_driver_return_protocol_BR_SPAWN_LOOPER: u32 =3D 11; +/// # const binder_driver_return_protocol_BR_DEAD_BINDER: u32 =3D 12; +/// # const binder_driver_return_protocol_BR_CLEAR_DEATH_NOTIFICATION_DONE= : u32 =3D 13; +/// # const binder_driver_return_protocol_BR_FAILED_REPLY: u32 =3D 14; /// /// macro_rules! pub_no_prefix { /// ($prefix:ident, $($newname:ident),+) =3D> { /// kernel::macros::paste! { -/// $(pub(crate) const fn [<$newname:lower:span>]: u32 =3D [<$= prefix $newname:span>];)+ +/// $(pub(crate) const fn [<$newname:lower:span>]() -> u32 { +/// [<$prefix $newname:span>] +/// })+ /// } /// }; /// } @@ -350,7 +380,7 @@ pub fn pinned_drop(args: TokenStream, input: TokenStrea= m) -> TokenStream { /// /// Literals can also be concatenated with other identifiers: /// -/// ```ignore +/// ```rust /// macro_rules! create_numbered_fn { /// ($name:literal, $val:literal) =3D> { /// kernel::macros::paste! { diff --git a/rust/macros/paste.rs b/rust/macros/paste.rs index f40d42b35b58..6529a387673f 100644 --- a/rust/macros/paste.rs +++ b/rust/macros/paste.rs @@ -2,7 +2,7 @@ =20 use proc_macro::{Delimiter, Group, Ident, Spacing, Span, TokenTree}; =20 -fn concat(tokens: &[TokenTree], group_span: Span) -> TokenTree { +fn concat_helper(tokens: &[TokenTree]) -> Vec<(String, Span)> { let mut tokens =3D tokens.iter(); let mut segments =3D Vec::new(); let mut span =3D None; @@ -46,12 +46,21 @@ fn concat(tokens: &[TokenTree], group_span: Span) -> To= kenTree { }; segments.push((value, sp)); } - _ =3D> panic!("unexpected token in paste segments"), + Some(TokenTree::Group(group)) if group.delimiter() =3D=3D Deli= miter::None =3D> { + let tokens =3D group.stream().into_iter().collect::>(); + segments.append(&mut concat_helper(tokens.as_slice())); + } + token =3D> panic!("unexpected token in paste segments: {:?}", = token), }; } =20 + segments +} + +fn concat(tokens: &[TokenTree], group_span: Span) -> TokenTree { + let segments =3D concat_helper(tokens); let pasted: String =3D segments.into_iter().map(|x| x.0).collect(); - TokenTree::Ident(Ident::new(&pasted, span.unwrap_or(group_span))) + TokenTree::Ident(Ident::new(&pasted, group_span)) } =20 pub(crate) fn expand(tokens: &mut Vec) { --=20 2.44.2 From nobody Wed Dec 17 13:53:22 2025 Received: from mail-io1-f41.google.com (mail-io1-f41.google.com [209.85.166.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB157179AA; Mon, 24 Jun 2024 03:04:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719198274; cv=none; b=G+IZGdmtfMq4Ljodi2boHk1J3eQJf9Xo/te8w8RU6ui6DnN3iurKQMGNJ8WLUWIh4qZZy+F6ftEdfuPR6Dfttpbuaa1u54BuK3mhm1DQVN6fQDUGQxcIKYFDpHu2cypiPJoNGVehjlLl0fqDVwPR4ZRg/XXh3jsJNsfJ1HevRs0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719198274; c=relaxed/simple; bh=3lWWzsvgBJXGWIoXBlvl5SoXy4eJAfKs4q5RVI2wRdA=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Bugn4DOx6aAzKdQFD9jl10T6G08Uc4saBe6Kcro26ksXxtcroLP2oBopf3FVN2q0l+6B/3GSwbfDcwpzVERu1amn2CWR1qc0oFYVqi2Jwmtl+0Q9ZPFEjOpQUiABDghBLDab7T/WIQDzE/j/5rnNz0LnL82j8A9rTf70ew90CJQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=JIy+u9cg; arc=none smtp.client-ip=209.85.166.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JIy+u9cg" Received: by mail-io1-f41.google.com with SMTP id ca18e2360f4ac-7eec09cc7f6so151522139f.0; Sun, 23 Jun 2024 20:04:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719198272; x=1719803072; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=wVanSzZDCxDOZwLyh1W7UweDgQIq9wukQur2GJC15Ak=; b=JIy+u9cg7YBulWurmQs6FRvDgKh16dUn8C9DTVuWIrTF6v5iZGFfUwLy1/XO2uGRg/ 4rsF31vN16Ve8NnA9r65BBmG8tbHj6A5TcLZWZRfokOyV5WKoku3/Uvo3Bf/VBEvRQPZ b1hKJwJbhs3N5kXLdp18QnLQ1KVR4mTjiMXoukyLObQ5/vOL/k89f36SRxI9dWiTcRN9 1hh+UZ8MjY9P/1L3w2bzwMGxvsYTD8twPBmGOh9MK8ZplR72CAvp+kGfYSkxIVKeB84s vqhNc/DLNXAWvviVEe6W3IJ2JsvaWN29OAPW3DHA1nmoyox8HKMg3VCJrqNG+JRsNHX8 BH8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719198272; x=1719803072; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wVanSzZDCxDOZwLyh1W7UweDgQIq9wukQur2GJC15Ak=; b=nuEwxAkgBQblCFvbL6KGivj1cTkBl1DvijP+1IpT6A1dHTlaEj11IenPHXLGq8cOyF gZGiO0NhsyWRFt5WpmBs9Ao8shjmfZ6precBC9Q+Xc2frET9ogzLvNkt580cc+YnduBO 507tSAnILt1JRXv0/+DwwXVxNke5SeGkJOTUrDaOBwVYeUbncq1fHnF3V9QXKNoJnXuK SBbShp8IekzH81aVaZOnHaUuUyXgPxuLJAlw6M7itlM9VJeNj+rLWlJdctkxl9IEkZI4 TdvRIqqmlPXYnaS9yyQ9Tam8M1HV9h/HO1ttTN79M38ZugrZ5mFY19fAKV6iqOsLKMSj dNKg== X-Forwarded-Encrypted: i=1; AJvYcCUHeNSpcdopJ+87iGDKqG8xN1D9KgmBmyOdgPF0B/7Rq8UrLAxstOJHtsXP2dZt9uaNHp1OhM5i9Nb6+YzFES351jwrtIpMVb5xlw1ABLag4HkSxYoHeZLWAIwubPo2vSP5xNlDO1gP/hdGLVM= X-Gm-Message-State: AOJu0YxrbArL/T9uqwdaTNdhEboZSF2UClIzqQGn4mGcz5DavVag2ZBi NGJjOo4R3Id59n+fYndKWe5tY2UJRHXV4TOm28/JgyI6d3FSSSgSwMo8d07T X-Google-Smtp-Source: AGHT+IFOCgXtmU1/lMIFPdlku5fVa9Y3JBThRuPD6d69g582ODfVFo9vS2fwrmuLtPoEEWPAN11IPw== X-Received: by 2002:a05:6602:3f8a:b0:7f1:3ad1:2341 with SMTP id ca18e2360f4ac-7f3a13db517mr526287839f.7.1719198271899; Sun, 23 Jun 2024 20:04:31 -0700 (PDT) Received: from localhost.localdomain (h135-131-130-199.ashwwi.broadband.dynamic.tds.net. [135.131.130.199]) by smtp.gmail.com with ESMTPSA id 8926c6da1cb9f-4b9ea0957c0sm1045476173.131.2024.06.23.20.04.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jun 2024 20:04:31 -0700 (PDT) From: "Ethan D. Twardy" To: Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Martin Rodriguez Reboredo , "Ethan D. Twardy" , Trevor Gross , Aswin Unnikrishnan , rust-for-linux@vger.kernel.org (open list:RUST), linux-kernel@vger.kernel.org (open list) Subject: [PATCH 4/4] rust: macros: Enable the rest of the tests Date: Sun, 23 Jun 2024 22:03:06 -0500 Message-ID: <20240624030327.90301-5-ethan.twardy@gmail.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20240624030327.90301-1-ethan.twardy@gmail.com> References: <20240624030327.90301-1-ethan.twardy@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now that the rusttest target for the macros crate is compiled with the kernel crate as a dependency, the rest of the rustdoc tests can be enabled. Signed-off-by: Ethan D. Twardy diff --git a/rust/macros/lib.rs b/rust/macros/lib.rs index 8afed8facb21..6d764099563b 100644 --- a/rust/macros/lib.rs +++ b/rust/macros/lib.rs @@ -102,7 +102,9 @@ pub fn module(ts: TokenStream) -> TokenStream { /// /// # Examples /// -/// ```ignore +/// ```rust +/// # #[macro_use] extern crate macros; +/// # #[macro_use] extern crate kernel; /// use kernel::error::VTABLE_DEFAULT_ERROR; /// use kernel::prelude::*; /// @@ -147,12 +149,28 @@ pub fn vtable(attr: TokenStream, ts: TokenStream) -> = TokenStream { /// /// # Examples /// -/// ```ignore -/// use kernel::macro::concat_idents; +/// ```rust +/// # const binder_driver_return_protocol_BR_OK: u32 =3D 0; +/// # const binder_driver_return_protocol_BR_ERROR: u32 =3D 1; +/// # const binder_driver_return_protocol_BR_TRANSACTION: u32 =3D 2; +/// # const binder_driver_return_protocol_BR_REPLY: u32 =3D 3; +/// # const binder_driver_return_protocol_BR_DEAD_REPLY: u32 =3D 4; +/// # const binder_driver_return_protocol_BR_TRANSACTION_COMPLETE: u32 =3D= 5; +/// # const binder_driver_return_protocol_BR_INCREFS: u32 =3D 6; +/// # const binder_driver_return_protocol_BR_ACQUIRE: u32 =3D 7; +/// # const binder_driver_return_protocol_BR_RELEASE: u32 =3D 8; +/// # const binder_driver_return_protocol_BR_DECREFS: u32 =3D 9; +/// # const binder_driver_return_protocol_BR_NOOP: u32 =3D 10; +/// # const binder_driver_return_protocol_BR_SPAWN_LOOPER: u32 =3D 11; +/// # const binder_driver_return_protocol_BR_DEAD_BINDER: u32 =3D 12; +/// # const binder_driver_return_protocol_BR_CLEAR_DEATH_NOTIFICATION_DONE= : u32 =3D 13; +/// # const binder_driver_return_protocol_BR_FAILED_REPLY: u32 =3D 14; +/// +/// use kernel::macros::concat_idents; /// /// macro_rules! pub_no_prefix { /// ($prefix:ident, $($newname:ident),+) =3D> { -/// $(pub(crate) const $newname: u32 =3D kernel::macros::concat_id= ents!($prefix, $newname);)+ +/// $(pub(crate) const $newname: u32 =3D concat_idents!($prefix, $= newname);)+ /// }; /// } /// @@ -198,8 +216,9 @@ pub fn concat_idents(ts: TokenStream) -> TokenStream { /// /// # Examples /// -/// ```rust,ignore -/// #[pin_data] +/// ```rust +/// # use std::{sync::Mutex, process::Command}; +/// #[kernel::macros::pin_data] /// struct DriverData { /// #[pin] /// queue: Mutex>, @@ -207,7 +226,15 @@ pub fn concat_idents(ts: TokenStream) -> TokenStream { /// } /// ``` /// -/// ```rust,ignore +/// ```rust +/// # use std::{sync::Mutex, process::Command}; +/// # use core::pin::Pin; +/// # pub struct Info; +/// # mod bindings { +/// # pub unsafe fn destroy_info(_ptr: *mut super::Info) {} +/// # } +/// use kernel::macros::{pin_data, pinned_drop}; +/// /// #[pin_data(PinnedDrop)] /// struct DriverData { /// #[pin] @@ -222,6 +249,8 @@ pub fn concat_idents(ts: TokenStream) -> TokenStream { /// unsafe { bindings::destroy_info(self.raw_info) }; /// } /// } +/// +/// # fn main() {} /// ``` /// /// [`pin_init!`]: ../kernel/macro.pin_init.html @@ -237,13 +266,20 @@ pub fn pin_data(inner: TokenStream, item: TokenStream= ) -> TokenStream { /// /// # Examples /// -/// ```rust,ignore +/// ```rust +/// # use macros::{pin_data, pinned_drop}; +/// # use std::{sync::Mutex, process::Command}; +/// # use core::pin::Pin; +/// # mod bindings { +/// # pub struct Info; +/// # pub unsafe fn destroy_info(_ptr: *mut Info) {} +/// # } /// #[pin_data(PinnedDrop)] /// struct DriverData { /// #[pin] /// queue: Mutex>, /// buf: Box<[u8; 1024 * 1024]>, -/// raw_info: *mut Info, +/// raw_info: *mut bindings::Info, /// } /// /// #[pinned_drop] @@ -408,7 +444,9 @@ pub fn paste(input: TokenStream) -> TokenStream { /// /// # Examples /// -/// ```rust,ignore +/// ```rust +/// use kernel::macros::Zeroable; +/// /// #[derive(Zeroable)] /// pub struct DriverData { /// id: i64, --=20 2.44.2