2015-01-15 3:00 GMT+01:00 Zheng, Lv <lv.zheng@xxxxxxxxx>: > Hi, > >> From: Rickard Strandqvist [mailto:rickard_strandqvist@xxxxxxxxxxxxxxxxxx] >> Sent: Thursday, January 15, 2015 6:50 AM >> >> 2015-01-14 9:55 GMT+01:00 Zheng, Lv <lv.zheng@xxxxxxxxx>: >> > Hi, Rickard >> > >> > The functions below seem already marked by "ACPI_ASL_COMPILER || ACPI_HELP_APP". >> > How did you detect them as used functions? > > Do you mean something like this? > > <?xml version="1.0"?> > <def> > <define name="ACPI_ASL_COMPILER" value="0"/> > <define name="ACPI_HELP_APP" value="0"/> > </def> > > Can Cppcheck automatically remove code blocks depending on the define settings during preprocessor stage? > > Thanks and best regards > -Lv > >> > >> > Thanks >> > -Lv >> > >> > >> >> -----Original Message----- >> >> From: Rickard Strandqvist [mailto:rickard_strandqvist@xxxxxxxxxxxxxxxxxx] >> >> Sent: Sunday, January 04, 2015 11:23 PM >> >> To: Moore, Robert; Zheng, Lv >> >> Cc: Rickard Strandqvist; Wysocki, Rafael J; Len Brown; linux-acpi@xxxxxxxxxxxxxxx; devel@xxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx >> >> Subject: [PATCH] acpica: utpredef: Remove some unused functions >> >> >> >> Removes some functions that are not used anywhere: >> >> acpi_ut_get_resource_bit_width() acpi_ut_display_predefined_method() acpi_ut_match_resource_name() >> >> >> >> This was partially found by using a static code analysis program called cppcheck. >> >> >> >> Signed-off-by: Rickard Strandqvist <rickard_strandqvist@xxxxxxxxxxxxxxxxxx> >> >> --- >> >> drivers/acpi/acpica/acutils.h | 9 --- >> >> drivers/acpi/acpica/utpredef.c | 134 ---------------------------------------- >> >> 2 files changed, 143 deletions(-) >> >> >> >> diff --git a/drivers/acpi/acpica/acutils.h b/drivers/acpi/acpica/acutils.h >> >> index 486d342..9b3fab1 100644 >> >> --- a/drivers/acpi/acpica/acutils.h >> >> +++ b/drivers/acpi/acpica/acutils.h >> >> @@ -502,17 +502,8 @@ const union acpi_predefined_info *acpi_ut_get_next_predefined_method(const union >> >> >> >> const union acpi_predefined_info *acpi_ut_match_predefined_method(char *name); >> >> >> >> -const union acpi_predefined_info *acpi_ut_match_resource_name(char *name); >> >> - >> >> -void >> >> -acpi_ut_display_predefined_method(char *buffer, >> >> - const union acpi_predefined_info *this_name, >> >> - u8 multi_line); >> >> - >> >> void acpi_ut_get_expected_return_types(char *buffer, u32 expected_btypes); >> >> >> >> -u32 acpi_ut_get_resource_bit_width(char *buffer, u16 types); >> >> - >> >> /* >> >> * utstate - Generic state creation/cache routines >> >> */ >> >> diff --git a/drivers/acpi/acpica/utpredef.c b/drivers/acpi/acpica/utpredef.c >> >> index db30caf..f1ff33c 100644 >> >> --- a/drivers/acpi/acpica/utpredef.c >> >> +++ b/drivers/acpi/acpica/utpredef.c >> >> @@ -209,105 +209,6 @@ static const char *ut_resource_type_names[] = { >> >> >> >> /******************************************************************************* >> >> * >> >> - * FUNCTION: acpi_ut_match_resource_name >> >> - * >> >> - * PARAMETERS: name - Name to find >> >> - * >> >> - * RETURN: Pointer to entry in the resource table. NULL indicates not >> >> - * found. >> >> - * >> >> - * DESCRIPTION: Check an object name against the predefined resource >> >> - * descriptor object list. >> >> - * >> >> - ******************************************************************************/ >> >> - >> >> -const union acpi_predefined_info *acpi_ut_match_resource_name(char *name) >> >> -{ >> >> - const union acpi_predefined_info *this_name; >> >> - >> >> - /* Quick check for a predefined name, first character must be underscore */ >> >> - >> >> - if (name[0] != '_') { >> >> - return (NULL); >> >> - } >> >> - >> >> - /* Search info table for a predefined method/object name */ >> >> - >> >> - this_name = acpi_gbl_resource_names; >> >> - while (this_name->info.name[0]) { >> >> - if (ACPI_COMPARE_NAME(name, this_name->info.name)) { >> >> - return (this_name); >> >> - } >> >> - >> >> - this_name++; >> >> - } >> >> - >> >> - return (NULL); /* Not found */ >> >> -} >> >> - >> >> -/******************************************************************************* >> >> - * >> >> - * FUNCTION: acpi_ut_display_predefined_method >> >> - * >> >> - * PARAMETERS: buffer - Scratch buffer for this function >> >> - * this_name - Entry in the predefined method/name table >> >> - * multi_line - TRUE if output should be on >1 line >> >> - * >> >> - * RETURN: None >> >> - * >> >> - * DESCRIPTION: Display information about a predefined method. Number and >> >> - * type of the input arguments, and expected type(s) for the >> >> - * return value, if any. >> >> - * >> >> - ******************************************************************************/ >> >> - >> >> -void >> >> -acpi_ut_display_predefined_method(char *buffer, >> >> - const union acpi_predefined_info *this_name, >> >> - u8 multi_line) >> >> -{ >> >> - u32 arg_count; >> >> - >> >> - /* >> >> - * Get the argument count and the string buffer >> >> - * containing all argument types >> >> - */ >> >> - arg_count = acpi_ut_get_argument_types(buffer, >> >> - this_name->info.argument_list); >> >> - >> >> - if (multi_line) { >> >> - printf(" "); >> >> - } >> >> - >> >> - printf("%4.4s Requires %s%u argument%s", >> >> - this_name->info.name, >> >> - (this_name->info.argument_list & ARG_COUNT_IS_MINIMUM) ? >> >> - "(at least) " : "", arg_count, arg_count != 1 ? "s" : ""); >> >> - >> >> - /* Display the types for any arguments */ >> >> - >> >> - if (arg_count > 0) { >> >> - printf(" (%s)", buffer); >> >> - } >> >> - >> >> - if (multi_line) { >> >> - printf("\n "); >> >> - } >> >> - >> >> - /* Get the return value type(s) allowed */ >> >> - >> >> - if (this_name->info.expected_btypes) { >> >> - acpi_ut_get_expected_return_types(buffer, >> >> - this_name->info. >> >> - expected_btypes); >> >> - printf(" Return value types: %s\n", buffer); >> >> - } else { >> >> - printf(" No return value\n"); >> >> - } >> >> -} >> >> - >> >> -/******************************************************************************* >> >> - * >> >> * FUNCTION: acpi_ut_get_argument_types >> >> * >> >> * PARAMETERS: buffer - Where to return the formatted types >> >> @@ -361,39 +262,4 @@ static u32 acpi_ut_get_argument_types(char *buffer, u16 argument_types) >> >> return (arg_count); >> >> } >> >> >> >> -/******************************************************************************* >> >> - * >> >> - * FUNCTION: acpi_ut_get_resource_bit_width >> >> - * >> >> - * PARAMETERS: buffer - Where the formatted string is returned >> >> - * types - Bitfield of expected data types >> >> - * >> >> - * RETURN: Count of return types. Formatted string in Buffer. >> >> - * >> >> - * DESCRIPTION: Format the resource bit widths into a printable string. >> >> - * >> >> - ******************************************************************************/ >> >> - >> >> -u32 acpi_ut_get_resource_bit_width(char *buffer, u16 types) >> >> -{ >> >> - u32 i; >> >> - u16 sub_index; >> >> - u32 found; >> >> - >> >> - *buffer = 0; >> >> - sub_index = 1; >> >> - found = 0; >> >> - >> >> - for (i = 0; i < NUM_RESOURCE_WIDTHS; i++) { >> >> - if (types & 1) { >> >> - strcat(buffer, &(ut_resource_type_names[i][sub_index])); >> >> - sub_index = 0; >> >> - found++; >> >> - } >> >> - >> >> - types >>= 1; >> >> - } >> >> - >> >> - return (found); >> >> -} >> >> #endif >> >> -- >> >> 1.7.10.4 >> > >> >> Hi >> >> Cppcheck running depending on the settings all define on and off, if >> that's what you wonder. >> >> Otherwise, I did a little deeper explanation how I made did this with >> cppcheck, and same scripts. >> https://lkml.org/lkml/2015/1/9/531 >> >> >> Kind regards >> Rickard Strandqvist Hi Lv Interesting question, myself have not had reason to investigate it. By default cppcheck will check all preprocessor configurations. I'm not sure if you can do so via an xml file, but you can give arguments to cppcheck define and unset with the -D and -U Ex: check all configurations when macro A is defined cppcheck -DA --force file.c Se the manual for cppcheck here see: "Chapter 3. Preprocessor configurations" http://cppcheck.sourceforge.net/manual.pdf Kind regards Rickard Strandqvist -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html