RE: [PATCH] acpica: utpredef: Remove some unused functions

From: Zheng, Lv
Date: Wed Jan 14 2015 - 21:01:08 EST


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