From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11608 invoked by alias); 26 Sep 2006 12:38:04 -0000 Received: (qmail 11599 invoked by uid 22791); 26 Sep 2006 12:38:04 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 26 Sep 2006 12:38:00 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GSCCE-0002eR-9L; Tue, 26 Sep 2006 08:37:58 -0400 Date: Tue, 26 Sep 2006 12:38:00 -0000 From: Daniel Jacobowitz To: Nick Roberts Cc: gdb@sources.redhat.com Subject: Re: Merge of nickrob-async-20060513 to mainline? Message-ID: <20060926123757.GA9879@nevyn.them.org> Mail-Followup-To: Nick Roberts , gdb@sources.redhat.com References: <17652.63229.637451.185345@kahikatea.snap.net.nz> <20060830023335.GA6377@nevyn.them.org> <17653.930.196634.143646@kahikatea.snap.net.nz> <20060830040113.GA8257@nevyn.them.org> <17654.994.815362.897653@kahikatea.snap.net.nz> <20060830214257.GA5397@nevyn.them.org> <17688.59135.24869.397517@kahikatea.snap.net.nz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <17688.59135.24869.397517@kahikatea.snap.net.nz> User-Agent: Mutt/1.5.13 (2006-08-11) X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2006-09/txt/msg00149.txt.bz2 On Tue, Sep 26, 2006 at 08:38:23PM +1200, Nick Roberts wrote: > Below is a (pseudo) diff fragment that should (hopefully) give the general > idea. Do you mean something along these lines? If yes, I'll try to get it > to work more generally. Yes, this should work, though it seems cumbersome. When you've got a single thread, you don't need to pass actual data around an fd, just a marker "yes i'm ready now". Moving the call to waitpid out of linux-nat.c, and to a target independent file, is a mistake - presumably that's just how you got it to work quickly? That's related to why it doesn't work for threads. The vital line is "options ^= __WCLONE" in the loop in linux_nat_wait. Without __WCLONE, you'll never see a wait status from a thread; with it you'll never see a wait status from the main program. Ideally you'd be able to reuse the signal handler logic (see the calls to sigprocmask and sigsuspend) and thus not have a millisecond latency and excessive spinning. That's actually a pretty important feature, because context switching to gdb every millisecond or so is going to really hurt performance of the debuggee. -- Daniel Jacobowitz CodeSourcery