From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3802 invoked by alias); 14 May 2002 03:00:43 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 3792 invoked from network); 14 May 2002 03:00:39 -0000 Received: from unknown (HELO cygnus.com) (205.180.83.203) by sources.redhat.com with SMTP; 14 May 2002 03:00:39 -0000 Received: from localhost.redhat.com (remus.sfbay.redhat.com [172.16.27.252]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id UAA09149; Mon, 13 May 2002 20:00:35 -0700 (PDT) Received: by localhost.redhat.com (Postfix, from userid 469) id C4C8A10FC9; Mon, 13 May 2002 23:00:01 -0400 (EDT) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15584.32177.354305.423351@localhost.redhat.com> Date: Mon, 13 May 2002 20:00:00 -0000 To: Keith Seitz Cc: Subject: Re: [RFA] create_file_handler thinko? In-Reply-To: References: X-SW-Source: 2002-05/txt/msg00526.txt.bz2 Keith Seitz writes: > Hi, > > According to comments in create_file_handler, calling create_file_handler > twice with the same fd should result in only a modification of the > parameters for the fd. > > However, the source doesn't read this way. This patch changes > create_file_handler so that it behaves in a way consistent with its > comments. > > Of course, if the comments are wrong, this patch is also completely > wrong... > The comment is fine. I think the code and the comment got out of synch in one of the HAVE_POLL, use_poll etc cleanups. Please check it in. Thanks Elena > Keith > > ChangeLog > 2002-05-13 Keith Seitz > > * event-loop.c (create_file_handler): Don't do anything but > update data when we are given a fd which we are already > monitoring. > > Patch (mostly whitespace) > Index: event-loop.c > =================================================================== > RCS file: /cvs/src/src/gdb/event-loop.c,v > retrieving revision 1.17 > diff -p -r1.17 event-loop.c > *** event-loop.c 27 Nov 2001 04:15:09 -0000 1.17 > --- event-loop.c 13 May 2002 21:59:26 -0000 > *************** create_file_handler (int fd, int mask, h > *** 494,544 **** > file_ptr->ready_mask = 0; > file_ptr->next_file = gdb_notifier.first_file_handler; > gdb_notifier.first_file_handler = file_ptr; > - } > - file_ptr->proc = proc; > - file_ptr->client_data = client_data; > - file_ptr->mask = mask; > > ! if (use_poll) > ! { > #ifdef HAVE_POLL > ! gdb_notifier.num_fds++; > ! if (gdb_notifier.poll_fds) > ! gdb_notifier.poll_fds = > ! (struct pollfd *) xrealloc (gdb_notifier.poll_fds, > ! (gdb_notifier.num_fds > ! * sizeof (struct pollfd))); > ! else > ! gdb_notifier.poll_fds = > ! (struct pollfd *) xmalloc (sizeof (struct pollfd)); > ! (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->fd = fd; > ! (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->events = mask; > ! (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->revents = 0; > #else > ! internal_error (__FILE__, __LINE__, > ! "use_poll without HAVE_POLL"); > #endif /* HAVE_POLL */ > ! } > ! else > ! { > ! if (mask & GDB_READABLE) > ! FD_SET (fd, &gdb_notifier.check_masks[0]); > else > ! FD_CLR (fd, &gdb_notifier.check_masks[0]); > > ! if (mask & GDB_WRITABLE) > ! FD_SET (fd, &gdb_notifier.check_masks[1]); > ! else > ! FD_CLR (fd, &gdb_notifier.check_masks[1]); > > ! if (mask & GDB_EXCEPTION) > ! FD_SET (fd, &gdb_notifier.check_masks[2]); > ! else > ! FD_CLR (fd, &gdb_notifier.check_masks[2]); > > ! if (gdb_notifier.num_fds <= fd) > ! gdb_notifier.num_fds = fd + 1; > } > } > > /* Remove the file descriptor FD from the list of monitored fd's: > --- 494,545 ---- > file_ptr->ready_mask = 0; > file_ptr->next_file = gdb_notifier.first_file_handler; > gdb_notifier.first_file_handler = file_ptr; > > ! if (use_poll) > ! { > #ifdef HAVE_POLL > ! gdb_notifier.num_fds++; > ! if (gdb_notifier.poll_fds) > ! gdb_notifier.poll_fds = > ! (struct pollfd *) xrealloc (gdb_notifier.poll_fds, > ! (gdb_notifier.num_fds > ! * sizeof (struct pollfd))); > ! else > ! gdb_notifier.poll_fds = > ! (struct pollfd *) xmalloc (sizeof (struct pollfd)); > ! (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->fd = fd; > ! (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->events = mask; > ! (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->revents = 0; > #else > ! internal_error (__FILE__, __LINE__, > ! "use_poll without HAVE_POLL"); > #endif /* HAVE_POLL */ > ! } > else > ! { > ! if (mask & GDB_READABLE) > ! FD_SET (fd, &gdb_notifier.check_masks[0]); > ! else > ! FD_CLR (fd, &gdb_notifier.check_masks[0]); > > ! if (mask & GDB_WRITABLE) > ! FD_SET (fd, &gdb_notifier.check_masks[1]); > ! else > ! FD_CLR (fd, &gdb_notifier.check_masks[1]); > > ! if (mask & GDB_EXCEPTION) > ! FD_SET (fd, &gdb_notifier.check_masks[2]); > ! else > ! FD_CLR (fd, &gdb_notifier.check_masks[2]); > > ! if (gdb_notifier.num_fds <= fd) > ! gdb_notifier.num_fds = fd + 1; > ! } > } > + > + file_ptr->proc = proc; > + file_ptr->client_data = client_data; > + file_ptr->mask = mask; > } > > /* Remove the file descriptor FD from the list of monitored fd's: