This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v2 3/3] Add test for thread names


On 11/25/2015 09:48 PM, Simon Marchi wrote:

> +int
> +main (int argc, char **argv)
> +{
> +  pthread_t threads[NUM_THREADS];
> +  struct thread_data args[NUM_THREADS];
> +  pthread_barrier_t barrier;
> +  int i;
> +  const char *names[] = { "carrot", "potato", "celery" };

Add an alarm call so the process doesn't run forever if something
goes wrong and it gets detached / reparented to init.

> +
> +  /* Make sure that NAMES contains NUM_THREADS elements.  */
> +  assert (sizeof (names) == sizeof(names[0]) * NUM_THREADS);
> +
> +  assert (0 == pthread_barrier_init (&barrier, NULL, NUM_THREADS + 1));

There should be no side-effects in assert calls:

     res = pthread_barrier_init (&barrier, NULL, NUM_THREADS + 1));
     assert (res == 0);

> +
> +  pthread_setname_np (pthread_self (), "main");
> +
> +  for (i = 0; i < NUM_THREADS; i++)
> +    {
> +      struct thread_data *arg = &args[i];
> +
> +      arg->name = names[i];
> +      arg->barrier = &barrier;
> +
> +      assert (0 == pthread_create (&threads[i], NULL, thread_func, arg));

Ditto.

> +    }
> +
> +  pthread_barrier_wait (&barrier);
> +
> +  all_threads_ready ();
> +
> +  return 0;
> +}

OK with above fixed.

> +set expected_thread_list "\\* 1   .*\"main\" all_threads_ready.*\n"
> +append expected_thread_list "  2   .*\"carrot\".*\n"
> +append expected_thread_list "  3   .*\"potato\".*\n"
> +append expected_thread_list "  4   .*\"celery\".*"
> +
> +gdb_test "info threads" "$expected_thread_list" "list threads"

Note you can do this with multi_line.  E.g.:

gdb_test "info threads" \
    [multi_line \
         "\\* 1   .*\"main\" all_threads_ready.*" \
         "  2   .*\"carrot\".*" \
	 "  3   .*\"potato\".*" \
	 "  4   .*\"celery\".*"] \
    "list threads"

Thanks,
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]