From patchwork Thu Jan 9 13:23:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Vorel X-Patchwork-Id: 2031887 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=eaT9pC0b; dkim=fail reason="signature verification failed" header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=zx6ZXTYM; dkim=fail reason="signature verification failed" (1024-bit key) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=eaT9pC0b; dkim=neutral header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=zx6ZXTYM; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=patchwork.ozlabs.org) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4YTQTy63V1z1yP7 for ; Fri, 10 Jan 2025 00:23:50 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 69EC13C2232 for ; Thu, 9 Jan 2025 14:23:44 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [IPv6:2001:4b78:1:20::4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 716AD3C1D33 for ; Thu, 9 Jan 2025 14:23:41 +0100 (CET) Authentication-Results: in-4.smtp.seeweb.it; spf=pass (sender SPF authorized) smtp.mailfrom=suse.cz (client-ip=195.135.223.130; helo=smtp-out1.suse.de; envelope-from=pvorel@suse.cz; receiver=lists.linux.it) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 9623F101716C for ; Thu, 9 Jan 2025 14:23:40 +0100 (CET) Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id A49CC21114; Thu, 9 Jan 2025 13:23:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1736429019; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=HI6DvL/9EBhBV9vf0uJZ42t12i20KGEwAxiqv1R2Cg0=; b=eaT9pC0bp04jyZ/cyMs7O4z6bu8yemyRQpc2qC3+if+i/Kg5mMCLeXMfLFzeScAgiXLncR jqd1Por9RmMXVtVqX9tTDPdQtpvFB0NAU7nQ1lQV3oq0uvkBLePh6skJGN8f9l00hsEOPF 2ySnkZCjWbWffMFbNSCTNyS92ZznI7Q= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1736429019; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=HI6DvL/9EBhBV9vf0uJZ42t12i20KGEwAxiqv1R2Cg0=; b=zx6ZXTYM01jccoBQ3u52SSfMzm5SlyXrt8Cr0+H4wIDvkrbmDLvW+WD3RJ5XG+X4+N/6eq YxYm6ZwZu3x6DJCQ== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1736429019; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=HI6DvL/9EBhBV9vf0uJZ42t12i20KGEwAxiqv1R2Cg0=; b=eaT9pC0bp04jyZ/cyMs7O4z6bu8yemyRQpc2qC3+if+i/Kg5mMCLeXMfLFzeScAgiXLncR jqd1Por9RmMXVtVqX9tTDPdQtpvFB0NAU7nQ1lQV3oq0uvkBLePh6skJGN8f9l00hsEOPF 2ySnkZCjWbWffMFbNSCTNyS92ZznI7Q= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1736429019; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=HI6DvL/9EBhBV9vf0uJZ42t12i20KGEwAxiqv1R2Cg0=; b=zx6ZXTYM01jccoBQ3u52SSfMzm5SlyXrt8Cr0+H4wIDvkrbmDLvW+WD3RJ5XG+X4+N/6eq YxYm6ZwZu3x6DJCQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 1DC5B13876; Thu, 9 Jan 2025 13:23:39 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id V+caBtvNf2d0SwAAD6G6ig (envelope-from ); Thu, 09 Jan 2025 13:23:39 +0000 From: Petr Vorel To: ltp@lists.linux.it Date: Thu, 9 Jan 2025 14:23:33 +0100 Message-ID: <20250109132334.212281-1-pvorel@suse.cz> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 X-Spam-Score: -2.80 X-Spamd-Result: default: False [-2.80 / 50.00]; BAYES_HAM(-3.00)[99.99%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.cz:mid,suse.cz:email,imap1.dmz-prg2.suse.org:helo]; RCVD_TLS_ALL(0.00)[] X-Spam-Level: X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=disabled version=4.0.0 X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on in-4.smtp.seeweb.it X-Virus-Scanned: clamav-milter 1.0.3 at in-4.smtp.seeweb.it X-Virus-Status: Clean Subject: [LTP] [PATCH 1/2] [RFC] macros: Remove TEST_VOID() X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" TEST_VOID() macro was meant for syscalls whose return type is void, e.g. sync(). It was used only sync03.c, which was later merged to sync01.c and later removed. Now it's unused, therefore remove it. Signed-off-by: Petr Vorel Reviewed-by: Andrea Cervesato Reviewed-by: Li Wang --- include/old/usctest.h | 14 -------------- include/tst_test_macros.h | 7 ------- 2 files changed, 21 deletions(-) diff --git a/include/old/usctest.h b/include/old/usctest.h index 2d46c40451..b984c343fd 100644 --- a/include/old/usctest.h +++ b/include/old/usctest.h @@ -60,20 +60,6 @@ extern int TEST_ERRNO; TEST_ERRNO = errno; \ } while (0) -/*********************************************************************** - * TEST_VOID: calls a system call - * - * parameters: - * SCALL = system call and parameters to execute - * - * Note: This is IDENTICAL to the TEST() macro except that it is intended - * for use with syscalls returning no values (void syscall()). The - * Typecasting nothing (void) into an unsigned integer causes compilation - * errors. - * - ***********************************************************************/ -#define TEST_VOID(SCALL) do { errno = 0; SCALL; TEST_ERRNO = errno; } while (0) - /*********************************************************************** * TEST_PAUSE: Pause for SIGUSR1 if the pause flag is set. * Just continue when signal comes in. diff --git a/include/tst_test_macros.h b/include/tst_test_macros.h index b2ca32f771..b2b446b70c 100644 --- a/include/tst_test_macros.h +++ b/include/tst_test_macros.h @@ -16,13 +16,6 @@ TST_ERR = errno; \ } while (0) -#define TEST_VOID(SCALL) \ - do { \ - errno = 0; \ - SCALL; \ - TST_ERR = errno; \ - } while (0) - extern long TST_RET; extern int TST_ERR; extern int TST_PASS; From patchwork Thu Jan 9 13:23:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Vorel X-Patchwork-Id: 2031888 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=AIMnmkns; dkim=fail reason="signature verification failed" header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=xlDkTMZu; dkim=fail reason="signature verification failed" (1024-bit key) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=AIMnmkns; dkim=neutral header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=xlDkTMZu; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=patchwork.ozlabs.org) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4YTQVC5Hwcz1yP7 for ; Fri, 10 Jan 2025 00:24:03 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 9F9823C215A for ; Thu, 9 Jan 2025 14:24:02 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 593473C223C for ; Thu, 9 Jan 2025 14:23:42 +0100 (CET) Authentication-Results: in-7.smtp.seeweb.it; spf=pass (sender SPF authorized) smtp.mailfrom=suse.cz (client-ip=2a07:de40:b251:101:10:150:64:1; helo=smtp-out1.suse.de; envelope-from=pvorel@suse.cz; receiver=lists.linux.it) Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2a07:de40:b251:101:10:150:64:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id C431621BDAA for ; Thu, 9 Jan 2025 14:23:41 +0100 (CET) Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 239FD21125; Thu, 9 Jan 2025 13:23:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1736429020; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tZ5gEittzzFvWpgm7e5muowAEWjRS2d8mTzFMYnrgl0=; b=AIMnmknsQBW1IC2PYAb39+4hliGvi8V2JC95N4msTYxpaifnhkbJQMzfBZtEpWbveo8NEp Ji1AGyoXd7N1RIzlgH/HlLgrJOZJPMBge9EXFGJ8rfLXkaP4qdpfn66x+QBXQg1idCW8DD 5A+lIp5b8m/ZlVF2FoxOkxv/mTMbLdw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1736429020; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tZ5gEittzzFvWpgm7e5muowAEWjRS2d8mTzFMYnrgl0=; b=xlDkTMZurKpclQ+x/uaIaJ1GUGeeSbbOgSv9BSRY2iL+lQDaQAwqifc0mmqnRbLNMMEvge HtlQ/ugrLwKiDYBA== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1736429020; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tZ5gEittzzFvWpgm7e5muowAEWjRS2d8mTzFMYnrgl0=; b=AIMnmknsQBW1IC2PYAb39+4hliGvi8V2JC95N4msTYxpaifnhkbJQMzfBZtEpWbveo8NEp Ji1AGyoXd7N1RIzlgH/HlLgrJOZJPMBge9EXFGJ8rfLXkaP4qdpfn66x+QBXQg1idCW8DD 5A+lIp5b8m/ZlVF2FoxOkxv/mTMbLdw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1736429020; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tZ5gEittzzFvWpgm7e5muowAEWjRS2d8mTzFMYnrgl0=; b=xlDkTMZurKpclQ+x/uaIaJ1GUGeeSbbOgSv9BSRY2iL+lQDaQAwqifc0mmqnRbLNMMEvge HtlQ/ugrLwKiDYBA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id B145513A8B; Thu, 9 Jan 2025 13:23:39 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id wNqNJ9vNf2d0SwAAD6G6ig (envelope-from ); Thu, 09 Jan 2025 13:23:39 +0000 From: Petr Vorel To: ltp@lists.linux.it Date: Thu, 9 Jan 2025 14:23:34 +0100 Message-ID: <20250109132334.212281-2-pvorel@suse.cz> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250109132334.212281-1-pvorel@suse.cz> References: <20250109132334.212281-1-pvorel@suse.cz> MIME-Version: 1.0 X-Spam-Level: X-Spamd-Result: default: False [-6.80 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[100.00%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.cz:email,suse.cz:mid,imap1.dmz-prg2.suse.org:helo]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: -6.80 X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=disabled version=4.0.0 X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on in-7.smtp.seeweb.it X-Virus-Scanned: clamav-milter 1.0.3 at in-7.smtp.seeweb.it X-Virus-Status: Clean Subject: [LTP] [PATCH 2/2] macros: Add basic docs X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Describe all "public" macros. Move variables to the top. Add header to the sphinx doc. Signed-off-by: Petr Vorel Reviewed-by: Andrea Cervesato Reviewed-by: Andrea Cervesato Reviewed-by: Li Wang Reviewed-by: Avinesh Kumar --- * I also wanted to document extern variables, but I haven't found a proper syntax. * TPASS/TFAIL cross reference is a bit verbose. I'd like to have some helper for it, but creating extension is overkill. extern long TST_RET; extern void *TST_RET_PTR; extern int TST_ERR; extern int TST_PASS; doc/developers/api_c_tests.rst | 1 + include/tst_test_macros.h | 257 ++++++++++++++++++++++++++++++++- 2 files changed, 251 insertions(+), 7 deletions(-) diff --git a/doc/developers/api_c_tests.rst b/doc/developers/api_c_tests.rst index 46f5d3360b..515d843c00 100644 --- a/doc/developers/api_c_tests.rst +++ b/doc/developers/api_c_tests.rst @@ -11,6 +11,7 @@ Core LTP API ------------ .. kernel-doc:: ../../include/tst_res_flags.h .. kernel-doc:: ../../include/tst_test.h +.. kernel-doc:: ../../include/tst_test_macros.h Capabilities ------------ diff --git a/include/tst_test_macros.h b/include/tst_test_macros.h index b2b446b70c..2e8d88b1b7 100644 --- a/include/tst_test_macros.h +++ b/include/tst_test_macros.h @@ -1,7 +1,11 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2015-2024 Cyril Hrubis - * Copyright (c) Linux Test Project, 2021-2022 + * Copyright (c) Linux Test Project, 2021-2024 + */ + +/** + * DOC: tst_test_macros.h -- helpers for testing syscalls */ #ifndef TST_TEST_MACROS_H__ @@ -9,6 +13,18 @@ #include +extern long TST_RET; +extern void *TST_RET_PTR; +extern int TST_ERR; +extern int TST_PASS; + +/** + * TEST() - Test syscall which return long (most of syscalls). + * + * @SCALL: Tested syscall. + * + * Sets TST_RET and TST_ERR. + */ #define TEST(SCALL) \ do { \ errno = 0; \ @@ -16,12 +32,13 @@ TST_ERR = errno; \ } while (0) -extern long TST_RET; -extern int TST_ERR; -extern int TST_PASS; - -extern void *TST_RET_PTR; - +/** + * TESTPTR() - Test syscall which returns void pointer. + * + * @SCALL: Tested syscall. + * + * Sets TST_RET_PTR and TST_ERR. + */ #define TESTPTR(SCALL) \ do { \ errno = 0; \ @@ -74,6 +91,12 @@ extern void *TST_RET_PTR; TST_RET; \ }) +/** + * TST_EXP_POSITIVE() - Test syscall, expect return value >= 0. + * + * @SCALL: Tested syscall. + * @...: A printf-like parameters. + */ #define TST_EXP_POSITIVE(SCALL, ...) \ ({ \ TST_EXP_POSITIVE__(SCALL, #SCALL, ##__VA_ARGS__); \ @@ -86,8 +109,22 @@ extern void *TST_RET_PTR; TST_RET; \ }) +/** + * TST_EXP_FD_SILENT() - Test syscall to return a file descriptor, silent variant. + * + * @SCALL: Tested syscall. + * @...: A printf-like parameters. + * + * Unlike TST_EXP_FD() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_FD_SILENT(SCALL, ...) TST_EXP_POSITIVE_(SCALL, #SCALL, ##__VA_ARGS__) +/** + * TST_EXP_FD() - Test syscall to return a file descriptor. + * + * @SCALL: Tested syscall. + * @...: A printf-like parameters. + */ #define TST_EXP_FD(SCALL, ...) \ ({ \ TST_EXP_POSITIVE__(SCALL, #SCALL, ##__VA_ARGS__); \ @@ -99,6 +136,18 @@ extern void *TST_RET_PTR; TST_RET; \ }) +/** + * TST_EXP_FD_OR_FAIL() - Test syscall to return file descriptor or fail with + * expected errno. + * + * @SCALL: Tested syscall. + * @ERRNO: Expected errno or 0. + * @...: A printf-like parameters. + * + * Expect a file descriptor if errno is 0 otherwise fail with expected errno. + * + * Internally it uses TST_EXP_FAIL() and TST_EXP_FD(). + */ #define TST_EXP_FD_OR_FAIL(SCALL, ERRNO, ...) \ ({ \ if (ERRNO) \ @@ -109,8 +158,22 @@ extern void *TST_RET_PTR; TST_RET; \ }) +/** + * TST_EXP_PID_SILENT() - Test syscall to return PID, silent variant. + * + * @SCALL: Tested syscall. + * @...: A printf-like parameters. + * + * Unlike TST_EXP_PID() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_PID_SILENT(SCALL, ...) TST_EXP_POSITIVE_(SCALL, #SCALL, ##__VA_ARGS__) +/** + * TST_EXP_PID() - Test syscall to return PID. + * + * @SCALL: Tested syscall. + * @...: A printf-like parameters. + */ #define TST_EXP_PID(SCALL, ...) \ ({ \ TST_EXP_POSITIVE__(SCALL, #SCALL, ##__VA_ARGS__); \ @@ -138,8 +201,24 @@ extern void *TST_RET_PTR; \ } while (0) +/** + * TST_EXP_VAL_SILENT() - Test syscall to return specified value, silent variant. + * + * @SCALL: Tested syscall. + * @VAL: Expected return value. + * @...: A printf-like parameters. + * + * Unlike TST_EXP_VAL() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_VAL_SILENT(SCALL, VAL, ...) TST_EXP_VAL_SILENT_(SCALL, VAL, #SCALL, ##__VA_ARGS__) +/** + * TST_EXP_VAL() - Test syscall to return specified value. + * + * @SCALL: Tested syscall. + * @VAL: Expected return value. + * @...: A printf-like parameters. + */ #define TST_EXP_VAL(SCALL, VAL, ...) \ do { \ TST_EXP_VAL_SILENT_(SCALL, VAL, #SCALL, ##__VA_ARGS__); \ @@ -171,8 +250,22 @@ extern void *TST_RET_PTR; \ } while (0) +/** + * TST_EXP_PASS_SILENT() - Test syscall to return 0, silent variant. + * + * @SCALL: Tested syscall. + * @...: A printf-like parameters. + * + * Unlike TST_EXP_PASS() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_PASS_SILENT(SCALL, ...) TST_EXP_PASS_SILENT_(SCALL, #SCALL, ##__VA_ARGS__) +/** + * TST_EXP_PASS() - Test syscall to return 0. + * + * @SCALL: Tested syscall. + * @...: A printf-like parameters. + */ #define TST_EXP_PASS(SCALL, ...) \ do { \ TST_EXP_PASS_SILENT_(SCALL, #SCALL, ##__VA_ARGS__); \ @@ -263,6 +356,15 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); TST_MSG_(TPASS | TTERRNO, " ", SSCALL, ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_FAIL() - Test syscall to fail with expected errno. + * + * @SCALL: Tested syscall. + * @EXP_ERR: Expected errno. + * @...: A printf-like parameters. + * + * For syscalls which valid return value is 0. + */ #define TST_EXP_FAIL(SCALL, EXP_ERR, ...) \ do { \ int tst_exp_err__ = EXP_ERR; \ @@ -270,6 +372,14 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_FAIL_ARR() - Test syscall to fail with expected errnos. + * + * @SCALL: Tested syscall. + * @EXP_ERRS: Array of expected errnos. + * @EXP_ERRS_CNT: Lenght of EXP_ERRS. + * @...: A printf-like parameters. + */ #define TST_EXP_FAIL_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) \ TST_EXP_FAIL_ARR_(SCALL, #SCALL, EXP_ERRS, \ EXP_ERRS_CNT, ##__VA_ARGS__); @@ -286,6 +396,15 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); TST_EXP_FAIL2_ARR_(SCALL, #SCALL, EXP_ERRS, \ EXP_ERRS_CNT, ##__VA_ARGS__); +/** + * TST_EXP_FAIL_PTR_NULL() - Test syscall to fail with expected errno and return a NULL pointer. + * + * @SCALL: Tested syscall. + * @EXP_ERR: Expected errno. + * @...: A printf-like parameters. + * + * Unlike most of macros it sets TST_RET_PTR instead of TST_RET. + */ #define TST_EXP_FAIL_PTR_NULL(SCALL, EXP_ERR, ...) \ do { \ int tst_exp_err__ = EXP_ERR; \ @@ -293,12 +412,31 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); &tst_exp_err__, 1, ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_FAIL_PTR_NULL_ARR() - Test syscall to fail with expected errnos and return a NULL pointer. + * + * @SCALL: Tested syscall. + * @EXP_ERRS: Array of expected errnos. + * @EXP_ERRS_CNT: Lenght of EXP_ERRS. + * @...: A printf-like parameters. + * + * Unlike most of macros it sets TST_RET_PTR instead of TST_RET. + */ #define TST_EXP_FAIL_PTR_NULL_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) \ do { \ TST_EXP_FAIL_PTR_(SCALL, #SCALL, NULL, \ EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_FAIL_PTR_VOID() - Test syscall to fail with expected errno and return a void pointer. + * + * @SCALL: Tested syscall. + * @EXP_ERR: Expected errno. + * @...: A printf-like parameters. + * + * Unlike most of macros it sets TST_RET_PTR instead of TST_RET. + */ #define TST_EXP_FAIL_PTR_VOID(SCALL, EXP_ERR, ...) \ do { \ int tst_exp_err__ = EXP_ERR; \ @@ -306,12 +444,31 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); &tst_exp_err__, 1, ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_FAIL_PTR_VOID_ARR() - Test syscall to fail with expected errnos and return a void pointer. + * + * @SCALL: Tested syscall. + * @EXP_ERRS: Array of expected errnos. + * @EXP_ERRS_CNT: Lenght of EXP_ERRS. + * @...: A printf-like parameters. + * + * Unlike most of macros it sets TST_RET_PTR instead of TST_RET. + */ #define TST_EXP_FAIL_PTR_VOID_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) \ do { \ TST_EXP_FAIL_PTR_(SCALL, #SCALL, (void *)-1, \ EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_FAIL2() - Test syscall to fail with expected errno. + * + * @SCALL: Tested syscall. + * @EXP_ERR: Expected errno. + * @...: A printf-like parameters. + * + * For syscalls which valid return value is >= 0. + */ #define TST_EXP_FAIL2(SCALL, EXP_ERR, ...) \ do { \ int tst_exp_err__ = EXP_ERR; \ @@ -319,6 +476,15 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_FAIL_SILENT() - Test syscall to fail with expected errno, silent variant. + * + * @SCALL: Tested syscall. + * @EXP_ERR: Expected errno. + * @...: A printf-like parameters. + * + * Unlike TST_EXP_FAIL() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_FAIL_SILENT(SCALL, EXP_ERR, ...) \ do { \ int tst_exp_err__ = EXP_ERR; \ @@ -326,6 +492,15 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); &tst_exp_err__, 1, ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_FAIL2_SILENT() - Test syscall to fail with expected errno, silent variant. + * + * @SCALL: Tested syscall. + * @EXP_ERR: Expected errno. + * @...: A printf-like parameters. + * + * Unlike TST_EXP_FAIL2() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_FAIL2_SILENT(SCALL, EXP_ERR, ...) \ do { \ int tst_exp_err__ = EXP_ERR; \ @@ -333,6 +508,12 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); &tst_exp_err__, 1, ##__VA_ARGS__); \ } while (0) +/** + * TST_EXP_EXPR() - Check for expected expression. + * + * @EXPR: Expression to be tested. + * @...: A printf-like parameters. + */ #define TST_EXP_EXPR(EXPR, ...) \ tst_res_(__FILE__, __LINE__, (EXPR) ? TPASS : TFAIL, "Expect: " \ TST_FMT_(TST_2_(dummy, ##__VA_ARGS__, #EXPR), __VA_ARGS__)); @@ -352,6 +533,12 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); } \ } while (0) +/** + * TST_EXP_EQ_LI() - Compare two long long values. + * + * @VAL_A: long long value A. + * @VAL_B: long long value B. + */ #define TST_EXP_EQ_LI(VAL_A, VAL_B) do { \ TST_EXP_EQ_SILENT_(VAL_A, #VAL_A, VAL_B, #VAL_B, long long, "%lli"); \ \ @@ -362,9 +549,23 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); } \ } while (0) +/** + * TST_EXP_EQ_LI_SILENT() - Compare two long long values, silent variant. + * + * @VAL_A: long long value A. + * @VAL_B: long long value B. + * + * Unlike TST_EXP_EQ_LI() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_EQ_LI_SILENT(VAL_A, VAL_B) \ TST_EXP_EQ_SILENT_(VAL_A, #VAL_A, VAL_B, #VAL_B, long long, "%lli") +/** + * TST_EXP_EQ_LU() - Compare two unsigned long long values. + * + * @VAL_A: unsigned long long value A. + * @VAL_B: unsigned long long value B. + */ #define TST_EXP_EQ_LU(VAL_A, VAL_B) do { \ TST_EXP_EQ_SILENT_(VAL_A, #VAL_A, VAL_B, #VAL_B, unsigned long long, "%llu"); \ \ @@ -375,9 +576,23 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); } \ } while (0) +/** + * TST_EXP_EQ_LU_SILENT() - Compare two unsigned long long values, silent variant. + * + * @VAL_A: unsigned long long value A. + * @VAL_B: unsigned long long value B. + * + * Unlike TST_EXP_EQ_LU() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_EQ_LU_SILENT(VAL_A, VAL_B) \ TST_EXP_EQ_SILENT_(VAL_A, #VAL_A, VAL_B, #VAL_B, unsigned long long, "%llu") +/** + * TST_EXP_EQ_SZ() - Compare two unsigned size_t values. + * + * @VAL_A: unsigned long long value A. + * @VAL_B: unsigned long long value B. + */ #define TST_EXP_EQ_SZ(VAL_A, VAL_B) do { \ TST_EXP_EQ_SILENT_(VAL_A, #VAL_A, VAL_B, #VAL_B, size_t, "%zu"); \ \ @@ -388,9 +603,23 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); } \ } while (0) +/** + * TST_EXP_EQ_SZ_SILENT() - Compare two unsigned size_t values, silent variant. + * + * @VAL_A: unsigned long long value A. + * @VAL_B: unsigned long long value B. + * + * Unlike TST_EXP_EQ_SZ() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_EQ_SZ_SILENT(VAL_A, VAL_B) \ TST_EXP_EQ_SILENT_(VAL_A, #VAL_A, VAL_B, #VAL_B, size_t, "%zu") +/** + * TST_EXP_EQ_SSZ() - Compare two unsigned ssize_t values. + * + * @VAL_A: unsigned long long value A. + * @VAL_B: unsigned long long value B. + */ #define TST_EXP_EQ_SSZ(VAL_A, VAL_B) do { \ TST_EXP_EQ_SILENT_(VAL_A, #VAL_A, VAL_B, #VAL_B, size_t, "%zi"); \ \ @@ -401,9 +630,23 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); } \ } while (0) +/** + * TST_EXP_EQ_SSZ_SILENT() - Compare two unsigned ssize_t values, silent variant. + * + * @VAL_A: unsigned long long value A. + * @VAL_B: unsigned long long value B. + * + * Unlike TST_EXP_EQ_SSZ() does not print :c:enum:`TPASS ` on success, only prints :c:enum:`TFAIL ` on failure. + */ #define TST_EXP_EQ_SSZ_SILENT(VAL_A, VAL_B) \ TST_EXP_EQ_SILENT_(VAL_A, #VAL_A, VAL_B, #VAL_B, ssize_t, "%zi") +/** + * TST_EXP_EQ_STR() - Compare two strings. + * + * @STR_A: string to compare. + * @STR_B: string to compare. + */ #define TST_EXP_EQ_STR(STR_A, STR_B) do { \ TST_PASS = strcmp(STR_A, STR_B) == 0; \ \