Re: [PATCH 07/53] selftests/mm: hugetlb-shm: use kselftest framework

Donet Tom
2026-04-09T09:50:06Z

Hi Mike

On 4/6/26 7:46 PM, Mike Rapoport wrote:
> From: "Mike Rapoport (Microsoft)" <rppt@kernel.org>
>
> Convert hugetlb-shm test to use kselftest framework for reporting and
> tracking successful and failing runs.
>
> Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> ---
> tools/testing/selftests/mm/hugetlb-shm.c | 46 ++++++++++++------------
> 1 file changed, 23 insertions(+), 23 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/hugetlb-shm.c b/tools/testing/selftests/mm/hugetlb-shm.c
> index de8f5d523084..10e4baa091f2 100644
> --- a/tools/testing/selftests/mm/hugetlb-shm.c
> +++ b/tools/testing/selftests/mm/hugetlb-shm.c
> @@ -28,9 +28,9 @@
> #include <sys/shm.h>
> #include <sys/mman.h>
>
> -#define LENGTH (256UL*1024*1024)
> +#include "vm_util.h"
>
> -#define dprintf(x) printf(x)
> +#define LENGTH (256UL*1024*1024)
>
> int main(void)
> {
> @@ -38,44 +38,44 @@ int main(void)
> unsigned long i;
> char *shmaddr;
>
> + ksft_print_header();
> + ksft_set_plan(1);
> +
> shmid = shmget(2, LENGTH, SHM_HUGETLB | IPC_CREAT | SHM_R | SHM_W);
> - if (shmid < 0) {
> - perror("shmget");
> - exit(1);
> - }
> - printf("shmid: 0x%x\n", shmid);
> + if (shmid < 0)
> + ksft_exit_fail_perror("shmget");
> +
> + ksft_print_msg("shmid: 0x%x\n", shmid);
>
> shmaddr = shmat(shmid, NULL, 0);
> if (shmaddr == (char *)-1) {
> - perror("Shared memory attach failure");
> + ksft_perror("Shared memory attach failure");
> shmctl(shmid, IPC_RMID, NULL);
> - exit(2);
> + ksft_exit_fail();
> }
> - printf("shmaddr: %p\n", shmaddr);
> + ksft_print_msg("shmaddr: %p\n", shmaddr);
>
> - dprintf("Starting the writes:\n");
> - for (i = 0; i < LENGTH; i++) {
> + ksft_print_msg("Starting the writes:\n");
> + for (i = 0; i < LENGTH; i++)
> shmaddr[i] = (char)(i);
> - if (!(i % (1024 * 1024)))
> - dprintf(".");
> - }
> - dprintf("\n");
>
> - dprintf("Starting the Check...");
> + ksft_print_msg("Starting the Check...");

Do we need to add a newline (\n) here? The output is currently printed as:
# Starting the Check...# Done.
If this is intentional, please ignore this comment. Otherwise, it looks
good to me.

./hugetlb-shm
TAP version 13
1..1
# shmid: 0x1
# shmaddr: 0x7ffface00000
# Starting the writes:
# Starting the Check...# Done.
ok 1 hugepage using SysV shmget/shmat
# Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0

Reviewed by: Donet Tom <donettom@linux.ibm.com>

-Donet

> for (i = 0; i < LENGTH; i++)
> if (shmaddr[i] != (char)i) {
> - printf("\nIndex %lu mismatched\n", i);
> - exit(3);
> + ksft_print_msg("Index %lu mismatched\n", i);
> + shmctl(shmid, IPC_RMID, NULL);
> + ksft_exit_fail_msg("Data mismatch at index %lu\n", i);
> }
> - dprintf("Done.\n");
> + ksft_print_msg("Done.\n");
>
> if (shmdt((const void *)shmaddr) != 0) {
> - perror("Detach failure");
> + ksft_perror("Detach failure");
> shmctl(shmid, IPC_RMID, NULL);
> - exit(4);
> + ksft_exit_fail();
> }
>
> shmctl(shmid, IPC_RMID, NULL);
>
> - return 0;
> + ksft_test_result_pass("hugepage using SysV shmget/shmat\n");
> + ksft_finished();
> }