* [LTP] [PATCH] cfs-scheduler: Fixed "make check" errors and warnings. @ 2026-04-07 6:23 “Samir 2026-04-07 9:54 ` Petr Vorel 0 siblings, 1 reply; 3+ messages in thread From: “Samir @ 2026-04-07 6:23 UTC (permalink / raw) To: ltp; +Cc: “Samir Fixed all make check errors and warnings in cfs_bandwidth01.c and hackbench.c to comply with LTP coding style. cfs_bandwidth01.c: - Remove initialization of static variable to 0 hackbench.c: - Add SPDX-License-Identifier header - Remove FSF mailing address paragraph - Remove filename from file header - Remove initialization of static variables to 0 - Convert zero-length array to C99 flexible array - Modify barf() function to accept variadic arguments - Use __func__ instead of hardcoded function names - Separate assignments from if conditions - Fix pointer declaration spacing - Add blank line after declarations - Fix spacing in macro and struct initialization - Remove unnecessary braces for single statement Both files now pass make check validation with 0 errors and 0 warnings. Signed-off-by: Samir <samir@linux.ibm.com> --- .../sched/cfs-scheduler/cfs_bandwidth01.c | 2 +- .../kernel/sched/cfs-scheduler/hackbench.c | 121 +++++++++--------- 2 files changed, 58 insertions(+), 65 deletions(-) diff --git a/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c b/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c index e52858f8e..8c511f060 100644 --- a/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c +++ b/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c @@ -35,7 +35,7 @@ static struct tst_cg_group *cg_level2, *cg_level3a, *cg_level3b; static struct tst_cg_group *cg_workers[3]; -static int may_have_waiters = 0; +static int may_have_waiters; static void set_cpu_quota(const struct tst_cg_group *const cg, const float quota_percent) diff --git a/testcases/kernel/sched/cfs-scheduler/hackbench.c b/testcases/kernel/sched/cfs-scheduler/hackbench.c index 6f37060aa..6a30e1cc8 100644 --- a/testcases/kernel/sched/cfs-scheduler/hackbench.c +++ b/testcases/kernel/sched/cfs-scheduler/hackbench.c @@ -1,51 +1,33 @@ -/******************************************************************************/ -/* Copyright Rusty Russell, */ -/* Copyright Pierre Peiffer */ -/* Copyright Zhang, Yanmin, */ -/* Copyright Ingo Molnar, */ -/* Copyright Arjan van de Ven, */ -/* Copyright (c) International Business Machines Corp., 2008 */ -/* */ -/* This program is free software; you can redistribute it and/or modify */ -/* it under the terms of the GNU General Public License as published by */ -/* the Free Software Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will be useful, */ -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ -/* the GNU General Public License for more details. */ -/* */ -/* You should have received a copy of the GNU General Public License */ -/* along with this program; if not, write to the Free Software */ -/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -/* */ -/******************************************************************************/ - -/******************************************************************************/ -/* */ -/* File: hackbench.c */ -/* */ -/* Description: hackbench tests the Linux scheduler. Test groups of 20 */ -/* processes spraying to 20 receivers */ -/* */ -/* Total Tests: 1 */ -/* */ -/* Test Name: hackbench01 and hackbench02 */ -/* */ -/* Test Assertion: */ -/* */ -/* Author(s): Rusty Russell <rusty@rustcorp.com.au>, */ -/* Pierre Peiffer <pierre.peiffer@bull.net>, */ -/* Ingo Molnar <mingo@elte.hu>, */ -/* Arjan van de Ven <arjan@infradead.org>, */ -/* "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>, */ -/* Nathan Lynch <ntl@pobox.com> */ -/* */ -/* History: Included into LTP */ -/* - June 26 2008 - Subrata Modak<subrata@linux.vnet.ibm.com>*/ -/* */ -/******************************************************************************/ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright Rusty Russell, + * Copyright Pierre Peiffer + * Copyright Zhang, Yanmin, + * Copyright Ingo Molnar, + * Copyright Arjan van de Ven, + * Copyright (c) International Business Machines Corp., 2008 + */ + +/* + * Description: hackbench tests the Linux scheduler. Test groups of 20 + * processes spraying to 20 receivers + * + * Total Tests: 1 + * + * Test Name: hackbench01 and hackbench02 + * + * Test Assertion: + * + * Author(s): Rusty Russell <rusty@rustcorp.com.au>, + * Pierre Peiffer <pierre.peiffer@bull.net>, + * Ingo Molnar <mingo@elte.hu>, + * Arjan van de Ven <arjan@infradead.org>, + * "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>, + * Nathan Lynch <ntl@pobox.com> + * + * History: Included into LTP + * - June 26 2008 - Subrata Modak<subrata@linux.vnet.ibm.com> + */ #include <pthread.h> #include <stdio.h> #include <stdlib.h> @@ -58,25 +40,26 @@ #include <sys/time.h> #include <sys/poll.h> #include <limits.h> +#include <stdarg.h> -#define SAFE_FREE(p) { if (p) { free(p); (p)=NULL; } } +#define SAFE_FREE(p) { if (p) { free(p); (p) = NULL; } } #define DATASIZE 100 static struct sender_context **snd_ctx_tab; /*Table for sender context pointers. */ static struct receiver_context **rev_ctx_tab; /*Table for receiver context pointers. */ -static int gr_num = 0; /*For group calculation */ +static int gr_num; /*For group calculation */ static unsigned int loops = 100; /* * 0 means thread mode and others mean process (default) */ static unsigned int process_mode = 1; -static int use_pipes = 0; +static int use_pipes; struct sender_context { unsigned int num_fds; int ready_out; int wakefd; - int out_fds[0]; + int out_fds[]; }; struct receiver_context { @@ -86,9 +69,14 @@ struct receiver_context { int wakefd; }; -static void barf(const char *msg) +static void barf(const char *fmt, ...) { - fprintf(stderr, "%s (error: %s)\n", msg, strerror(errno)); + va_list args; + + va_start(args, fmt); + vfprintf(stderr, fmt, args); + va_end(args); + fprintf(stderr, " (error: %s)\n", strerror(errno)); exit(1); } @@ -108,18 +96,18 @@ static void fdpair(int fds[2]) if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) == 0) return; } - barf("Creating fdpair"); + barf("Creating %s", __func__); } /* Block until we're ready to go */ static void ready(int ready_out, int wakefd) { char dummy; - struct pollfd pollfd = {.fd = wakefd,.events = POLLIN }; + struct pollfd pollfd = {.fd = wakefd, .events = POLLIN }; /* Tell them we're ready. */ if (write(ready_out, &dummy, 1) != 1) - barf("CLIENT: ready write"); + barf("CLIENT: %s write", __func__); /* Wait for "GO" signal */ if (poll(&pollfd, 1, -1) != 1) @@ -210,7 +198,8 @@ pthread_t create_worker(void *ctx, void *(*func) (void *)) barf("pthread_attr_setstacksize"); #endif - if ((err = pthread_create(&childid, &attr, func, ctx)) != 0) { + err = pthread_create(&childid, &attr, func, ctx); + if (err != 0) { fprintf(stderr, "pthread_create failed: %s (%d)\n", strerror(err), err); exit(-1); @@ -235,11 +224,12 @@ void reap_worker(pthread_t id) } /* One group of senders and receivers */ -static unsigned int group(pthread_t * pth, +static unsigned int group(pthread_t *pth, unsigned int num_fds, int ready_out, int wakefd) { unsigned int i; struct sender_context *snd_ctx = malloc(sizeof(struct sender_context) + num_fds * sizeof(int)); + if (!snd_ctx) barf("malloc()"); else @@ -305,8 +295,11 @@ int main(int argc, char *argv[]) argv++; } - if (argc >= 2 && (num_groups = atoi(argv[1])) == 0) - print_usage_exit(); + if (argc >= 2) { + num_groups = atoi(argv[1]); + if (num_groups == 0) + print_usage_exit(); + } printf("Running with %d*40 (== %d) tasks.\n", num_groups, num_groups * 40); @@ -329,7 +322,7 @@ int main(int argc, char *argv[]) snd_ctx_tab = malloc(num_groups * sizeof(void *)); rev_ctx_tab = malloc(num_groups * num_fds * sizeof(void *)); if (!pth_tab || !snd_ctx_tab || !rev_ctx_tab) - barf("main:malloc()"); + barf("%s:malloc()", __func__); fdpair(readyfds); fdpair(wakefds); @@ -363,9 +356,8 @@ int main(int argc, char *argv[]) /* free the memory */ for (i = 0; i < num_groups; i++) { - for (j = 0; j < num_fds; j++) { + for (j = 0; j < num_fds; j++) SAFE_FREE(rev_ctx_tab[i * num_fds + j]) - } SAFE_FREE(snd_ctx_tab[i]); } SAFE_FREE(pth_tab); @@ -373,3 +365,4 @@ int main(int argc, char *argv[]) SAFE_FREE(rev_ctx_tab); exit(0); } + -- 2.52.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [LTP] [PATCH] cfs-scheduler: Fixed "make check" errors and warnings. 2026-04-07 6:23 [LTP] [PATCH] cfs-scheduler: Fixed "make check" errors and warnings “Samir @ 2026-04-07 9:54 ` Petr Vorel 2026-04-12 12:35 ` Samir M 0 siblings, 1 reply; 3+ messages in thread From: Petr Vorel @ 2026-04-07 9:54 UTC (permalink / raw) To: “Samir; +Cc: ltp Hi Samir, > Fixed all make check errors and warnings in cfs_bandwidth01.c and > hackbench.c to comply with LTP coding style. I guess you get that info with make check (which is using checkpatch.pl and other code). > cfs_bandwidth01.c: > - Remove initialization of static variable to 0 > hackbench.c: FYI hackbench.c would deserve to rewrite into new C API. With that many of your fixes would be not needed because the old code would be deleted. > - Add SPDX-License-Identifier header > - Remove FSF mailing address paragraph > - Remove filename from file header > - Remove initialization of static variables to 0 > - Convert zero-length array to C99 flexible array > - Modify barf() function to accept variadic arguments > - Use __func__ instead of hardcoded function names > - Separate assignments from if conditions > - Fix pointer declaration spacing > - Add blank line after declarations > - Fix spacing in macro and struct initialization > - Remove unnecessary braces for single statement > Both files now pass make check validation with 0 errors and 0 warnings. > Signed-off-by: Samir <samir@linux.ibm.com> > --- > .../sched/cfs-scheduler/cfs_bandwidth01.c | 2 +- > .../kernel/sched/cfs-scheduler/hackbench.c | 121 +++++++++--------- > 2 files changed, 58 insertions(+), 65 deletions(-) > diff --git a/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c b/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c > index e52858f8e..8c511f060 100644 > --- a/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c > +++ b/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c > @@ -35,7 +35,7 @@ > static struct tst_cg_group *cg_level2, *cg_level3a, *cg_level3b; > static struct tst_cg_group *cg_workers[3]; > -static int may_have_waiters = 0; > +static int may_have_waiters; +1 > static void set_cpu_quota(const struct tst_cg_group *const cg, > const float quota_percent) > diff --git a/testcases/kernel/sched/cfs-scheduler/hackbench.c b/testcases/kernel/sched/cfs-scheduler/hackbench.c > index 6f37060aa..6a30e1cc8 100644 > --- a/testcases/kernel/sched/cfs-scheduler/hackbench.c > +++ b/testcases/kernel/sched/cfs-scheduler/hackbench.c > @@ -1,51 +1,33 @@ > -/******************************************************************************/ > -/* Copyright Rusty Russell, */ > -/* Copyright Pierre Peiffer */ > -/* Copyright Zhang, Yanmin, */ > -/* Copyright Ingo Molnar, */ > -/* Copyright Arjan van de Ven, */ > -/* Copyright (c) International Business Machines Corp., 2008 */ > -/* */ > -/* This program is free software; you can redistribute it and/or modify */ > -/* it under the terms of the GNU General Public License as published by */ > -/* the Free Software Foundation; either version 2 of the License, or */ > -/* (at your option) any later version. */ > -/* */ > -/* This program is distributed in the hope that it will be useful, */ > -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ > -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ > -/* the GNU General Public License for more details. */ > -/* */ > -/* You should have received a copy of the GNU General Public License */ > -/* along with this program; if not, write to the Free Software */ > -/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ > -/* */ > -/******************************************************************************/ > - > -/******************************************************************************/ > -/* */ > -/* File: hackbench.c */ > -/* */ > -/* Description: hackbench tests the Linux scheduler. Test groups of 20 */ > -/* processes spraying to 20 receivers */ > -/* */ > -/* Total Tests: 1 */ > -/* */ > -/* Test Name: hackbench01 and hackbench02 */ > -/* */ > -/* Test Assertion: */ > -/* */ > -/* Author(s): Rusty Russell <rusty@rustcorp.com.au>, */ > -/* Pierre Peiffer <pierre.peiffer@bull.net>, */ > -/* Ingo Molnar <mingo@elte.hu>, */ > -/* Arjan van de Ven <arjan@infradead.org>, */ > -/* "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>, */ > -/* Nathan Lynch <ntl@pobox.com> */ > -/* */ > -/* History: Included into LTP */ > -/* - June 26 2008 - Subrata Modak<subrata@linux.vnet.ibm.com>*/ > -/* */ > -/******************************************************************************/ > +// SPDX-License-Identifier: GPL-2.0-or-later FYI we add SPDX only to files which has been converted into new LTP API. I'm ok to change it, but it would require to add additional cleanup. > +/* > + * Copyright Rusty Russell, > + * Copyright Pierre Peiffer > + * Copyright Zhang, Yanmin, > + * Copyright Ingo Molnar, > + * Copyright Arjan van de Ven, I know it's not your addition, but I wonder if a copyright without year even makes sense. > + * Copyright (c) International Business Machines Corp., 2008 > + */ > + > +/* > + * Description: hackbench tests the Linux scheduler. Test groups of 20 > + * processes spraying to 20 receivers Missing dot at the end. > + * > + * Total Tests: 1 Useless, please remove. > + * > + * Test Name: hackbench01 and hackbench02 Useless, please remove (it can change anyway). > + * > + * Test Assertion: Useless, please remove. > + * > + * Author(s): Rusty Russell <rusty@rustcorp.com.au>, > + * Pierre Peiffer <pierre.peiffer@bull.net>, > + * Ingo Molnar <mingo@elte.hu>, > + * Arjan van de Ven <arjan@infradead.org>, > + * "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>, > + * Nathan Lynch <ntl@pobox.com> Hm, how about to add their mails in copyright section and remove this? > + * > + * History: Included into LTP > + * - June 26 2008 - Subrata Modak<subrata@linux.vnet.ibm.com> I would remove this (we have git history anyway) and move him to copyright section. > + */ > #include <pthread.h> > #include <stdio.h> > #include <stdlib.h> > @@ -58,25 +40,26 @@ > #include <sys/time.h> > #include <sys/poll.h> > #include <limits.h> > +#include <stdarg.h> > -#define SAFE_FREE(p) { if (p) { free(p); (p)=NULL; } } > +#define SAFE_FREE(p) { if (p) { free(p); (p) = NULL; } } > #define DATASIZE 100 > static struct sender_context **snd_ctx_tab; /*Table for sender context pointers. */ > static struct receiver_context **rev_ctx_tab; /*Table for receiver context pointers. */ > -static int gr_num = 0; /*For group calculation */ > +static int gr_num; /*For group calculation */ > static unsigned int loops = 100; > /* > * 0 means thread mode and others mean process (default) > */ > static unsigned int process_mode = 1; > -static int use_pipes = 0; > +static int use_pipes; +1 > struct sender_context { > unsigned int num_fds; > int ready_out; > int wakefd; > - int out_fds[0]; > + int out_fds[]; > }; > struct receiver_context { > @@ -86,9 +69,14 @@ struct receiver_context { > int wakefd; > }; > -static void barf(const char *msg) > +static void barf(const char *fmt, ...) > { > - fprintf(stderr, "%s (error: %s)\n", msg, strerror(errno)); > + va_list args; > + > + va_start(args, fmt); > + vfprintf(stderr, fmt, args); > + va_end(args); > + fprintf(stderr, " (error: %s)\n", strerror(errno)); > exit(1); FYI in new C API we have tst_brk() and tst_res(). > } > @@ -108,18 +96,18 @@ static void fdpair(int fds[2]) > if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) == 0) > return; > } > - barf("Creating fdpair"); > + barf("Creating %s", __func__); Adding va_*() just to post the name of the function looks useless for me. Please drop this change. > } > /* Block until we're ready to go */ > static void ready(int ready_out, int wakefd) > { > char dummy; > - struct pollfd pollfd = {.fd = wakefd,.events = POLLIN }; > + struct pollfd pollfd = {.fd = wakefd, .events = POLLIN }; > /* Tell them we're ready. */ > if (write(ready_out, &dummy, 1) != 1) > - barf("CLIENT: ready write"); > + barf("CLIENT: %s write", __func__); > /* Wait for "GO" signal */ > if (poll(&pollfd, 1, -1) != 1) > @@ -210,7 +198,8 @@ pthread_t create_worker(void *ctx, void *(*func) (void *)) > barf("pthread_attr_setstacksize"); > #endif > - if ((err = pthread_create(&childid, &attr, func, ctx)) != 0) { > + err = pthread_create(&childid, &attr, func, ctx); > + if (err != 0) { > fprintf(stderr, "pthread_create failed: %s (%d)\n", > strerror(err), err); > exit(-1); > @@ -235,11 +224,12 @@ void reap_worker(pthread_t id) > } > /* One group of senders and receivers */ > -static unsigned int group(pthread_t * pth, > +static unsigned int group(pthread_t *pth, > unsigned int num_fds, int ready_out, int wakefd) > { > unsigned int i; > struct sender_context *snd_ctx = malloc(sizeof(struct sender_context) + num_fds * sizeof(int)); > + > if (!snd_ctx) > barf("malloc()"); > else > @@ -305,8 +295,11 @@ int main(int argc, char *argv[]) > argv++; > } > - if (argc >= 2 && (num_groups = atoi(argv[1])) == 0) > - print_usage_exit(); > + if (argc >= 2) { > + num_groups = atoi(argv[1]); > + if (num_groups == 0) > + print_usage_exit(); > + } +1, assigning variables is really better out of if / while, although here it's safe, because num_groups is initialized to 10. Kind regards, Petr > printf("Running with %d*40 (== %d) tasks.\n", > num_groups, num_groups * 40); > @@ -329,7 +322,7 @@ int main(int argc, char *argv[]) > snd_ctx_tab = malloc(num_groups * sizeof(void *)); > rev_ctx_tab = malloc(num_groups * num_fds * sizeof(void *)); > if (!pth_tab || !snd_ctx_tab || !rev_ctx_tab) > - barf("main:malloc()"); > + barf("%s:malloc()", __func__); > fdpair(readyfds); > fdpair(wakefds); > @@ -363,9 +356,8 @@ int main(int argc, char *argv[]) > /* free the memory */ > for (i = 0; i < num_groups; i++) { > - for (j = 0; j < num_fds; j++) { > + for (j = 0; j < num_fds; j++) > SAFE_FREE(rev_ctx_tab[i * num_fds + j]) > - } +1 > SAFE_FREE(snd_ctx_tab[i]); > } > SAFE_FREE(pth_tab); > @@ -373,3 +365,4 @@ int main(int argc, char *argv[]) > SAFE_FREE(rev_ctx_tab); > exit(0); > } > + -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [LTP] [PATCH] cfs-scheduler: Fixed "make check" errors and warnings. 2026-04-07 9:54 ` Petr Vorel @ 2026-04-12 12:35 ` Samir M 0 siblings, 0 replies; 3+ messages in thread From: Samir M @ 2026-04-12 12:35 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp On 07/04/26 3:24 pm, Petr Vorel wrote: > Hi Samir, > >> Fixed all make check errors and warnings in cfs_bandwidth01.c and >> hackbench.c to comply with LTP coding style. > I guess you get that info with make check (which is using checkpatch.pl and > other code). > >> cfs_bandwidth01.c: >> - Remove initialization of static variable to 0 >> hackbench.c: > FYI hackbench.c would deserve to rewrite into new C API. With that many of your > fixes would be not needed because the old code would be deleted. > >> - Add SPDX-License-Identifier header >> - Remove FSF mailing address paragraph >> - Remove filename from file header >> - Remove initialization of static variables to 0 >> - Convert zero-length array to C99 flexible array >> - Modify barf() function to accept variadic arguments >> - Use __func__ instead of hardcoded function names >> - Separate assignments from if conditions >> - Fix pointer declaration spacing >> - Add blank line after declarations >> - Fix spacing in macro and struct initialization >> - Remove unnecessary braces for single statement >> Both files now pass make check validation with 0 errors and 0 warnings. >> Signed-off-by: Samir <samir@linux.ibm.com> >> --- >> .../sched/cfs-scheduler/cfs_bandwidth01.c | 2 +- >> .../kernel/sched/cfs-scheduler/hackbench.c | 121 +++++++++--------- >> 2 files changed, 58 insertions(+), 65 deletions(-) >> diff --git a/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c b/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c >> index e52858f8e..8c511f060 100644 >> --- a/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c >> +++ b/testcases/kernel/sched/cfs-scheduler/cfs_bandwidth01.c >> @@ -35,7 +35,7 @@ >> static struct tst_cg_group *cg_level2, *cg_level3a, *cg_level3b; >> static struct tst_cg_group *cg_workers[3]; >> -static int may_have_waiters = 0; >> +static int may_have_waiters; > +1 > >> static void set_cpu_quota(const struct tst_cg_group *const cg, >> const float quota_percent) >> diff --git a/testcases/kernel/sched/cfs-scheduler/hackbench.c b/testcases/kernel/sched/cfs-scheduler/hackbench.c >> index 6f37060aa..6a30e1cc8 100644 >> --- a/testcases/kernel/sched/cfs-scheduler/hackbench.c >> +++ b/testcases/kernel/sched/cfs-scheduler/hackbench.c >> @@ -1,51 +1,33 @@ >> -/******************************************************************************/ >> -/* Copyright Rusty Russell, */ >> -/* Copyright Pierre Peiffer */ >> -/* Copyright Zhang, Yanmin, */ >> -/* Copyright Ingo Molnar, */ >> -/* Copyright Arjan van de Ven, */ >> -/* Copyright (c) International Business Machines Corp., 2008 */ >> -/* */ >> -/* This program is free software; you can redistribute it and/or modify */ >> -/* it under the terms of the GNU General Public License as published by */ >> -/* the Free Software Foundation; either version 2 of the License, or */ >> -/* (at your option) any later version. */ >> -/* */ >> -/* This program is distributed in the hope that it will be useful, */ >> -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ >> -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ >> -/* the GNU General Public License for more details. */ >> -/* */ >> -/* You should have received a copy of the GNU General Public License */ >> -/* along with this program; if not, write to the Free Software */ >> -/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ >> -/* */ >> -/******************************************************************************/ >> - >> -/******************************************************************************/ >> -/* */ >> -/* File: hackbench.c */ >> -/* */ >> -/* Description: hackbench tests the Linux scheduler. Test groups of 20 */ >> -/* processes spraying to 20 receivers */ >> -/* */ >> -/* Total Tests: 1 */ >> -/* */ >> -/* Test Name: hackbench01 and hackbench02 */ >> -/* */ >> -/* Test Assertion: */ >> -/* */ >> -/* Author(s): Rusty Russell <rusty@rustcorp.com.au>, */ >> -/* Pierre Peiffer <pierre.peiffer@bull.net>, */ >> -/* Ingo Molnar <mingo@elte.hu>, */ >> -/* Arjan van de Ven <arjan@infradead.org>, */ >> -/* "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>, */ >> -/* Nathan Lynch <ntl@pobox.com> */ >> -/* */ >> -/* History: Included into LTP */ >> -/* - June 26 2008 - Subrata Modak<subrata@linux.vnet.ibm.com>*/ >> -/* */ >> -/******************************************************************************/ >> +// SPDX-License-Identifier: GPL-2.0-or-later > FYI we add SPDX only to files which has been converted into new LTP API. I'm ok > to change it, but it would require to add additional cleanup. > >> +/* >> + * Copyright Rusty Russell, >> + * Copyright Pierre Peiffer >> + * Copyright Zhang, Yanmin, >> + * Copyright Ingo Molnar, >> + * Copyright Arjan van de Ven, > I know it's not your addition, but I wonder if a copyright without year even > makes sense. > >> + * Copyright (c) International Business Machines Corp., 2008 >> + */ >> + >> +/* >> + * Description: hackbench tests the Linux scheduler. Test groups of 20 >> + * processes spraying to 20 receivers > Missing dot at the end. > >> + * >> + * Total Tests: 1 > Useless, please remove. >> + * >> + * Test Name: hackbench01 and hackbench02 > Useless, please remove (it can change anyway). >> + * >> + * Test Assertion: > Useless, please remove. >> + * >> + * Author(s): Rusty Russell <rusty@rustcorp.com.au>, >> + * Pierre Peiffer <pierre.peiffer@bull.net>, >> + * Ingo Molnar <mingo@elte.hu>, >> + * Arjan van de Ven <arjan@infradead.org>, >> + * "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>, >> + * Nathan Lynch <ntl@pobox.com> > Hm, how about to add their mails in copyright section and remove this? > >> + * >> + * History: Included into LTP >> + * - June 26 2008 - Subrata Modak<subrata@linux.vnet.ibm.com> > I would remove this (we have git history anyway) and move him to copyright > section. > >> + */ >> #include <pthread.h> >> #include <stdio.h> >> #include <stdlib.h> >> @@ -58,25 +40,26 @@ >> #include <sys/time.h> >> #include <sys/poll.h> >> #include <limits.h> >> +#include <stdarg.h> >> -#define SAFE_FREE(p) { if (p) { free(p); (p)=NULL; } } >> +#define SAFE_FREE(p) { if (p) { free(p); (p) = NULL; } } >> #define DATASIZE 100 >> static struct sender_context **snd_ctx_tab; /*Table for sender context pointers. */ >> static struct receiver_context **rev_ctx_tab; /*Table for receiver context pointers. */ >> -static int gr_num = 0; /*For group calculation */ >> +static int gr_num; /*For group calculation */ >> static unsigned int loops = 100; >> /* >> * 0 means thread mode and others mean process (default) >> */ >> static unsigned int process_mode = 1; >> -static int use_pipes = 0; >> +static int use_pipes; > +1 > >> struct sender_context { >> unsigned int num_fds; >> int ready_out; >> int wakefd; >> - int out_fds[0]; >> + int out_fds[]; >> }; >> struct receiver_context { >> @@ -86,9 +69,14 @@ struct receiver_context { >> int wakefd; >> }; >> -static void barf(const char *msg) >> +static void barf(const char *fmt, ...) >> { >> - fprintf(stderr, "%s (error: %s)\n", msg, strerror(errno)); >> + va_list args; >> + >> + va_start(args, fmt); >> + vfprintf(stderr, fmt, args); >> + va_end(args); >> + fprintf(stderr, " (error: %s)\n", strerror(errno)); >> exit(1); > FYI in new C API we have tst_brk() and tst_res(). >> } >> @@ -108,18 +96,18 @@ static void fdpair(int fds[2]) >> if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) == 0) >> return; >> } >> - barf("Creating fdpair"); >> + barf("Creating %s", __func__); > Adding va_*() just to post the name of the function looks useless for me. > Please drop this change. > >> } >> /* Block until we're ready to go */ >> static void ready(int ready_out, int wakefd) >> { >> char dummy; >> - struct pollfd pollfd = {.fd = wakefd,.events = POLLIN }; >> + struct pollfd pollfd = {.fd = wakefd, .events = POLLIN }; >> /* Tell them we're ready. */ >> if (write(ready_out, &dummy, 1) != 1) >> - barf("CLIENT: ready write"); >> + barf("CLIENT: %s write", __func__); >> /* Wait for "GO" signal */ >> if (poll(&pollfd, 1, -1) != 1) >> @@ -210,7 +198,8 @@ pthread_t create_worker(void *ctx, void *(*func) (void *)) >> barf("pthread_attr_setstacksize"); >> #endif >> - if ((err = pthread_create(&childid, &attr, func, ctx)) != 0) { >> + err = pthread_create(&childid, &attr, func, ctx); >> + if (err != 0) { >> fprintf(stderr, "pthread_create failed: %s (%d)\n", >> strerror(err), err); >> exit(-1); >> @@ -235,11 +224,12 @@ void reap_worker(pthread_t id) >> } >> /* One group of senders and receivers */ >> -static unsigned int group(pthread_t * pth, >> +static unsigned int group(pthread_t *pth, >> unsigned int num_fds, int ready_out, int wakefd) >> { >> unsigned int i; >> struct sender_context *snd_ctx = malloc(sizeof(struct sender_context) + num_fds * sizeof(int)); >> + >> if (!snd_ctx) >> barf("malloc()"); >> else >> @@ -305,8 +295,11 @@ int main(int argc, char *argv[]) >> argv++; >> } >> - if (argc >= 2 && (num_groups = atoi(argv[1])) == 0) >> - print_usage_exit(); >> + if (argc >= 2) { >> + num_groups = atoi(argv[1]); >> + if (num_groups == 0) >> + print_usage_exit(); >> + } > +1, assigning variables is really better out of if / while, > although here it's safe, because num_groups is initialized to 10. > > Kind regards, > Petr > >> printf("Running with %d*40 (== %d) tasks.\n", >> num_groups, num_groups * 40); >> @@ -329,7 +322,7 @@ int main(int argc, char *argv[]) >> snd_ctx_tab = malloc(num_groups * sizeof(void *)); >> rev_ctx_tab = malloc(num_groups * num_fds * sizeof(void *)); >> if (!pth_tab || !snd_ctx_tab || !rev_ctx_tab) >> - barf("main:malloc()"); >> + barf("%s:malloc()", __func__); >> fdpair(readyfds); >> fdpair(wakefds); >> @@ -363,9 +356,8 @@ int main(int argc, char *argv[]) >> /* free the memory */ >> for (i = 0; i < num_groups; i++) { >> - for (j = 0; j < num_fds; j++) { >> + for (j = 0; j < num_fds; j++) >> SAFE_FREE(rev_ctx_tab[i * num_fds + j]) >> - } > +1 >> SAFE_FREE(snd_ctx_tab[i]); >> } >> SAFE_FREE(pth_tab); >> @@ -373,3 +365,4 @@ int main(int argc, char *argv[]) >> SAFE_FREE(rev_ctx_tab); >> exit(0); >> } >> + Hi Petr, I have incorporated the requested review comments and submitted the revised version (v2). Thank you for your valuable feedback. Patch v2: https://lore.kernel.org/ltp/20260412122842.1074017-1-samir@linux.ibm.com/T/#u Thanks, Samir -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-04-12 12:36 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-07 6:23 [LTP] [PATCH] cfs-scheduler: Fixed "make check" errors and warnings “Samir 2026-04-07 9:54 ` Petr Vorel 2026-04-12 12:35 ` Samir M
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.