Print this page
acpica-unix2-20130823
PANKOVs restructure
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/uts/intel/io/acpica/tables/tbfind.c
+++ new/usr/src/common/acpica/components/tables/tbfind.c
1 1 /******************************************************************************
2 2 *
3 3 * Module Name: tbfind - find table
4 4 *
5 5 *****************************************************************************/
6 6
7 7 /*
8 - * Copyright (C) 2000 - 2011, Intel Corp.
8 + * Copyright (C) 2000 - 2013, Intel Corp.
9 9 * All rights reserved.
10 10 *
11 11 * Redistribution and use in source and binary forms, with or without
12 12 * modification, are permitted provided that the following conditions
13 13 * are met:
14 14 * 1. Redistributions of source code must retain the above copyright
15 15 * notice, this list of conditions, and the following disclaimer,
16 16 * without modification.
17 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 18 * substantially similar to the "NO WARRANTY" disclaimer below
19 19 * ("Disclaimer") and any redistribution must be conditioned upon
20 20 * including a substantially similar Disclaimer requirement for further
21 21 * binary redistribution.
22 22 * 3. Neither the names of the above-listed copyright holders nor the names
23 23 * of any contributors may be used to endorse or promote products derived
24 24 * from this software without specific prior written permission.
25 25 *
26 26 * Alternatively, this software may be distributed under the terms of the
27 27 * GNU General Public License ("GPL") version 2 as published by the Free
28 28 * Software Foundation.
29 29 *
30 30 * NO WARRANTY
31 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 41 * POSSIBILITY OF SUCH DAMAGES.
42 42 */
43 43
44 44 #define __TBFIND_C__
45 45
46 46 #include "acpi.h"
47 47 #include "accommon.h"
48 48 #include "actables.h"
49 49
50 50 #define _COMPONENT ACPI_TABLES
51 51 ACPI_MODULE_NAME ("tbfind")
52 52
53 53
54 54 /*******************************************************************************
55 55 *
56 56 * FUNCTION: AcpiTbFindTable
57 57 *
58 58 * PARAMETERS: Signature - String with ACPI table signature
59 59 * OemId - String with the table OEM ID
60 60 * OemTableId - String with the OEM Table ID
61 61 * TableIndex - Where the table index is returned
62 62 *
63 63 * RETURN: Status and table index
64 64 *
65 65 * DESCRIPTION: Find an ACPI table (in the RSDT/XSDT) that matches the
66 66 * Signature, OEM ID and OEM Table ID. Returns an index that can
67 67 * be used to get the table header or entire table.
68 68 *
69 69 ******************************************************************************/
70 70
71 71 ACPI_STATUS
72 72 AcpiTbFindTable (
73 73 char *Signature,
74 74 char *OemId,
75 75 char *OemTableId,
76 76 UINT32 *TableIndex)
77 77 {
78 78 UINT32 i;
↓ open down ↓ |
60 lines elided |
↑ open up ↑ |
79 79 ACPI_STATUS Status;
80 80 ACPI_TABLE_HEADER Header;
81 81
82 82
83 83 ACPI_FUNCTION_TRACE (TbFindTable);
84 84
85 85
86 86 /* Normalize the input strings */
87 87
88 88 ACPI_MEMSET (&Header, 0, sizeof (ACPI_TABLE_HEADER));
89 - ACPI_STRNCPY (Header.Signature, Signature, ACPI_NAME_SIZE);
89 + ACPI_MOVE_NAME (Header.Signature, Signature);
90 90 ACPI_STRNCPY (Header.OemId, OemId, ACPI_OEM_ID_SIZE);
91 91 ACPI_STRNCPY (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE);
92 92
93 93 /* Search for the table */
94 94
95 95 for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
96 96 {
97 97 if (ACPI_MEMCMP (&(AcpiGbl_RootTableList.Tables[i].Signature),
98 98 Header.Signature, ACPI_NAME_SIZE))
99 99 {
100 100 /* Not the requested table */
101 101
102 102 continue;
103 103 }
104 104
105 105 /* Table with matching signature has been found */
106 106
107 107 if (!AcpiGbl_RootTableList.Tables[i].Pointer)
108 108 {
109 109 /* Table is not currently mapped, map it */
110 110
111 111 Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[i]);
112 112 if (ACPI_FAILURE (Status))
113 113 {
114 114 return_ACPI_STATUS (Status);
115 115 }
116 116
117 117 if (!AcpiGbl_RootTableList.Tables[i].Pointer)
118 118 {
119 119 continue;
120 120 }
121 121 }
122 122
123 123 /* Check for table match on all IDs */
124 124
125 125 if (!ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->Signature,
126 126 Header.Signature, ACPI_NAME_SIZE) &&
127 127 (!OemId[0] ||
128 128 !ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->OemId,
129 129 Header.OemId, ACPI_OEM_ID_SIZE)) &&
130 130 (!OemTableId[0] ||
131 131 !ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->OemTableId,
132 132 Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE)))
133 133 {
134 134 *TableIndex = i;
135 135
136 136 ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Found table [%4.4s]\n",
137 137 Header.Signature));
138 138 return_ACPI_STATUS (AE_OK);
139 139 }
140 140 }
141 141
142 142 return_ACPI_STATUS (AE_NOT_FOUND);
143 143 }
↓ open down ↓ |
44 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX