| @section File caching | |
| The file caching mechanism is embedded within BFD and allows | |
| the application to open as many BFDs as it wants without | |
| regard to the underlying operating system's file descriptor | |
| limit (often as low as 20 open files). The module in | |
| @code{cache.c} maintains a least recently used list of | |
| @code{BFD_CACHE_MAX_OPEN} files, and exports the name | |
| @code{bfd_cache_lookup}, which runs around and makes sure that | |
| the required BFD is open. If not, then it chooses a file to | |
| close, closes it and opens the one wanted, returning its file | |
| handle. | |
| @subsection Caching functions | |
| @findex bfd_cache_init | |
| @subsubsection @code{bfd_cache_init} | |
| @strong{Synopsis} | |
| @example | |
| bfd_boolean bfd_cache_init (bfd *abfd); | |
| @end example | |
| @strong{Description}@* | |
| Add a newly opened BFD to the cache. | |
| @findex bfd_cache_close | |
| @subsubsection @code{bfd_cache_close} | |
| @strong{Synopsis} | |
| @example | |
| bfd_boolean bfd_cache_close (bfd *abfd); | |
| @end example | |
| @strong{Description}@* | |
| Remove the BFD @var{abfd} from the cache. If the attached file is open, | |
| then close it too. | |
| @strong{Returns}@* | |
| @code{FALSE} is returned if closing the file fails, @code{TRUE} is | |
| returned if all is well. | |
| @findex bfd_cache_close_all | |
| @subsubsection @code{bfd_cache_close_all} | |
| @strong{Synopsis} | |
| @example | |
| bfd_boolean bfd_cache_close_all (void); | |
| @end example | |
| @strong{Description}@* | |
| Remove all BFDs from the cache. If the attached file is open, | |
| then close it too. | |
| @strong{Returns}@* | |
| @code{FALSE} is returned if closing one of the file fails, @code{TRUE} is | |
| returned if all is well. | |
| @findex bfd_open_file | |
| @subsubsection @code{bfd_open_file} | |
| @strong{Synopsis} | |
| @example | |
| FILE* bfd_open_file (bfd *abfd); | |
| @end example | |
| @strong{Description}@* | |
| Call the OS to open a file for @var{abfd}. Return the @code{FILE *} | |
| (possibly @code{NULL}) that results from this operation. Set up the | |
| BFD so that future accesses know the file is open. If the @code{FILE *} | |
| returned is @code{NULL}, then it won't have been put in the | |
| cache, so it won't have to be removed from it. | |