From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753404AbcGSKAx (ORCPT ); Tue, 19 Jul 2016 06:00:53 -0400 Received: from mga09.intel.com ([134.134.136.24]:26369 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753304AbcGSKAt (ORCPT ); Tue, 19 Jul 2016 06:00:49 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,389,1464678000"; d="scan'208";a="141774018" From: Lv Zheng To: "Rafael J. Wysocki" , "Rafael J. Wysocki" , Len Brown Cc: Lv Zheng , Lv Zheng , , linux-acpi@vger.kernel.org Subject: [PATCH v2 2/2] tools/power/acpi/acpidbg: Use new flushing mechanism Date: Tue, 19 Jul 2016 18:00:45 +0800 Message-Id: <2ebe9abbd56405eb1c1bf43c144605177d0f4ecc.1468922310.git.lv.zheng@intel.com> X-Mailer: git-send-email 1.7.10 In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch converts tools/power/acpi/tools/acpidbg/acpidbg to use the new flushing mechanism. Signed-off-by: Lv Zheng --- tools/power/acpi/tools/acpidbg/acpidbg.c | 51 ++++-------------------------- 1 file changed, 7 insertions(+), 44 deletions(-) diff --git a/tools/power/acpi/tools/acpidbg/acpidbg.c b/tools/power/acpi/tools/acpidbg/acpidbg.c index a88ac45..0aba129 100644 --- a/tools/power/acpi/tools/acpidbg/acpidbg.c +++ b/tools/power/acpi/tools/acpidbg/acpidbg.c @@ -15,7 +15,9 @@ #include #include #include +#include #include +#include #define ACPI_AML_FILE "/sys/kernel/debug/acpi/acpidbg" #define ACPI_AML_SEC_TICK 1 @@ -83,7 +85,6 @@ static const char *acpi_aml_file_path = ACPI_AML_FILE; static unsigned long acpi_aml_mode = ACPI_AML_INTERACTIVE; static bool acpi_aml_exit; -static bool acpi_aml_batch_drain; static unsigned long acpi_aml_batch_state; static char acpi_aml_batch_prompt; static char acpi_aml_batch_roll; @@ -239,11 +240,9 @@ static int acpi_aml_write_batch_log(int fd, struct circ_buf *crc) p = &crc->buf[crc->tail]; len = circ_count_to_end(crc); - if (!acpi_aml_batch_drain) { - len = write(fd, p, len); - if (len < 0) - perror("write"); - } + len = write(fd, p, len); + if (len < 0) + perror("write"); if (len > 0) crc->tail = (crc->tail + len) & (ACPI_AML_BUF_SIZE - 1); return len; @@ -270,10 +269,7 @@ static void acpi_aml_loop(int fd) if (acpi_aml_mode == ACPI_AML_BATCH) { acpi_aml_log_state = ACPI_AML_LOG_START; acpi_aml_batch_pos = acpi_aml_batch_cmd; - if (acpi_aml_batch_drain) - acpi_aml_batch_state = ACPI_AML_BATCH_READ_LOG; - else - acpi_aml_batch_state = ACPI_AML_BATCH_WRITE_CMD; + acpi_aml_batch_state = ACPI_AML_BATCH_WRITE_CMD; } acpi_aml_exit = false; while (!acpi_aml_exit) { @@ -330,39 +326,6 @@ static void acpi_aml_loop(int fd) } } -static bool acpi_aml_readable(int fd) -{ - fd_set rfds; - struct timeval tv; - int ret; - int maxfd = 0; - - tv.tv_sec = 0; - tv.tv_usec = ACPI_AML_USEC_PEEK; - FD_ZERO(&rfds); - maxfd = acpi_aml_set_fd(fd, maxfd, &rfds); - ret = select(maxfd+1, &rfds, NULL, NULL, &tv); - if (ret < 0) - perror("select"); - if (ret > 0 && FD_ISSET(fd, &rfds)) - return true; - return false; -} - -/* - * This is a userspace IO flush implementation, replying on the prompt - * characters and can be turned into a flush() call after kernel implements - * .flush() filesystem operation. - */ -static void acpi_aml_flush(int fd) -{ - while (acpi_aml_readable(fd)) { - acpi_aml_batch_drain = true; - acpi_aml_loop(fd); - acpi_aml_batch_drain = false; - } -} - void usage(FILE *file, char *progname) { fprintf(file, "usage: %s [-b cmd] [-f file] [-h]\n", progname); @@ -426,7 +389,7 @@ int main(int argc, char **argv) acpi_aml_set_fl(STDOUT_FILENO, O_NONBLOCK); if (acpi_aml_mode == ACPI_AML_BATCH) - acpi_aml_flush(fd); + ioctl(fd, ACPI_IOCTL_DEBUGGER_FLUSH); acpi_aml_loop(fd); exit: -- 1.7.10