ACPICA: Eliminate some small unnecessary pathname functions.
authorBob Moore <robert.moore@intel.com>
Mon, 31 Dec 2012 00:05:17 +0000 (00:05 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 10 Jan 2013 11:36:19 +0000 (12:36 +0100)
Removed several small pathname functions to increase efficiency.
Essentially, they replace a function call with a single compare.

Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/acmacros.h
drivers/acpi/acpica/acnamesp.h
drivers/acpi/acpica/acparser.h
drivers/acpi/acpica/nsutils.c
drivers/acpi/acpica/nsxfeval.c
drivers/acpi/acpica/nsxfname.c
drivers/acpi/acpica/psargs.c
drivers/acpi/acpica/psutils.c

index 3ba11d23cba0dfa008ce68d49865964fd5a32875..edfcbc8909ca1acec7d8a91e5eba3268582ca16e 100644 (file)
 #define ACPI_EXTRACT_3BIT_FLAG(field, position)     (ACPI_GET_3BIT_FLAG ((field) >> position))
 #define ACPI_EXTRACT_4BIT_FLAG(field, position)     (ACPI_GET_4BIT_FLAG ((field) >> position))
 
+/* ACPI Pathname helpers */
+
+#define ACPI_IS_ROOT_PREFIX(c)      ((c) == (u8) 0x5C) /* Backslash */
+#define ACPI_IS_PARENT_PREFIX(c)    ((c) == (u8) 0x5E) /* Carat */
+#define ACPI_IS_PATH_SEPARATOR(c)   ((c) == (u8) 0x2E) /* Period (dot) */
+
 /*
  * An object of type struct acpi_namespace_node can appear in some contexts
  * where a pointer to an object of type union acpi_operand_object can also
index 9b19d4b8642407ee8650a988bbb31d653652c787..b826d9c7aa73f399b080626a42c21780818710f7 100644 (file)
@@ -333,8 +333,6 @@ acpi_ns_install_node(struct acpi_walk_state *walk_state,
 /*
  * nsutils - Utility functions
  */
-u8 acpi_ns_valid_root_prefix(char prefix);
-
 acpi_object_type acpi_ns_get_type(struct acpi_namespace_node *node);
 
 u32 acpi_ns_local(acpi_object_type type);
index eefcf47a61a0478072c297f564715c7f0bdabb8c..24a59056eee11503ef1fe75ba850b8086516aaa1 100644 (file)
@@ -211,8 +211,6 @@ void acpi_ps_free_op(union acpi_parse_object *op);
 
 u8 acpi_ps_is_leading_char(u32 c);
 
-u8 acpi_ps_is_prefix_char(u32 c);
-
 #ifdef ACPI_FUTURE_USAGE
 u32 acpi_ps_get_name(union acpi_parse_object *op);
 #endif                         /* ACPI_FUTURE_USAGE */
index 4479654760acb941407813f6b680e8bcdfc103e8..d2dfe61721811d528bc1a825b9c43df7486ab50b 100644 (file)
@@ -51,8 +51,6 @@
 ACPI_MODULE_NAME("nsutils")
 
 /* Local prototypes */
-static u8 acpi_ns_valid_path_separator(char sep);
-
 #ifdef ACPI_OBSOLETE_FUNCTIONS
 acpi_name acpi_ns_find_parent_name(struct acpi_namespace_node *node_to_search);
 #endif
@@ -96,42 +94,6 @@ acpi_ns_print_node_pathname(struct acpi_namespace_node *node,
        }
 }
 
-/*******************************************************************************
- *
- * FUNCTION:    acpi_ns_valid_root_prefix
- *
- * PARAMETERS:  prefix          - Character to be checked
- *
- * RETURN:      TRUE if a valid prefix
- *
- * DESCRIPTION: Check if a character is a valid ACPI Root prefix
- *
- ******************************************************************************/
-
-u8 acpi_ns_valid_root_prefix(char prefix)
-{
-
-       return ((u8)(prefix == '\\'));
-}
-
-/*******************************************************************************
- *
- * FUNCTION:    acpi_ns_valid_path_separator
- *
- * PARAMETERS:  sep         - Character to be checked
- *
- * RETURN:      TRUE if a valid path separator
- *
- * DESCRIPTION: Check if a character is a valid ACPI path separator
- *
- ******************************************************************************/
-
-static u8 acpi_ns_valid_path_separator(char sep)
-{
-
-       return ((u8)(sep == '.'));
-}
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_get_type
@@ -217,19 +179,19 @@ void acpi_ns_get_internal_name_length(struct acpi_namestring_info *info)
         *
         * strlen() + 1 covers the first name_seg, which has no path separator
         */
