From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1DBEEC433DB for ; Sat, 6 Mar 2021 07:17:06 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 716D464FE3 for ; Sat, 6 Mar 2021 07:17:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 716D464FE3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:51990 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lIRBP-00060W-P8 for qemu-devel@archiver.kernel.org; Sat, 06 Mar 2021 02:17:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42416) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lIRAL-0005aS-3F for qemu-devel@nongnu.org; Sat, 06 Mar 2021 02:15:57 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:56576) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1lIRAI-0006qL-H8 for qemu-devel@nongnu.org; Sat, 06 Mar 2021 02:15:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1615014952; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=pCAiWVxJqSTVrNJI/2z/vw6UrirE3Jr2/+s/1SggDds=; b=h7RHTMfLj9jVcWf0XM0vCnKovctIIUE8K8V71Z2kk8NOJJRwXZia7TetXpAlPfw9R5J9Yl MHZCTmw0WsLU1+wszDgZHnrj4Zil04cKLGdynsnqLKklURugTmAs7ktxYeQGywJe5SQ+RT 0Cd9OABUZ5IDVQWzAM3Br8XTEWn9L0Y= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-326-v-k80mDEN1agbDX9Oz16iQ-1; Sat, 06 Mar 2021 02:15:48 -0500 X-MC-Unique: v-k80mDEN1agbDX9Oz16iQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F2C25800D53; Sat, 6 Mar 2021 07:15:46 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-83.phx2.redhat.com [10.3.112.83]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6E9657092E; Sat, 6 Mar 2021 07:15:46 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id D7E961132C12; Sat, 6 Mar 2021 08:15:44 +0100 (CET) From: Markus Armbruster To: Vladimir Sementsov-Ogievskiy Subject: Re: [Qemu-devel] [PATCH] monitor: increase amount of data for monitor to read References: <20190610105906.28524-1-dplotnikov@virtuozzo.com> <87lfxfy67u.fsf@dusky.pond.sub.org> <20190710163610.GG2682@work-vm> <31dd78ba-bd64-2ed6-3c8f-eed4e904d14c@virtuozzo.com> <02668cd8-7c1c-6bae-edcb-1123ae026983@virtuozzo.com> <87ft19zo66.fsf@dusky.pond.sub.org> <405eb948-cab6-869a-80eb-cca4c99f110d@virtuozzo.com> <87im65vasl.fsf@dusky.pond.sub.org> Date: Sat, 06 Mar 2021 08:15:44 +0100 In-Reply-To: (Vladimir Sementsov-Ogievskiy's message of "Fri, 5 Mar 2021 19:20:36 +0300") Message-ID: <87lfb0pxb3.fsf@dusky.pond.sub.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: den@virtuozzo.com, Andrey Shinkevich , "Dr. David Alan Gilbert" , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Vladimir Sementsov-Ogievskiy writes: > Hmm. An idea. What we want: read more than one character at a time, as > it's inefficient. May be instead of modifying monitor_can_read() and > therefore influence monitor behavior in unpredictable way, we'd better > add a separate read-cache, and just read through this cache? I think this idea is worth exploring. With a classical parser structure, this would be trivial. Classical structure: application gets expression tree from parser, parser gets tokens from lexer, lexer reads characters from the input. Just use a suitably buffered read. We use a streaming structure, though: main loop reads and pushes characters to lexer one by one, lexer pushes tokens to parser one by one, parser pushes expression tree to the monitor application. All via callbacks. Additional complication: flow control. The monitor can tell the main loop to stop / resume pushing. This is monitor_suspend(), monitor_resume(). It takes effect immediately. We can make the read buffered, but we still have to ensure "stop pushing" takes effect immediately. Stupidest way that could possibly work: keep pushing characters to the lexer one by one. I think that's what you have in mind. Would be great if you could give it a try!