From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 745E03858C51 for ; Mon, 20 Jun 2022 07:31:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 745E03858C51 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-605-mlxoZwkPOHKjldGlGm43hA-1; Mon, 20 Jun 2022 03:31:10 -0400 X-MC-Unique: mlxoZwkPOHKjldGlGm43hA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4A65E3802B88; Mon, 20 Jun 2022 07:31:10 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.39.192.14]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 074A11121314; Mon, 20 Jun 2022 07:31:09 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.17.1/8.17.1) with ESMTPS id 25K7V7gL3742155 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 20 Jun 2022 09:31:07 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.17.1/8.17.1/Submit) id 25K7V6Yr3742154; Mon, 20 Jun 2022 09:31:06 +0200 Date: Mon, 20 Jun 2022 09:31:06 +0200 From: Jakub Jelinek To: Mohamed Atef Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] libgompd: Fix sizes in OMPD support and add local ICVs finctions. Message-ID: Reply-To: Jakub Jelinek References: MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jun 2022 07:31:16 -0000 On Fri, Jun 17, 2022 at 01:20:28AM +0200, Mohamed Atef wrote: > libgomp/ChangeLog > > 2022-06-17 Mohamed Atef > > * 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