From nobody Sat Feb 7 10:20:32 2026 Received: from mail-io1-f50.google.com (mail-io1-f50.google.com [209.85.166.50]) (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 1672D13D53D; Mon, 1 Jul 2024 11:27:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719833262; cv=none; b=GMZhtGMqJOGp4RbeKayNfFwQRJGikSZ5RfxXIFSot46f6MmcwNzKMZDg6r509KicwzRU2DVTFzgIOqaA5EK2LiOtXw6/6hKMKqyBkTHuTh8JLypMN2zBkwacm4+ER2TQbXWVidwQAMfDlditq0TIRxSNa4W3B8VIyu9xekCXLMw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719833262; c=relaxed/simple; bh=LT1u95/fiPf6qBJThFV+qOYRYj5VyAeLQh9sOwz40tI=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=riruZLvBVI7G/6tG2od4u1CGjGvmPL1h0whbhhzyLPJaQ9I7ZLlGwrS5nD8ST6WCZZJ9XENRifNq4c0iNOzf9SQZyeyhzr4/SOQVzSNfPpab47fnUhtvv+TLNIRfxr8B7mJ8uVD48mfOxeP2s9bpjgYIbjiH/OIe7qS9m2YTtNk= 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=FKfqPF7f; arc=none smtp.client-ip=209.85.166.50 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="FKfqPF7f" Received: by mail-io1-f50.google.com with SMTP id ca18e2360f4ac-7f61549406eso109405439f.1; Mon, 01 Jul 2024 04:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719833260; x=1720438060; 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=OxB0HCmHdrPChIVkH+RJRLuJmgHYPb3NqnatSG36g50=; b=FKfqPF7f81kKt7bVt547+1Wzc8USvGDAvClsIA92Z35zx4POzI+iRhw26noN9w8asr 2+LFjV5ybeesk8+OxV5zFxrkONWBg+JW8Z8UiGaHEkcypYIer7ATPRSmRJKGiivCM/9w 1IqXaTOIv5IrUzXvFiGb6dLnhounMK9KU8tGrqoMJGDrrARDeZxi3GPzJNRoTGN6uu0R 38EIj3sULvosNXCkcHprKl8tgCZBM6ukq7tupvX+h3yt3SmfwaDE9zxW9RAmI2SgqVTz LlUS9Jy5hBKSg0NZpZliF1NgQRn/cbfvoPU2BfcpwbfdTOejU14gWGrJeGfcEWMGUbC9 dGFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719833260; x=1720438060; 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=OxB0HCmHdrPChIVkH+RJRLuJmgHYPb3NqnatSG36g50=; b=kR9XlYo0F2wWmCmvAZFMBpVZhjQoKmF5D263BWKgoPavgW9DUsiEM72TQl21+yge0w B5fyYNjJM9H8JPHIxybWVERDst0UZkmQqbE2O1B3hzWHWRC9/LmmkvBZZjEGGeF8KOl3 EnzhHdtgE4kbV+wKyBKNvtPRO4+gRfGD7zAcBCCxkgHxK9VdjU6XEfsh5uZ44c/r1HA2 8d2Vn6W5njJyY3/4pfkbuD9wsMHAaHCCIf4HGMko1F+XUyB8y2CRi+hIls+BG7M5pVXY b1AhM6kM3MY1b/swf3wrJEQAo8lTwkl0e6hHxs2IdcAIjxH8FTv2ru6HYw51v6ZzJMD4 XRog== X-Forwarded-Encrypted: i=1; AJvYcCXKYFESI8J9H4QI+ztity+7jW32Liq8nwBYVq5pNqvasIdtToPQlsjhduDbHMLayN3LSHZ2SwNpX1hmHS9LFH+2iDiHyUuKIwZIOferDXJrGvPKwyYVRQ+Q0rOfX17X96tWGBsVTwkVa3cV1r4= X-Gm-Message-State: AOJu0YyZE1t9LtRJvjpu9aNU8QyGjMiTKcVEB5KYdA5Ovs4lUcasMNOe eb39W/WQ5ePPfyKy2cBXj7P7+kyi01yihieLntwT9QLtw7nmATBc X-Google-Smtp-Source: AGHT+IENE80DsqSoWfhvfS7EdqsxdmAyKL5cAx1Z9TfyvmmK3kbFMkQnkBJgXBt1aB31WVOPqgz/Ag== X-Received: by 2002:a6b:5a0e:0:b0:7f6:210c:61b0 with SMTP id ca18e2360f4ac-7f62ee853a4mr584018439f.20.1719833260094; Mon, 01 Jul 2024 04:27:40 -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-4bb73e062e3sm2087317173.75.2024.07.01.04.27.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jul 2024 04:27:39 -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 v2 1/4] kbuild: rust: Expand rusttest target for macros Date: Mon, 1 Jul 2024 06:24:23 -0500 Message-ID: <20240701112448.28638-2-ethan.twardy@gmail.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20240701112448.28638-1-ethan.twardy@gmail.com> References: <20240701112448.28638-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..df389df4db9c 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -147,6 +147,15 @@ 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-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 +254,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 Sat Feb 7 10:20:32 2026 Received: from mail-io1-f46.google.com (mail-io1-f46.google.com [209.85.166.46]) (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 38AFA13D53D; Mon, 1 Jul 2024 11:27:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719833269; cv=none; b=XvNroPI30Pmhs7u14aeaNBoUbj6b5HkmUKZEqWMv4xPTmfZebq8POdFBWFBrpLzygP2blMnS23XJvYO60zPsOyEuKhbP/d68VO1Y2PbuepGhYBNBx1tvfOx7ZGE6tIJ+DvYBAxpYVp4sM5J6nGvi5eafJVInQtBOXMZth0IwgHo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719833269; c=relaxed/simple; bh=Asb3OsmaU4xur7jTKhpefAUeM3PR7wjkzqbeEqFt1vk=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JNOxdtRMaO+bNDe7LPPJlT/V6SoFIE4TK6Ipi47s7WRANu14jmUc/uM/oRZupOWPjCWyhA/Oe0fcWhWs6bho4UIg4OevMvcc8BlYBOlUjNDtXno0/u2w2vsxjtP70DDf1vm0P173Nwu+aCeh8dsq5s4mjmjnAkL/Xr8ewv+IHT8= 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=fwLScmdo; arc=none smtp.client-ip=209.85.166.46 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="fwLScmdo" Received: by mail-io1-f46.google.com with SMTP id ca18e2360f4ac-7f6309e9f29so74457339f.0; Mon, 01 Jul 2024 04:27:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719833267; x=1720438067; 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=YS4FeN8/6jzuogXItnqNR+Y++d8T9MSODY7gDNOWrGo=; b=fwLScmdo60n7BlURhu1Gcjf4eB/cszJE1pAMlwtQhbTnivIl2vB6m4G2Y77rX3PEiv FK4E9s89ksWLg+EuAHD7UmCwiBkdXxgVuKCwjNo24UO2MNx32hcaRVQ3JQDY+oKcuD+x tu2YXnKQ31/ALzltyQjKC13J+VGh1VTKPqPXe2T7S9rz68RgzbRfLp/26xSui3cfv55u ASJiJ+d7ATWEc9nCZQYUq9HjWHmo6b0RDba+XBVVsnyyY1uWpbN/15bSufPO5RbWrCF7 G0cV4iGN8Lpex2sWSYK/7Sm9Pil+V8iVTFzPSXbD7uN7nBbB6GywlXer1MThhtojFQ+m eVFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719833267; x=1720438067; 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=YS4FeN8/6jzuogXItnqNR+Y++d8T9MSODY7gDNOWrGo=; b=aKaSU5crf8/MFxZDZfqcbloZFi2FiAJZSxVl353es3p6Xgi6BBdoD9i1I6MPQpAF5V 6V9zAy9weS/ZdDXQnOprQk222Zop96jB+sWsWU1YZ6KzOHriHHsXsfcODc+rfzTmJgpG JC8JT14SXAS8HJGcIHA+tYR1eobChffIEt1la0Tm76iJEfVi7kqYzWFTMaMBXMQ+c1ag bockupgxUSV8jRFSgxrHWPP3kfiBOg77VkFWh8dhzfPIFB70HadNa6mKRgSuR90nM3oT tHakI/LLjZkN7lpbFNkcUFHWE7oVHvTaQH/jeQKMM5DQKybp5YxwC7W3hp7XldRXPW5I GxXw== X-Forwarded-Encrypted: i=1; AJvYcCV//tCW0lkFCpNtnZ8wngIVcnZbP6yPiv+K7LkCvMGUSqA3ySNrbyhxuymPyHl7RiARgJZrmE6K5UzsIlP9+CnOqmTxBnIvJvgqrOb5wpFBM1/HS9swm20kCyeKvmVlXD8C0ldcofuoFFg9r3E= X-Gm-Message-State: AOJu0Yw3r9h9fwOOkSDefXFkGpHwyux0NLLAAuNUL95JV7+x13UjnC/4 07N0jR/D568+dB7AiYri5Tcwm9uj0Os0vGHi7cIx0zZo/YModilR X-Google-Smtp-Source: AGHT+IFvMSPdkH3YP8tnEr6DjA9x9FnhaZFl8FpJiy3WJLuU1UvfgVNh/zVHTlAiG/bj5DYZAa2A+w== X-Received: by 2002:a6b:d00a:0:b0:7f6:1bb4:1557 with SMTP id ca18e2360f4ac-7f62ee1b6cdmr588323939f.12.1719833267213; Mon, 01 Jul 2024 04:27:47 -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-4bb73e062e3sm2087317173.75.2024.07.01.04.27.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jul 2024 04:27:46 -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 v2 2/4] rust: Enable test for macros::module Date: Mon, 1 Jul 2024 06:24:24 -0500 Message-ID: <20240701112448.28638-3-ethan.twardy@gmail.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20240701112448.28638-1-ethan.twardy@gmail.com> References: <20240701112448.28638-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. Enable the test, and update it to remove the use of a kernel parameter mechanism that was never merged. Signed-off-by: Ethan D. Twardy Reviewed-by: Alice Ryhl diff --git a/rust/Makefile b/rust/Makefile index df389df4db9c..3ace8506ee8d 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -256,6 +256,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..1c4ae5789cfa 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,14 @@ /// 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 Sat Feb 7 10:20:32 2026 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 0BCB713D61A; Mon, 1 Jul 2024 11:27:54 +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=1719833276; cv=none; b=Kb8+qt0dCwWZcOirhyhZz4843/3Ns5YRzPBhGWM2zZDIpecRqTC4DLQW75Yui3FjB8bNgYLbmR9F6IkWfveutUZS472Gfr1yeNbvbwhENTA6FNhZJBThWpc8fXNGrSCGl3wZQ9wr0Syyn+u2gR1cLhX/R9EgJePyKG8OY/sQLME= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719833276; c=relaxed/simple; bh=AgRx+RE90Nsd+3SC1MJNAZFTOkBW1aGkM1cwxyvfbW0=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uQFx7eITrKzLUQfd5yVA/EXA+Q7VvgXpqOrnJkwKRTOqilh8CtiYkVRvJ8bT3CMiAPvTlQ7NTBXCMlLcCS6nOPHtk0qCWNMBvAm2xUO71qPdw+bhFgcUBDSHr9OK8S815c/9nSkwOKVybYDeZ/IpjiJbmenV1qS6m64HSLgt7Lo= 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=PFg5eoK2; 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="PFg5eoK2" Received: by mail-io1-f53.google.com with SMTP id ca18e2360f4ac-7f3cc78afb6so94666839f.0; Mon, 01 Jul 2024 04:27:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719833274; x=1720438074; 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=H1IOl0BzF8HgBSBcBwDW60PY7M8R5w3VEjOB+eb5FzM=; b=PFg5eoK2zLdgq+uxpXnhmMI7XAnUE1nUZ13N183NY1GxEazP93euuQZSyTtcnB8kxD 9c5B6YXMHa3/4v6O1QUsA1rXIC2rcHrehQFfA6JCLAUYKNTE2fWndEuj5wUxxfKwOVrS 1Kc8NkZkXmrvMWw6KllXGYORnvxm8KP5MvBsKoUZYleQe9RZW1E5zSQrKbr4+NEQICmv k7yteh72IaaQm5MIKlwRIbPwnewL/u6FFZWpr0AgKXFjaei1x2V00LPXxXNBXulHUERr 36YQ6cEn7xjsOfs6sVF4coQaTwTh+M2bBw3s7DETmbxTtPlyQoaIqYrKRt8IJdmUP8T7 mt5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719833274; x=1720438074; 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=H1IOl0BzF8HgBSBcBwDW60PY7M8R5w3VEjOB+eb5FzM=; b=Go3vzgCwtjIl9ukczJG3XkZfYtlmgoEBtYBz+WACjXH0uoQyhc9lbypj6fabYBUk0v atOFioSOBX4sCoyZ9149m98B5cmKO7nEoq8ppGrmXxUfTgGio8xz1EAkSGopGIz1zK6J MpnBXwtcyxaG8vBYfD82IKDhIXpxkhcYLBS23fT619o0GiZdP4RoOWhXqh7UqaEVi+DL nRsNtHm+I2EluiJQUrDr0V4H2l88zFmt4AjUGDXW9j8KaLACAIQG1CvhMSYgxx4+gGPX xK/fXOJw00gH+QMVjyWxRyO9LmaGj11MGH0JJ25EelPm0dEJdJdB8iaGhSXtlLEd61j1 fnPA== X-Forwarded-Encrypted: i=1; AJvYcCWlQHPns8xIr41bmp+Ol8z3YhJMzVFOY5MR22qWWtGcmwu3fWoer9X4+OmrTRQ+7T5R8Kun3aVU6lpvL8PljIZzV1mleHmmEiB6AO36GZ+PvMliHf3Xq9qBBJ5IxjIn3vQDiCLYC9Ag7gC7CAM= X-Gm-Message-State: AOJu0YwzbqiMMVlyHKgeMkW+r4X9F1u8v3IgJXfqSOHGQnX+OlsZeRlb oObgfjhym4/z53muVNQ7rdcS88a2reHYmRBQAaVRhDrI2aglBgbb X-Google-Smtp-Source: AGHT+IHdLTIo/Y8vjFuaC1k+wWkzYhKvYsPFjnuNAsi8LLYlEZfwCXcl2azyTDJtjWoBjmvb4YRe4A== X-Received: by 2002:a6b:740a:0:b0:7eb:6d0a:613e with SMTP id ca18e2360f4ac-7f62ee54728mr480560139f.7.1719833274043; Mon, 01 Jul 2024 04:27:54 -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-4bb73e062e3sm2087317173.75.2024.07.01.04.27.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jul 2024 04:27:53 -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 v2 3/4] rust: macros: Enable use from macro_rules! Date: Mon, 1 Jul 2024 06:24:25 -0500 Message-ID: <20240701112448.28638-4-ethan.twardy@gmail.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20240701112448.28638-1-ethan.twardy@gmail.com> References: <20240701112448.28638-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. Link: https://doc.rust-lang.org/stable/proc_macro/enum.Delimiter.html [1] Signed-off-by: Ethan D. Twardy Reviewed-by: Alice Ryhl diff --git a/rust/macros/lib.rs b/rust/macros/lib.rs index 1c4ae5789cfa..3278f7c8aa5e 100644 --- a/rust/macros/lib.rs +++ b/rust/macros/lib.rs @@ -268,12 +268,25 @@ 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>];= )+ /// } /// }; @@ -312,13 +325,28 @@ 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>] +/// })+ /// } /// }; /// } @@ -349,7 +377,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 Sat Feb 7 10:20:32 2026 Received: from mail-io1-f42.google.com (mail-io1-f42.google.com [209.85.166.42]) (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 1543413D61A; Mon, 1 Jul 2024 11:28:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719833295; cv=none; b=atIu/2+q68cfdM46owEqQRtYRqgErxxRUiWU0ckoD9W0WS9uiU8fypZmjslat3XxWAHa/RFu+/VtI5GBJas1WXSk/UwaOFdS8hw8ik2btBnq/Nip3nTHrhOJpCL0T4FNP1dP7WP42O9Qxp/vRULPZGKef++AZ6+TW+0EnDIOT2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719833295; c=relaxed/simple; bh=zOwHp5zjE28cBlQd2S9n+jQz8YtgedZ6fB7JfsiWBiY=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lpoqSPucIs4PftGRsUtiLyz+H8ZsE9tWLpPkExnfBaA5746+XGGzjDwc8xjQIAx+8ZOmfSdJ7OiLAS3G51488YOCqXOhWrwwUgKBseuf3oG5P54nQCt1Mkopr3aeuyRg7uqBGJ43r7kzrmE6kF+r1LramhGAVHSQsBUo6uXlAqg= 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=J7WTeNYi; arc=none smtp.client-ip=209.85.166.42 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="J7WTeNYi" Received: by mail-io1-f42.google.com with SMTP id ca18e2360f4ac-7f63db7a69cso49498339f.2; Mon, 01 Jul 2024 04:28:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719833293; x=1720438093; 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=CpoKjCPTwl55bMJqHWtfzuU++BcmcJ+0M6F9gW4qMA0=; b=J7WTeNYi7BQkmoESVyzbOXo/LUI1xpaOuRK0Jl6MsK84GUUQrofc5nxYRwwmtON7pG 7Q5VOdWvBCEVtv1APuNfs8ihCFNuy+eUCg/jIOPq47iEycVXAO/Kma5gCKaTs5PbJqsT CLep3UnZW3+iLCi/Ir2naX+caCm+fi7Lve7EYS7lC57iiKZ3tA0mr9RnsLOrHdRA5vef x1uvYbBvpiZruyZj+Lqv3rs9oL+1SunrVJFThkXL5xVs8wMEcd129gZ+HYg/raRIl1tm rWC10uHlR+dBS0hCxXayKL3H3arLl8vHtD2ly0fFxevSVspLEsw71D5JVIEPaxnNlTVX 9Yqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719833293; x=1720438093; 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=CpoKjCPTwl55bMJqHWtfzuU++BcmcJ+0M6F9gW4qMA0=; b=ju0MNHzwhMVqYDI5OaC2UthMJfT/6YD7eJhdxxbGgy/xf5qrDdHUWekSPrZpzcqUBL 50t7bO16KI+yzwGfmhUd11lGcep7FGtQwdu1IWxFI/H3n0QDC/Hb2G0KWCrqZmtUpUsD MbsU4JcmnhMnA5B5le6Y4waRVLRFN4TahoUwsXqMr5OwAf9btUV8nwWa/Hx3ZIL13KUR sPiL4H9dFpdCrDuAeTVzyuQPKURFhKA1kZca8f7M06LhFKPtNxWr4H82oRzm6w4GAWer 9i/mn+V6RAEnkBctOcBICpQDISvPWgmLHW8u0apmWEps/slB28bR06jZRE5l+t9EH64u Npfg== X-Forwarded-Encrypted: i=1; AJvYcCU0kj4i+oliH3I2eLGkZO4HeuBJmuyAfJdswrGaQDMmRie5pFkGIwx8aevLbDydF74Ow/mK1Q8PFQ8Qe7MNDBP2ZOwfuaH4TBNBWek20umqWT5xCJn0yNINyacHbKbhCJ6hivAsJdCFO13odSY= X-Gm-Message-State: AOJu0YzLpw77Ov9U541AoebXgYgd+9RMC/DJNiPKAAQcNQPASrv0Nc0f CZ04xtZqnhLUCfz+xaSuZE9KEKmX7stAy4EeAgWY0eBDtAb86C8E X-Google-Smtp-Source: AGHT+IHWxiayB99qjYfYCg9nDiP4lise6uTqBz7aMgVxPan1j1uNQSAtg4t/Zz+c3rwNGlB7KBGUlw== X-Received: by 2002:a6b:5103:0:b0:7f3:9bde:f44 with SMTP id ca18e2360f4ac-7f62ee6eaf5mr615078439f.14.1719833293096; Mon, 01 Jul 2024 04:28:13 -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-4bb73e062e3sm2087317173.75.2024.07.01.04.28.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jul 2024 04:28:12 -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 v2 4/4] rust: macros: Enable the rest of the tests Date: Mon, 1 Jul 2024 06:24:26 -0500 Message-ID: <20240701112448.28638-5-ethan.twardy@gmail.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20240701112448.28638-1-ethan.twardy@gmail.com> References: <20240701112448.28638-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 3278f7c8aa5e..fcd123b2c093 100644 Reviewed-by: Alice Ryhl --- a/rust/macros/lib.rs +++ b/rust/macros/lib.rs @@ -101,7 +101,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::*; /// @@ -146,12 +148,27 @@ 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);)+ /// }; /// } /// @@ -197,7 +214,9 @@ pub fn concat_idents(ts: TokenStream) -> TokenStream { /// /// # Examples /// -/// ```rust,ignore +/// ```rust +/// # use std::{sync::Mutex, process::Command}; +/// # use kernel::macros::pin_data; /// #[pin_data] /// struct DriverData { /// #[pin] @@ -206,7 +225,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] @@ -221,6 +248,8 @@ pub fn concat_idents(ts: TokenStream) -> TokenStream { /// unsafe { bindings::destroy_info(self.raw_info) }; /// } /// } +/// +/// # fn main() {} /// ``` /// /// [`pin_init!`]: ../kernel/macro.pin_init.html @@ -236,13 +265,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] @@ -405,7 +441,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