diff mbox series

[rt-tests,v5,02/13] signaltest: Move thread data to struct thread_param

Message ID 20210210175118.19709-3-dwagner@suse.de
State New
Headers show
Series Generate machine-readable output | expand

Commit Message

Daniel Wagner Feb. 10, 2021, 5:51 p.m. UTC
Group thread realated data such as thread ID to struct thread_param.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 src/signaltest/signaltest.c | 44 ++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

Comments

John Kacur Feb. 17, 2021, 3:52 a.m. UTC | #1
On Wed, 10 Feb 2021, Daniel Wagner wrote:

> Group thread realated data such as thread ID to struct thread_param.

> 

> Signed-off-by: Daniel Wagner <dwagner@suse.de>

> ---

>  src/signaltest/signaltest.c | 44 ++++++++++++++++++-------------------

>  1 file changed, 22 insertions(+), 22 deletions(-)

> 

> diff --git a/src/signaltest/signaltest.c b/src/signaltest/signaltest.c

> index c34bc994d886..dd5633d5fc51 100644

> --- a/src/signaltest/signaltest.c

> +++ b/src/signaltest/signaltest.c

> @@ -40,6 +40,10 @@

>  

>  /* Struct to transfer parameters to the thread */

>  struct thread_param {

> +	pthread_t thread;

> +	pthread_t tothread;

> +	int threadstarted;

> +	int tid;

>  	int id;

>  	int prio;

>  	int signal;

> @@ -47,6 +51,7 @@ struct thread_param {

>  	struct thread_stat *stats;

>  	int bufmsk;

>  	int cpu;

> +	int interrupted;

>  };

>  

>  /* Struct for statistics */

> @@ -58,11 +63,6 @@ struct thread_stat {

>  	long act;

>  	double avg;

>  	long *values;

> -	pthread_t thread;

> -	pthread_t tothread;

> -	int threadstarted;

> -	int tid;

> -	int interrupted;

>  };

>  

>  static int shutdown;

> @@ -86,7 +86,7 @@ void *signalthread(void *param)

>  	pthread_t thread;

>  	cpu_set_t mask;

>  

> -	stat->tid = gettid();

> +	par->tid = gettid();

>  

>  	if (par->cpu != -1) {

>  		CPU_ZERO(&mask);

> @@ -105,7 +105,7 @@ void *signalthread(void *param)

>  	schedp.sched_priority = par->prio;

>  	sched_setscheduler(0, policy, &schedp);

>  

> -	stat->threadstarted++;

> +	par->threadstarted++;

>  

>  	clock_gettime(CLOCK_MONOTONIC, &before);

>  

> @@ -128,7 +128,7 @@ void *signalthread(void *param)

>  

>  		/* Get current time */

>  		clock_gettime(CLOCK_MONOTONIC, &now);

> -		pthread_kill(stat->tothread, SIGUSR1);

> +		pthread_kill(par->tothread, SIGUSR1);

>  

>  		/* Skip the first cycle */

>  		if (first) {

> @@ -148,7 +148,7 @@ void *signalthread(void *param)

>  

>  		if (!stopped && tracelimit && !par->id  && (diff > tracelimit)) {

>  			stat->act = diff;

> -			stat->interrupted = 1;

> +			par->interrupted = 1;

>  			stopped++;

>  			shutdown++;

>  		}

> @@ -167,7 +167,7 @@ void *signalthread(void *param)

>  	schedp.sched_priority = 0;

>  	sched_setscheduler(0, SCHED_OTHER, &schedp);

>  

> -	stat->threadstarted = -1;

> +	par->threadstarted = -1;

>  

>  	return NULL;

>  }

> @@ -298,7 +298,7 @@ static void print_stat(struct thread_param *par, int index, int verbose)

>  		if (quiet != 1) {

>  			printf("T:%2d (%5d) P:%2d C:%7lu "

>  			       "Min:%7ld Act:%5ld Avg:%5ld Max:%8ld\n",

> -			       index, stat->tid, par->prio,

> +			       index, par->tid, par->prio,

>  			       stat->cycles, stat->min, stat->act,

>  			       stat->cycles ?

>  			       (long)(stat->avg/stat->cycles) : 0, stat->max);

> @@ -389,8 +389,8 @@ int main(int argc, char **argv)

>  		stat[i].min = 1000000;

>  		stat[i].max = -1000000;

>  		stat[i].avg = 0.0;

> -		stat[i].threadstarted = 1;

> -		status = pthread_create(&stat[i].thread, NULL, signalthread,

> +		par[i].threadstarted = 1;

> +		status = pthread_create(&par[i].thread, NULL, signalthread,

>  					&par[i]);

>  		if (status)

>  			fatal("failed to create thread %d: %s\n", i,

> @@ -401,18 +401,18 @@ int main(int argc, char **argv)

>  		int allstarted = 1;

>  

>  		for (i = 0; i < num_threads; i++) {

> -			if (stat[i].threadstarted != 2)

> +			if (par[i].threadstarted != 2)

>  				allstarted = 0;

>  		}

>  		if (!allstarted)

>  			continue;

>  

>  		for (i = 0; i < num_threads - 1; i++)

> -			stat[i].tothread = stat[i+1].thread;

> -		stat[i].tothread = stat[0].thread;

> +			par[i].tothread = par[i+1].thread;

> +		par[i].tothread = par[0].thread;

>  		break;

>  	}

> -	pthread_kill(stat[0].thread, signum);

> +	pthread_kill(par[0].thread, signum);

>  

>  	while (!shutdown) {

>  		char lavg[256];

> @@ -443,12 +443,12 @@ int main(int argc, char **argv)

>  	if (quiet)

>  		quiet = 2;

>  	for (i = 0; i < num_threads; i++) {

> -		if (stat[i].threadstarted > 0)

> -			pthread_kill(stat[i].thread, SIGUSR1);

> -		if (stat[i].interrupted)

> +		if (par[i].threadstarted > 0)

> +			pthread_kill(par[i].thread, SIGUSR1);

> +		if (par[i].interrupted)

>  			printf("Thread %d exceeded trace limit.\n", i);

> -		if (stat[i].threadstarted) {

> -			pthread_join(stat[i].thread, NULL);

> +		if (par[i].threadstarted) {

> +			pthread_join(par[i].thread, NULL);

>  			print_stat(&par[i], i, 0);

>  		}

>  		if (stat[i].values)

> -- 

> 2.30.0

> 

> 

No for the same reasons I gave for cyclictest.
Unncessary churn, and it makes backporting fixes harder too.

John
diff mbox series

Patch

diff --git a/src/signaltest/signaltest.c b/src/signaltest/signaltest.c
index c34bc994d886..dd5633d5fc51 100644
--- a/src/signaltest/signaltest.c
+++ b/src/signaltest/signaltest.c
@@ -40,6 +40,10 @@ 
 
 /* Struct to transfer parameters to the thread */
 struct thread_param {
+	pthread_t thread;
+	pthread_t tothread;
+	int threadstarted;
+	int tid;
 	int id;
 	int prio;
 	int signal;
@@ -47,6 +51,7 @@  struct thread_param {
 	struct thread_stat *stats;
 	int bufmsk;
 	int cpu;
+	int interrupted;
 };
 
 /* Struct for statistics */
@@ -58,11 +63,6 @@  struct thread_stat {
 	long act;
 	double avg;
 	long *values;
-	pthread_t thread;
-	pthread_t tothread;
-	int threadstarted;
-	int tid;
-	int interrupted;
 };
 
 static int shutdown;
@@ -86,7 +86,7 @@  void *signalthread(void *param)
 	pthread_t thread;
 	cpu_set_t mask;
 
-	stat->tid = gettid();
+	par->tid = gettid();
 
 	if (par->cpu != -1) {
 		CPU_ZERO(&mask);
@@ -105,7 +105,7 @@  void *signalthread(void *param)
 	schedp.sched_priority = par->prio;
 	sched_setscheduler(0, policy, &schedp);
 
-	stat->threadstarted++;
+	par->threadstarted++;
 
 	clock_gettime(CLOCK_MONOTONIC, &before);
 
@@ -128,7 +128,7 @@  void *signalthread(void *param)
 
 		/* Get current time */
 		clock_gettime(CLOCK_MONOTONIC, &now);
-		pthread_kill(stat->tothread, SIGUSR1);
+		pthread_kill(par->tothread, SIGUSR1);
 
 		/* Skip the first cycle */
 		if (first) {
@@ -148,7 +148,7 @@  void *signalthread(void *param)
 
 		if (!stopped && tracelimit && !par->id  && (diff > tracelimit)) {
 			stat->act = diff;
-			stat->interrupted = 1;
+			par->interrupted = 1;
 			stopped++;
 			shutdown++;
 		}
@@ -167,7 +167,7 @@  void *signalthread(void *param)
 	schedp.sched_priority = 0;
 	sched_setscheduler(0, SCHED_OTHER, &schedp);
 
-	stat->threadstarted = -1;
+	par->threadstarted = -1;
 
 	return NULL;
 }
@@ -298,7 +298,7 @@  static void print_stat(struct thread_param *par, int index, int verbose)
 		if (quiet != 1) {
 			printf("T:%2d (%5d) P:%2d C:%7lu "
 			       "Min:%7ld Act:%5ld Avg:%5ld Max:%8ld\n",
-			       index, stat->tid, par->prio,
+			       index, par->tid, par->prio,
 			       stat->cycles, stat->min, stat->act,
 			       stat->cycles ?
 			       (long)(stat->avg/stat->cycles) : 0, stat->max);
@@ -389,8 +389,8 @@  int main(int argc, char **argv)
 		stat[i].min = 1000000;
 		stat[i].max = -1000000;
 		stat[i].avg = 0.0;
-		stat[i].threadstarted = 1;
-		status = pthread_create(&stat[i].thread, NULL, signalthread,
+		par[i].threadstarted = 1;
+		status = pthread_create(&par[i].thread, NULL, signalthread,
 					&par[i]);
 		if (status)
 			fatal("failed to create thread %d: %s\n", i,
@@ -401,18 +401,18 @@  int main(int argc, char **argv)
 		int allstarted = 1;
 
 		for (i = 0; i < num_threads; i++) {
-			if (stat[i].threadstarted != 2)
+			if (par[i].threadstarted != 2)
 				allstarted = 0;
 		}
 		if (!allstarted)
 			continue;
 
 		for (i = 0; i < num_threads - 1; i++)
-			stat[i].tothread = stat[i+1].thread;
-		stat[i].tothread = stat[0].thread;
+			par[i].tothread = par[i+1].thread;
+		par[i].tothread = par[0].thread;
 		break;
 	}
-	pthread_kill(stat[0].thread, signum);
+	pthread_kill(par[0].thread, signum);
 
 	while (!shutdown) {
 		char lavg[256];
@@ -443,12 +443,12 @@  int main(int argc, char **argv)
 	if (quiet)
 		quiet = 2;
 	for (i = 0; i < num_threads; i++) {
-		if (stat[i].threadstarted > 0)
-			pthread_kill(stat[i].thread, SIGUSR1);
-		if (stat[i].interrupted)
+		if (par[i].threadstarted > 0)
+			pthread_kill(par[i].thread, SIGUSR1);
+		if (par[i].interrupted)
 			printf("Thread %d exceeded trace limit.\n", i);
-		if (stat[i].threadstarted) {
-			pthread_join(stat[i].thread, NULL);
+		if (par[i].threadstarted) {
+			pthread_join(par[i].thread, NULL);
 			print_stat(&par[i], i, 0);
 		}
 		if (stat[i].values)