cache.texi revision 1.1.1.4 1 @section File caching
2 The file caching mechanism is embedded within BFD and allows
3 the application to open as many BFDs as it wants without
4 regard to the underlying operating system's file descriptor
5 limit (often as low as 20 open files). The module in
6 @code{cache.c} maintains a least recently used list of
7 @code{bfd_cache_max_open} files, and exports the name
8 @code{bfd_cache_lookup}, which runs around and makes sure that
9 the required BFD is open. If not, then it chooses a file to
10 close, closes it and opens the one wanted, returning its file
11 handle.
12
13 @subsection Caching functions
14
15
16 @findex bfd_cache_init
17 @subsubsection @code{bfd_cache_init}
18 @deftypefn {Function} bool bfd_cache_init (bfd *abfd);
19 Add a newly opened BFD to the cache.
20
21 @end deftypefn
22 @findex bfd_cache_close
23 @subsubsection @code{bfd_cache_close}
24 @deftypefn {Function} bool bfd_cache_close (bfd *abfd);
25 Remove the BFD @var{abfd} from the cache. If the attached file is open,
26 then close it too.
27
28 @code{FALSE} is returned if closing the file fails, @code{TRUE} is
29 returned if all is well.
30
31 @end deftypefn
32 @findex bfd_cache_close_all
33 @subsubsection @code{bfd_cache_close_all}
34 @deftypefn {Function} bool bfd_cache_close_all (void);
35 Remove all BFDs from the cache. If the attached file is open,
36 then close it too. Note - despite its name this function will
37 close a BFD even if it is not marked as being cacheable, ie
38 even if bfd_get_cacheable() returns false.
39
40 @code{FALSE} is returned if closing one of the file fails, @code{TRUE} is
41 returned if all is well.
42
43 @end deftypefn
44 @findex bfd_cache_size
45 @subsubsection @code{bfd_cache_size}
46 @deftypefn {Function} unsigned bfd_cache_size (void);
47 Return the number of open files in the cache.
48
49 @end deftypefn
50 @findex bfd_open_file
51 @subsubsection @code{bfd_open_file}
52 @deftypefn {Function} FILE* bfd_open_file (bfd *abfd);
53 Call the OS to open a file for @var{abfd}. Return the @code{FILE *}
54 (possibly @code{NULL}) that results from this operation. Set up the
55 BFD so that future accesses know the file is open. If the @code{FILE *}
56 returned is @code{NULL}, then it won't have been put in the
57 cache, so it won't have to be removed from it.
58
59 @end deftypefn
60