-       if (acpi_ns_valid_root_prefix(*next_external_char)) {
+       if (ACPI_IS_ROOT_PREFIX(*next_external_char)) {
                info->fully_qualified = TRUE;
                next_external_char++;
 
                /* Skip redundant root_prefix, like \\_SB.PCI0.SBRG.EC0 */
 
-               while (acpi_ns_valid_root_prefix(*next_external_char)) {
+               while (ACPI_IS_ROOT_PREFIX(*next_external_char)) {
                        next_external_char++;
                }
        } else {
                /* Handle Carat prefixes */
 
-               while (*next_external_char == '^') {
+               while (ACPI_IS_PARENT_PREFIX(*next_external_char)) {
                        info->num_carats++;
                        next_external_char++;
                }
@@ -243,7 +205,7 @@ void acpi_ns_get_internal_name_length(struct acpi_namestring_info *info)
        if (*next_external_char) {
                info->num_segments = 1;
                for (i = 0; next_external_char[i]; i++) {
-                       if (acpi_ns_valid_path_separator(next_external_char[i])) {
+                       if (ACPI_IS_PATH_SEPARATOR(next_external_char[i])) {
                                info->num_segments++;
                        }
                }
@@ -281,7 +243,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info)
        /* Setup the correct prefixes, counts, and pointers */
 
        if (info->fully_qualified) {
-               internal_name[0] = '\\';
+               internal_name[0] = AML_ROOT_PREFIX;
 
                if (num_segments <= 1) {
                        result = &internal_name[1];
@@ -301,7 +263,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info)
                i = 0;
                if (info->num_carats) {
                        for (i = 0; i < info->num_carats; i++) {
-                               internal_name[i] = '^';
+                               internal_name[i] = AML_PARENT_PREFIX;
                        }
                }
 
@@ -321,7 +283,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info)
 
        for (; num_segments; num_segments--) {
                for (i = 0; i < ACPI_NAME_SIZE; i++) {
-                       if (acpi_ns_valid_path_separator(*external_name) ||
+                       if (ACPI_IS_PATH_SEPARATOR(*external_name) ||
                            (*external_name == 0)) {
 
                                /* Pad the segment with underscore(s) if segment is short */
@@ -338,7 +300,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info)
 
                /* Now we must have a path separator, or the pathname is bad */
 
-               if (!acpi_ns_valid_path_separator(*external_name) &&
+               if (!ACPI_IS_PATH_SEPARATOR(*external_name) &&
                    (*external_name != 0)) {
                        return_ACPI_STATUS(AE_BAD_PATHNAME);
                }
@@ -456,13 +418,13 @@ acpi_ns_externalize_name(u32 internal_name_length,
        /* Check for a prefix (one '\' | one or more '^') */
 
        switch (internal_name[0]) {
-       case '\\':
+       case AML_ROOT_PREFIX:
                prefix_length = 1;
                break;
 
-       case '^':
+       case AML_PARENT_PREFIX:
                for (i = 0; i < internal_name_length; i++) {
-                       if (internal_name[i] == '^') {
+                       if (ACPI_IS_PARENT_PREFIX(internal_name[i])) {
                                prefix_length = i + 1;
                        } else {
                                break;
index ef29925d1620ab8f32f5bd8f185fa3b775f2ff17..1070eeefcbce8d663d68c32ae90a8da825db8450 100644 (file)
@@ -236,7 +236,7 @@ acpi_evaluate_object(acpi_handle handle,
         * 2) No handle, not fully qualified pathname (error)
         * 3) Valid handle
         */
-       if ((pathname) && (acpi_ns_valid_root_prefix(pathname[0]))) {
+       if ((pathname) && (ACPI_IS_ROOT_PREFIX(pathname[0]))) {
 
                /* The path is fully qualified, just evaluate by name */
 
index a8deae82b24b9a56eeb02b816e65c785f2949543..1664fad5e303fd888dfa161b45d63df87e7b001b 100644 (file)
@@ -107,7 +107,7 @@ acpi_get_handle(acpi_handle parent,
         *
         * Error for <null Parent + relative path>
         */
-       if (acpi_ns_valid_root_prefix(pathname[0])) {
+       if (ACPI_IS_ROOT_PREFIX(pathname[0])) {
 
                /* Pathname is fully qualified (starts with '\') */
 
index cb79e2d4d7430a6d524ff10151c3efcd2b65ea2a..9f3189395f3a825230391149a4cb77e2a8bfa240 100644 (file)
@@ -162,7 +162,7 @@ char *acpi_ps_get_next_namestring(struct acpi_parse_state *parser_state)
 
        /* Point past any namestring prefix characters (backslash or carat) */
 
-       while (acpi_ps_is_prefix_char(*end)) {
+       while (ACPI_IS_ROOT_PREFIX(*end) || ACPI_IS_PARENT_PREFIX(*end)) {
                end++;
        }
 
@@ -798,7 +798,8 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state,
                subop = acpi_ps_peek_opcode(parser_state);
                if (subop == 0 ||
                    acpi_ps_is_leading_char(subop) ||
-                   acpi_ps_is_prefix_char(subop)) {
+                   ACPI_IS_ROOT_PREFIX(subop) ||
+                   ACPI_IS_PARENT_PREFIX(subop)) {
 
                        /* null_name or name_string */
 
index afefb3a1b5773a940c5fc720a71c5424e10b8556..2bbf670b34f9d22c1ad64a475ac5597f668e3ed0 100644 (file)
@@ -201,14 +201,6 @@ u8 acpi_ps_is_leading_char(u32 c)
        return ((u8) (c == '_' || (c >= 'A' && c <= 'Z')));
 }
 
-/*
- * Is "c" a namestring prefix character?
- */
-u8 acpi_ps_is_prefix_char(u32 c)
-{
-       return ((u8)(c == '\\' || c == '^'));
-}
-
 /*
  * Get op's name (4-byte name segment) or 0 if unnamed
  */