This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[pushed] [PATCH v2] Associate target_ops with target_fileio file descriptors


Pedro Alves wrote:
> Because there's no point in starting the next lookup at the
> handle we just opened if we're reusing a slot, either.  And
> then that allows getting rid of the VEC_address, by simply
> doing that increment at the end:
> 
> /* Index into fileio_fhandles of the lowest handle that might be
>    closed.  This permits handle reuse without searching the whole list
>    each time a new file is opened.  */
> static int lowest_closed_fd = 0;
> 
> static int
> acquire_fileio_fd (struct target_ops *t, int fd)
> {
>   fileio_fh_t *fh, buf;
> 
>   gdb_assert (!is_closed_fileio_fh (fd));
> 
>   /* Search for closed handles to reuse.  */
>   for (;
>        VEC_iterate (fileio_fh_t, fileio_fhandles,
> 		    lowest_closed_fd, fh);
>        lowest_closed_fd++)
>     if (is_closed_fileio_fh (fh->fd))
>       break;
> 
>    /* Push a new handle if no closed handles were found.  */
>    if (lowest_closed_fd == VEC_length (fileio_fh_t, fileio_fhandles))
>      fh = VEC_safe_push (fileio_fh_t, fileio_fhandles, NULL);
> 
>   /* Fill in the handle.  */
>   fh->t = t;
>   fh->fd = fd;
> 
>   /* Return its index, and start the next lookup at
>      the next index.  */
>   return lowest_closed_fd++;
> }

That's nice, I pushed that one, thanks!

Gary

-- 
http://gbenson.net/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]