From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14892 invoked by alias); 24 Jun 2013 18:43:51 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 14883 invoked by uid 89); 24 Jun 2013 18:43:51 -0000 X-Spam-SWARE-Status: No, score=-6.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Mon, 24 Jun 2013 18:43:50 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r5OIhm5o030446 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Jun 2013 14:43:48 -0400 Received: from barimba (ovpn-113-102.phx2.redhat.com [10.3.113.102]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r5OIhlLx016399 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Mon, 24 Jun 2013 14:43:48 -0400 From: Tom Tromey To: Pedro Alves Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 14/16] move async_client_callback and async_client_context into remote_state References: <1371835506-15691-1-git-send-email-tromey@redhat.com> <1371835506-15691-15-git-send-email-tromey@redhat.com> <51C88294.9030604@redhat.com> Date: Mon, 24 Jun 2013 18:44:00 -0000 In-Reply-To: <51C88294.9030604@redhat.com> (Pedro Alves's message of "Mon, 24 Jun 2013 18:32:04 +0100") Message-ID: <87fvw7uz6k.fsf@fleche.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2013-06/txt/msg00667.txt.bz2 >>>>> "Pedro" == Pedro Alves writes: >> static void >> remote_async_serial_handler (struct serial *scb, void *context) >> { >> + struct remote_state *rs = context; Pedro> Does this actually work? >> + serial_async (rs->remote_desc, remote_async_serial_handler, rs); >> + rs->async_client_callback = callback; >> + rs->async_client_context = context; Pedro> Because I think CONTEXT is always NULL here. Pedro> And it'd seem a wrong to me to store the remote state in the Pedro> meant for context passed in by the target_async's caller? I think it should work. There are two callbacks and two "context" values here. In that second snippet, "callback" and "context" are the arguments to remote_async. We stash those in the struct remote_state. Then we call serial_async with remote_async_serial_handler as a callback and with the remote_state as the context. When remote_async_serial_handler is called, we fetch the original callback and the original context from the remote_state, and call those. We need this second callback layer because we want to add in the INF_REG_EVENT argument. I hope that's clear and correct. Tom