From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27460 invoked by alias); 24 Jun 2013 19:03:31 -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 27436 invoked by uid 89); 24 Jun 2013 19:03:28 -0000 X-Spam-SWARE-Status: No, score=-8.0 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,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 19:03:28 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r5OJ3Qsb005158 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Jun 2013 15:03:26 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r5OJ3PS4023028; Mon, 24 Jun 2013 15:03:26 -0400 Message-ID: <51C897FD.3000700@redhat.com> Date: Mon, 24 Jun 2013 19:03:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6 MIME-Version: 1.0 To: Tom Tromey 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> <87fvw7uz6k.fsf@fleche.redhat.com> In-Reply-To: <87fvw7uz6k.fsf@fleche.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-06/txt/msg00669.txt.bz2 On 06/24/2013 07:43 PM, Tom Tromey wrote: >>>>>> "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. Ah, I see now. Sorry for missing it. > I hope that's clear and correct. Thanks, it is. -- Pedro Alves