From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6299 invoked by alias); 13 May 2002 22:01:41 -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 6241 invoked from network); 13 May 2002 22:01:38 -0000 Received: from unknown (HELO cygnus.com) (205.180.83.203) by sources.redhat.com with SMTP; 13 May 2002 22:01:38 -0000 Received: from makita.cygnus.com (makita.sfbay.redhat.com [192.168.30.83]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id PAA18722 for ; Mon, 13 May 2002 15:01:38 -0700 (PDT) Received: from localhost (keiths@localhost) by makita.cygnus.com (8.8.8+Sun/8.6.4) with ESMTP id PAA29257 for ; Mon, 13 May 2002 15:01:37 -0700 (PDT) X-Authentication-Warning: makita.cygnus.com: keiths owned process doing -bs Date: Mon, 13 May 2002 15:01:00 -0000 From: Keith Seitz X-X-Sender: To: Subject: [RFA] create_file_handler thinko? Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2002-05/txt/msg00500.txt.bz2 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... 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: