|
@@ -53,8 +53,6 @@ static u32 acpi_db_get_line(char *input_buffer);
|
|
|
|
|
|
static u32 acpi_db_match_command(char *user_command);
|
|
|
|
|
|
-static void acpi_db_single_thread(void);
|
|
|
-
|
|
|
static void acpi_db_display_command_info(char *command, u8 display_all);
|
|
|
|
|
|
static void acpi_db_display_help(char *command);
|
|
@@ -1149,55 +1147,16 @@ acpi_db_command_dispatch(char *input_buffer,
|
|
|
|
|
|
void ACPI_SYSTEM_XFACE acpi_db_execute_thread(void *context)
|
|
|
{
|
|
|
- acpi_status status = AE_OK;
|
|
|
- acpi_status Mstatus;
|
|
|
-
|
|
|
- while (status != AE_CTRL_TERMINATE && !acpi_gbl_db_terminate_loop) {
|
|
|
- acpi_gbl_method_executing = FALSE;
|
|
|
- acpi_gbl_step_to_next_call = FALSE;
|
|
|
-
|
|
|
- Mstatus = acpi_os_acquire_mutex(acpi_gbl_db_command_ready,
|
|
|
- ACPI_WAIT_FOREVER);
|
|
|
- if (ACPI_FAILURE(Mstatus)) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- status =
|
|
|
- acpi_db_command_dispatch(acpi_gbl_db_line_buf, NULL, NULL);
|
|
|
|
|
|
- acpi_os_release_mutex(acpi_gbl_db_command_complete);
|
|
|
- }
|
|
|
+ (void)acpi_db_user_commands();
|
|
|
acpi_gbl_db_threads_terminated = TRUE;
|
|
|
}
|
|
|
|
|
|
-/*******************************************************************************
|
|
|
- *
|
|
|
- * FUNCTION: acpi_db_single_thread
|
|
|
- *
|
|
|
- * PARAMETERS: None
|
|
|
- *
|
|
|
- * RETURN: None
|
|
|
- *
|
|
|
- * DESCRIPTION: Debugger execute thread. Waits for a command line, then
|
|
|
- * simply dispatches it.
|
|
|
- *
|
|
|
- ******************************************************************************/
|
|
|
-
|
|
|
-static void acpi_db_single_thread(void)
|
|
|
-{
|
|
|
-
|
|
|
- acpi_gbl_method_executing = FALSE;
|
|
|
- acpi_gbl_step_to_next_call = FALSE;
|
|
|
-
|
|
|
- (void)acpi_db_command_dispatch(acpi_gbl_db_line_buf, NULL, NULL);
|
|
|
-}
|
|
|
-
|
|
|
/*******************************************************************************
|
|
|
*
|
|
|
* FUNCTION: acpi_db_user_commands
|
|
|
*
|
|
|
- * PARAMETERS: prompt - User prompt (depends on mode)
|
|
|
- * op - Current executing parse op
|
|
|
+ * PARAMETERS: None
|
|
|
*
|
|
|
* RETURN: None
|
|
|
*
|
|
@@ -1206,7 +1165,7 @@ static void acpi_db_single_thread(void)
|
|
|
*
|
|
|
******************************************************************************/
|
|
|
|
|
|
-acpi_status acpi_db_user_commands(char prompt, union acpi_parse_object *op)
|
|
|
+acpi_status acpi_db_user_commands(void)
|
|
|
{
|
|
|
acpi_status status = AE_OK;
|
|
|
|
|
@@ -1216,49 +1175,31 @@ acpi_status acpi_db_user_commands(char prompt, union acpi_parse_object *op)
|
|
|
|
|
|
while (!acpi_gbl_db_terminate_loop) {
|
|
|
|
|
|
- /* Force output to console until a command is entered */
|
|
|
-
|
|
|
- acpi_db_set_output_destination(ACPI_DB_CONSOLE_OUTPUT);
|
|
|
-
|
|
|
- /* Different prompt if method is executing */
|
|
|
-
|
|
|
- if (!acpi_gbl_method_executing) {
|
|
|
- acpi_os_printf("%1c ", ACPI_DEBUGGER_COMMAND_PROMPT);
|
|
|
- } else {
|
|
|
- acpi_os_printf("%1c ", ACPI_DEBUGGER_EXECUTE_PROMPT);
|
|
|
- }
|
|
|
-
|
|
|
- /* Get the user input line */
|
|
|
+ /* Wait the readiness of the command */
|
|
|
|
|
|
- status = acpi_os_get_line(acpi_gbl_db_line_buf,
|
|
|
- ACPI_DB_LINE_BUFFER_SIZE, NULL);
|
|
|
+ status = acpi_os_wait_command_ready();
|
|
|
if (ACPI_FAILURE(status)) {
|
|
|
- ACPI_EXCEPTION((AE_INFO, status,
|
|
|
- "While parsing command line"));
|
|
|
- return (status);
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
- /* Check for single or multithreaded debug */
|
|
|
+ /* Just call to the command line interpreter */
|
|
|
|
|
|
- if (acpi_gbl_debugger_configuration & DEBUGGER_MULTI_THREADED) {
|
|
|
- /*
|
|
|
- * Signal the debug thread that we have a command to execute,
|
|
|
- * and wait for the command to complete.
|
|
|
- */
|
|
|
- acpi_os_release_mutex(acpi_gbl_db_command_ready);
|
|
|
+ acpi_gbl_method_executing = FALSE;
|
|
|
+ acpi_gbl_step_to_next_call = FALSE;
|
|
|
|
|
|
- status =
|
|
|
- acpi_os_acquire_mutex(acpi_gbl_db_command_complete,
|
|
|
- ACPI_WAIT_FOREVER);
|
|
|
- if (ACPI_FAILURE(status)) {
|
|
|
- return (status);
|
|
|
- }
|
|
|
- } else {
|
|
|
- /* Just call to the command line interpreter */
|
|
|
+ (void)acpi_db_command_dispatch(acpi_gbl_db_line_buf, NULL,
|
|
|
+ NULL);
|
|
|
+
|
|
|
+ /* Notify the completion of the command */
|
|
|
|
|
|
- acpi_db_single_thread();
|
|
|
+ status = acpi_os_notify_command_complete();
|
|
|
+ if (ACPI_FAILURE(status)) {
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (ACPI_FAILURE(status) && status != AE_CTRL_TERMINATE) {
|
|
|
+ ACPI_EXCEPTION((AE_INFO, status, "While parsing command line"));
|
|
|
+ }
|
|
|
return (status);
|
|
|
}
|