From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5BAB6C41513 for ; Fri, 4 Aug 2023 14:00:56 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.577164.904098 (Exim 4.92) (envelope-from ) id 1qRvM7-00061R-D9; Fri, 04 Aug 2023 14:00:39 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 577164.904098; Fri, 04 Aug 2023 14:00:39 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qRvM7-00061K-AR; Fri, 04 Aug 2023 14:00:39 +0000 Received: by outflank-mailman (input) for mailman id 577164; Fri, 04 Aug 2023 14:00:38 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qRvM6-000613-Ck for xen-devel@lists.xenproject.org; Fri, 04 Aug 2023 14:00:38 +0000 Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 48d1a911-32cf-11ee-8613-37d641c3527e; Fri, 04 Aug 2023 16:00:35 +0200 (CEST) Received: from support.bugseng.com (support.bugseng.com [162.55.131.47]) by support.bugseng.com (Postfix) with ESMTPA id 5F6254EE0737; Fri, 4 Aug 2023 16:00:35 +0200 (CEST) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 48d1a911-32cf-11ee-8613-37d641c3527e MIME-Version: 1.0 Date: Fri, 04 Aug 2023 16:00:35 +0200 From: Nicola Vetrini To: Stefano Stabellini Cc: Xen-devel , Stefano Stabellini , Michal Orzel , xenia.ragiadakou@amd.com, Ayan Kumar Halder , consulting@bugseng.com, Jan Beulich , Andrew Cooper , Julien Grall , George Dunlap , Wei Liu Subject: Re: Address MISRA C:2012 Rule 8.4 In-Reply-To: <00fb1a58849ec08534465df2f8ca2284@bugseng.com> References: <786d24b044bfa503a73a36d2a01eae8c@bugseng.com> <00fb1a58849ec08534465df2f8ca2284@bugseng.com> User-Agent: Roundcube Webmail/1.4.3 Message-ID: X-Sender: nicola.vetrini@bugseng.com Organization: BUGSENG s.r.l. Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit > > Upon further examination, I identified the following patterns: > > 1. Functions defined in .c called only from asm code (e.g., the > already mentioned __start_xen) > 2. Functions/variables declared in a .h, defined in a .c that does not > include the .h with the declaration > (e.g., 'fill_console_start_info' is defined in 'xen/drivers/vga.c', > declared in 'xen/include/xen/console.h' which is not visible when > compiling the .c). > 3. Variables that are either extern or not, such as 'acpi_gbl_FADT' in > 'xen/include/acpi/acglobal.h', depending on > DEFINE_ACPI_GLOBALS > > Below are the proposed resolution strategies: > > 1. I would advise to add the declaration in the relative .h, to > support automatic consistency checks with the > implementation and a quick reference when touching the asm. > 2. To comply with the rule, the header with the declaration should be > included. Also note that there are some > corner cases, such as 'get_sec', which is used in 'cper.h' without > including 'time.h' (which should gain a > declaration for it). > 3. One possible resolution pattern is including 'acglobal.h' twice > (either directly or indirectly trough acpi.h, if > the latter does not cause other issues) like so: > > (assuming DEFINE_ACPI_GLOBALS is undefined here) > #include "acglobal.h" > #define DEFINE_ACPI_GLOBALS > #include "acglobal.h" > > this way, the rule is followed properly, though it's not the > prettiest pattern and also clashes with the objectives > of D4.10 ("Precautions shall be taken in order to prevent the > contents of a header file being included > more than once"), but then a motivated exception is allowed there. One further question is whether functions under 'xen/common/coverage/gcov_base.c' should gain a declaration in 'gcov.h' or not, as they exist just for the purpose of being referenced by autogenerated profiling code. I see no reason why they shouldn't, but they can also be safely deviated, since they are not called by Xen code. -- Nicola Vetrini, BSc Software Engineer, BUGSENG srl (https://bugseng.com)