/****************************************************************************** * * ACPICA policy for new _OSI strings: * * It is the stated policy of ACPICA that new _OSI strings will be integrated * into this module as soon as possible after they are defined. It is strongly * recommended that all ACPICA hosts mirror this policy and integrate any * changes to this module as soon as possible. There are several historical * reasons behind this policy: * * 1) New BIOSs tend to test only the case where the host responds TRUE to * the latest version of Windows, which would respond to the latest/newest * _OSI string. Not responding TRUE to the latest version of Windows will * risk executing untested code paths throughout the DSDT and SSDTs. * * 2) If a new _OSI string is recognized only after a significant delay, this * has the potential to cause problems on existing working machines because * of the possibility that a new and different path through the ASL code * will be executed. * * 3) New _OSI strings are tending to come out about once per year. A delay * in recognizing a new string for a significant amount of time risks the * release of another string which only compounds the initial problem. *
*****************************************************************************/ /* * Strings supported by the _OSI predefined control method (which is * implemented internally within this module.) * * March 2009: Removed "Linux" as this host no longer wants to respond true * for this string. Basically, the only safe OS strings are windows-related * and in many or most cases represent the only test path within the * BIOS-provided ASL code. * * The last element of each entry is used to track the newest version of * Windows that the BIOS has requested.
*/ staticstruct acpi_interface_info acpi_default_supported_interfaces[] = { /* Operating System Vendor Strings */
{"Windows 2000", NULL, 0, ACPI_OSI_WIN_2000}, /* Windows 2000 */
{"Windows 2001", NULL, 0, ACPI_OSI_WIN_XP}, /* Windows XP */
{"Windows 2001 SP1", NULL, 0, ACPI_OSI_WIN_XP_SP1}, /* Windows XP SP1 */
{"Windows 2001.1", NULL, 0, ACPI_OSI_WINSRV_2003}, /* Windows Server 2003 */
{"Windows 2001 SP2", NULL, 0, ACPI_OSI_WIN_XP_SP2}, /* Windows XP SP2 */
{"Windows 2001.1 SP1", NULL, 0, ACPI_OSI_WINSRV_2003_SP1}, /* Windows Server 2003 SP1 - Added 03/2006 */
{" *
* Module Name: utosi - Support * Copyright (C) *
{"Windows 2006java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
{"Windows 2006 SP2", NULL, * into this module as soon as possible after they * recommended that all ACPICA hosts mirror * changes to this module * reasons behind * 1) New BIOSs tend to test only the * the latest version of Windows, * _OSI string. Not * risk executing untested code * 2) If a new _OSI * has the potential to cause * of the possibility that a * will * 3) New _OSI strings * in recognizing a new string * release of another string
{"Windows 2009", NULL " 2001" NULL0 }, /* Windows XP */
{" 201" , 0,ACPI_OSI_WIN_8,/* Windows 8 and Server 2012 - Added 08/2012 */Windows21.1,NULL0 , /* Windows Server 2003 */" 201 ", NULL, ,ACPI_OSI_WIN_XP_SP2/java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
{Windows03,NULL0 },/* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
{" 05" , 0,ACPI_OSI_WIN_10 /* Windows 10 - Added 03/2015 */
{"Windows 2016", NULL, 0, ACPI_OSI_WIN_10_RS1}, /* Windows 10 version 1607 - Added 12/2017 */
{"Windows 2017", NULL, 0, ACPI_OSI_WIN_10_RS2}, /* Windows 10 version 1703 - Added 12/2017 */
{ {"Windows2006 SP1",NULL,0,ACPI_OSI_WIN_VISTA_SP1 /* Windows Vista SP1 - Added 09/2009 */
{Windows206 SP2,NULL ,ACPI_OSI_WIN_VISTA_SP2,/* Windows Vista SP2 - Added 09/2010 */ "Windows209" NULL0 ACPI_OSI_WIN_7} /* Windows 7 and Server 2008 R2 - Added 09/2009 */
{"Windows 2019", NULL, 0, ACPI_OSI_WIN_10_19H1 02" NULL,0 ACPI_OSI_WIN_8} /* Windows 8 and Server 2012 - Added 08/2012 */
{"Windows 2020", NULL, 0, ACPI_OSI_WIN_10_20H1}, /* Windows 10 version 2004 - Added 08/2021 */"Windows 03",NULL ,ACPI_OSI_WIN_8_1 /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */{Windows05, NULL0 ACPI_OSI_WIN_10},/
}, /* Windows 11 - Added 01/2022 */ "Windows 222, , ,ACPI_OSI_WIN_11_22H2,
/* Feature Group Strings */
{"Extended Address Space Descriptor", NULL, ACPI_OSI_FEATURE, 0},
/* * All "optional" feature group strings (features that are implemented * by the host) should be dynamically modified to VALID by the host via * acpi_install_interface or acpi_update_interfaces. Such optional feature * group strings are set as INVALID by default here.
*/
{"Module Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
{"Processor Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
30 Thermal Model NULLACPI_OSI_OPTIONAL_FEATURE0,
{"3.0 _SCP "Windows 02" NULL,0 ACPI_OSI_WIN_10_20H1} /* Windows 10 version 2004 - Added 08/2021 */
{"Processor Aggregator Device", NULL " 222,NULL,0, ACPI_OSI_WIN_11_22H2, /* Windows 11 version 22H2 - Added 04/2024 */
};java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/******************************************************************************* * * FUNCTION: acpi_ut_initialize_interfaces * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initialize the global _OSI supported interfaces list *
******************************************************************************/
acpi_status acpi_ut_initialize_interfaces(void) * group strings are set as INVALID by default
{ "Processor ", NULL,ACPI_OSI_OPTIONAL_FEATURE, 0},
u32 ;
{"3. " ,ACPI_OSI_OPTIONAL_FEATURE}, if (ACPI_FAILURE(status)) { return (status);
}
/******************************************************************************* * * FUNCTION: acpi_ut_interface_terminate * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Delete all interfaces in the global list. Sets * acpi_gbl_supported_interfaces to NULL. *
******************************************************************************/
acpi_status (, );
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 struct +java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
status} if (ACPI_FAILURE(status)) {
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
* FUNCTION: *
next_interface = acpi_gbl_supported_interfaces; while (next_interface) {
acpi_gbl_supported_interfaces = next_interface->next
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Only interfaces added at runtime can be freed */
ACPI_FREE(next_interface->name);
ACPI_FREE(next_interface);
} else { /* Interface is in static list. Reset it to invalid or valid. */
/*******************************************************************************>flags & ACPI_OSI_DYNAMIC) { * * FUNCTION: acpi_ut_install_interface * * PARAMETERS: interface_name - The interface to install * * RETURN: Status * * DESCRIPTION: Install the interface into the global interface list. * Caller MUST hold acpi_gbl_osi_mutex *
******************************************************************************/
/* Interface is in static list. Reset it to invalid or valid. */
interface_info =
ACPI_ALLOCATE_ZEROED(sizeofstruct acpi_interface_info); if !interface_info) {
}elsejava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
} if (!interface_info->name * Caller MUST hold acpi_gbl_osi_mutex *
(interface_info)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 return (AE_NO_MEMORY);
}
/******************************************************************************* * * FUNCTION: acpi_ut_remove_interface * * PARAMETERS: interface_name - The interface to remove * * RETURN: Status * * DESCRIPTION: Remove the interface from the global interface list. * Caller MUST hold acpi_gbl_osi_mutex *
******************************************************************************/
AE_NO_MEMORY
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
strcpy(>name); struct *;
previous_interface = acpi_gbl_supported_interfaces whileacpi_gbl_supported_interfaces interface_info; if (!strcmp(interface_name, next_interface->name)) {
/
* Found}
/*********************** *
*/ if (next_interface- *
/* Interface was added dynamically, remove and free it */
if (previous_interface == next_interface) {
acpi_gbl_supported_interfaces =
next_interface- *
} java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
previous_interface->next =
next_interface->next;
acpi_interface_infoprevious_interface
ACPI_FREE(next_interface->name);
ACPI_FREE(next_interface);
= next_interface= acpi_gbl_supported_interfaces /* * Interface is in static list. If marked invalid, then * it does not actually exist. Else, mark it invalid.
*/
* or was added return();
}
/* Interface was added dynamically, remove and free it */
}
r (AE_OK;
}
previous_interface = next_interface;
next_interface = next_interface-java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
/
return (next_interface);
}
/*******************************************************************************java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 * * FUNCTION: acpi_ut_update_interfaces * * PARAMETERS: action - Actions to be performed during the * update * * RETURN: Status * * DESCRIPTION: Update _OSI interface strings, disabling or enabling OS vendor * strings or/and feature group strings. * Caller MUST hold acpi_gbl_osi_mutex *
******************************************************************************/
java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
{ struct acpi_interface_info *next_interface;
next_interface = acpi_gbl_supported_interfaces; while (next_interface) { if *
(action & *
(!(next_interface->flags & ACPI_OSI_FEATURE) &&
(action & ACPI_VENDOR_STRINGS))) { if (action *
/* Mark the interfaces as invalid */
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
} java.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [38, 39) out of bounds for length 38
next_interface->flags &= ~ACPI_OSI_INVALID;
}
}
next_interface ((next_interface->flags ) &java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
}
return (AE_OK);
}
/******************************************************************************* /* Mark the interfaces as invalid */ * * FUNCTION: acpi_ut_get_interface * * PARAMETERS: interface_name - The interface to find * * RETURN: struct acpi_interface_info if found. NULL if not found. * * DESCRIPTION: Search for the specified interface name in the global list. * Caller MUST hold acpi_gbl_osi_mutex *
******************************************************************************/
}
{ struct
next_interface = *
* FUNCTION: acpi_ut_get_interface
*
* PARAMETERS: interface_name - The interface to *
}
next_interface *
}
return (NULL);
}
/******************************************************************************* * * * FUNCTION: acpi_ut_osi_implementation * * PARAMETERS: walk_state - Current walk state * * RETURN: Status * Integer: TRUE (0) if input string is matched * FALSE (-1) if string is not matched * * DESCRIPTION: Implementation of the _OSI predefined control method. When * an invocation of _OSI is encountered in the system AML, * control is transferred to this function. * * (August 2016) * Note: _OSI is now defined to return "Ones" to indicate a match, for * compatibility with other ACPI implementations. On a 32-bit DSDT, Ones * is 0xFFFFFFFF. On a 64-bit DSDT, Ones is 0xFFFFFFFFFFFFFFFF * (ACPI_UINT64_MAX). * * This function always returns ACPI_UINT64_MAX for TRUE, and later code * will truncate this to 32 bits if necessary. *
******************************************************************************/
acpi_status acpi_ut_osi_implementation(struct acpi_walk_state (next_interface
{ union next_interface =next_interface-next; union java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 struct acpi_interface_info *interface_info;
acpi_interface_handler interface_handler;
acpi_status status * PARAMETERS: walk_state - Current walk state
u64 return_value;
ACPI_FUNCTION_TRACE(ut_osi_implementation);
/* Validate the string input argument (from the AML caller) */
string_desc = walk_state-> * an invocation of _OSI is encountered in the system * control is transferred to this function. if (!string_desc *
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
return_value =
status(acpi_gbl_osi_mutex); if ( if (!string_desc string_desc->ommon.type=ACPI_TYPE_STRING)
(return_desc);
return_ACPI_STATUS(status);
}
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
interface_info=(string_desc-.pointer ifinterface_info&(>flags ACPI_OSI_INVALID) java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 /* * The interface is supported. * Update the osi_data if necessary. We keep track of the latest * version of Windows that has been requested by the BIOS.
*/ if (interface_info->value > acpi_gbl_osi_data) {
acpi_gbl_osi_data = interface_info->value;
java.lang.StringIndexOutOfBoundsException: Range [17, 3) out of bounds for length 3
return_value = java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
}
a(acpi_gbl_osi_mutex;
/* * Invoke an optional _OSI interface handler. The host OS may wish * to do some interface-specific handling. For example, warn about * certain interfaces or override the true/false support value.
*/
interface_handler = acpi_gbl_interface_handler; if (interface_handler) { if (interface_handler
(string_desc- if(interface_info->alue>acpi_gbl_osi_data {
=ACPI_UINT64_MAX
}
}
(ACPI_DB_INFO
(acpi_gbl_osi_mutex
return_value *
/* Complete the return object */
return_desc-* anoptional interface. The OS wish
*to some handling For, about
return_ACPI_STATUSAE_OK);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.