On Fri, Jun 17, 2022 at 01:20:28AM +0200, Mohamed Atef wrote:
> libgomp/ChangeLog
> 
> 2022-06-17  Mohamed Atef  <mohamedatef1...@gmail.com>
> 
> * ompd-helper.h (DEREFERENCE, ACCESS_VALUE): New macros.
> (gompd_get_proc_bind): Change the returned value from ompd_word_t
> to const char *.
> (gompd_get_max_task_priority): Fix format.
> (gompd_stringize_gompd_enabled): Removed.
> (gompd_get_gompd_enabled): New function prototype.
> * ompd-helper.c (gompd_get_affinity_format): Call CHECK_RET.
> Fix format in gompd_enabled GET_VALUE.
> (gompd_stringize_gompd_enabled): Removed.
> (gompd_get_nthread, gompd_get_thread_limit, gompd_get_run_sched,
> gompd_get_run_sched_chunk_size, gompd_get_default_device,
> gompd_get_dynamic, gompd_get_max_active_levels, gompd_get_proc_bind,
> gompd_is_final,
> gompd_is_implicit, gompd_get_team_size): New functions.
> (gompd_get_gompd_enabled): Change the returned value from
> ompd_word_t to const char *.
> * ompd-init.c (ompd_process_initialize): Use sizeof_short instead of
> sizeof_long_long in GET_VALUE argument.
> * ompd-support.h: Change type from __UINT64_TYPE__ to unsigned short.
> (GOMPD_FOREACH_ACCESS): Add entries for gomp_task kind
> and final_task and gomp_team nthreads.
> * ompd-support.c (gompd_get_offset, gompd_get_sizeof_member,
> gompd_get_size, OMPD_SECTION): Define.
> (gompd_access_gomp_thread_handle,
> gompd_sizeof_gomp_thread_handle): New variables.
> (gompd_state): Change type from __UNIT64_TYPE__ to
> unsigned short.
> (gompd_load): Remove gompd_init_access, gompd_init_sizeof_members,
> gompd_init_sizes, gompd_access_gomp_thread_handle,
> gompd_sizeof_gomp_thread_handle.
> * ompd-icv.c (ompd_get_icv_from_scope): Add thread_handle,
> task_handle and parallel_handle. Fix format in ashandle definition.

Just a nit.  After . there should be 2 spaces instead of one
unless it is at the end of line.

> Call gompd_get_nthread, gompd_get_thread_limit, gomp_get_run_shed,
> gompd_get_run_sched_chunk_size, gompd_get_default_device,
> gompd_get_dynamic, gompd_get_max_active_levels, gompd_get_proc_bind,
> gompd_is_final,
> gompd_is_implicit,
> and gompd_get_team_size.
> (ompd_get_icv_string_from_scope): Fix format in ashandle definition.
> Add task_handle. Call gompd_get_gompd_enabled, and

Here too.

> gompd_get_proc_bind. Remove the call to
> gompd_stringize_gompd_enabled.

> +
> +unsigned short gompd_access_gomp_thread_handle;
> +unsigned short gompd_sizeof_gomp_thread_handle;

This is undesirable, both because you are then mixing
const and non-const objects in OMPD_SECTION if GOMP_NEEDS_THREAD_HANDLE
is defined and because you need to duplicate the stuff in the macros.
I'd suggest
#ifndef GOMP_NEEDS_THREAD_HANDLE
const unsigned short gompd_access_gomp_thread_handle
  __attribute__ ((used)) OMPD_SECTION = 0;
const unsigned short gompd_sizeof_gomp_thread_handle
  __attribute__ ((used)) OMPD_SECTION = 0;
#endif

> +/* Get offset of the member m in struct t.  */
> +#define gompd_get_offset(t, m) \
> +  const unsigned short gompd_access_##t##_##m __attribute__ ((used)) \
> +    OMPD_SECTION \
> +      = (unsigned short) offsetof (struct t, m);
> +  GOMPD_FOREACH_ACCESS (gompd_get_offset)
> +#ifdef GOMP_NEEDS_THREAD_HANDLE
> +  gompd_access_gomp_thread_handle __attribute__ ((used)) OMPD_SECTION
> +    = (unsigned short) offsetof (gomp_thread, handle);
> +#endif

Remove the above 4 lines.

> +#undef gompd_get_offset
> +/* Get size of member m in struct t.  */
> +#define gompd_get_sizeof_member(t, m) \
> +  const unsigned short gompd_sizeof_##t##_##m __attribute__ ((used)) \
> +    OMPD_SECTION \
> +      = sizeof (((struct t *) NULL)->m);
> +  GOMPD_FOREACH_ACCESS (gompd_get_sizeof_member)
> +#ifdef GOMP_NEEDS_THREAD_HANDLE
> +  gompd_sizeof_gomp_thread_handle __attribute__ ((used)) OMPD_SECTION
> +    = sizeof (((struct gomp_thread *) NULL)->handle);
> +#endif

And these.

> +#undef gompd_get_sizeof_member
> +/* Get size of struct t.  */
> +#define gompd_get_size(t) \
> +  const unsigned short gompd_sizeof_##t##_ __attribute__ ((used)) \
> +    OMPD_SECTION \
> +      = sizeof (struct t);
> +  GOMPD_SIZES (gompd_get_size)
> +#undef gompd_get_size
>  
> --- a/libgomp/ompd-support.h
> +++ b/libgomp/ompd-support.h
> @@ -67,7 +67,7 @@
>  #endif
>  
>  void gompd_load (void);
> -extern __UINT64_TYPE__ gompd_state;
> +extern unsigned short gompd_state;
>  
>  #define OMPD_ENABLED 0x1

#ifdef GOMP_NEEDS_THREAD_HANDLE
#define gompd_thread_handle_access gompd_access (gomp_thread, handle)
#else
#define gompd_thread_handle_access
#endif

above the following macro.

> @@ -83,7 +83,10 @@ extern __UINT64_TYPE__ gompd_state;
>    gompd_access (gomp_thread_pool, threads) \
>    gompd_access (gomp_thread, ts) \
>    gompd_access (gomp_team_state, team_id) \
> -  gompd_access (gomp_task, icv)
> +  gompd_access (gomp_task, icv) \
> +  gompd_access (gomp_task, kind) \
> +  gompd_access (gomp_task, final_task) \
> +  gompd_access (gomp_team, nthreads)

and add \
  gompd_thread_handle_access
here.

Otherwise LGTM.

        Jakub

Reply via email to