aboutsummaryrefslogtreecommitdiff
path: root/bfd/cache.c
diff options
context:
space:
mode:
authorDavid MacKenzie <djm@cygnus>1993-11-05 19:51:52 +0000
committerDavid MacKenzie <djm@cygnus>1993-11-05 19:51:52 +0000
commitc188b0bec3b6f147efe7474a606799ed7185d806 (patch)
tree880b6ef2d75443502b96d143f5e4d4244d1a5e15 /bfd/cache.c
parent5090e82cca377dd12046a4bb7dc1922f363348b4 (diff)
downloadgdb-c188b0bec3b6f147efe7474a606799ed7185d806.zip
gdb-c188b0bec3b6f147efe7474a606799ed7185d806.tar.gz
gdb-c188b0bec3b6f147efe7474a606799ed7185d806.tar.bz2
doc cleanup
Diffstat (limited to 'bfd/cache.c')
-rw-r--r--bfd/cache.c92
1 files changed, 44 insertions, 48 deletions
diff --git a/bfd/cache.c b/bfd/cache.c
index 6be253c..cefae72 100644
--- a/bfd/cache.c
+++ b/bfd/cache.c
@@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
SECTION
- File Caching
+ File caching
The file caching mechanism is embedded within BFD and allows
the application to open as many BFDs as it wants without
@@ -28,7 +28,7 @@ SECTION
limit (often as low as 20 open files). The module in
<<cache.c>> maintains a least recently used list of
<<BFD_CACHE_MAX_OPEN>> files, and exports the name
- <<bfd_cache_lookup>> which runs around and makes sure that
+ <<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.
@@ -52,6 +52,12 @@ DESCRIPTION
*/
+static boolean
+bfd_cache_delete PARAMS ((bfd *));
+
+/* Number of bfds on the chain. All such bfds have their file open;
+ if it closed, they get snipd()d from the chain. */
+
static int open_files;
static bfd *cache_sentinel; /* Chain of BFDs with active fds we've
@@ -73,26 +79,23 @@ DESCRIPTION
bfd *bfd_last_cache;
/*
- * INTERNAL_FUNCTION
- * bfd_cache_lookup
- *
- * DESCRIPTION
- * Checks to see if the required BFD is the same as the last one
- * looked up. If so then it can use the iostream in the BFD with
- * impunity, since it can't have changed since the last lookup,
- * otherwise it has to perform the complicated lookup function
- *
- * .#define bfd_cache_lookup(x) \
- * . ((x)==bfd_last_cache? \
- * . (FILE*)(bfd_last_cache->iostream): \
- * . bfd_cache_lookup_worker(x))
- *
- *
+ INTERNAL_FUNCTION
+ bfd_cache_lookup
+
+ DESCRIPTION
+ Check to see if the required BFD is the same as the last one
+ looked up. If so, then it can use the stream in the BFD with
+ impunity, since it can't have changed since the last lookup;
+ otherwise, it has to perform the complicated lookup function.
+
+ .#define bfd_cache_lookup(x) \
+ . ((x)==bfd_last_cache? \
+ . (FILE*)(bfd_last_cache->iostream): \
+ . bfd_cache_lookup_worker(x))
+
+
*/
-static boolean EXFUN(bfd_cache_delete,(bfd *));
-
-
static void
DEFUN_VOID(close_one)
{
@@ -161,22 +164,16 @@ DEFUN(insert,(x,y),
}
-/*
-INTERNAL_FUNCTION
- bfd_cache_init
-
-SYNOPSIS
- void bfd_cache_init (bfd *);
-
-DESCRIPTION
- Initialize a BFD by putting it on the cache LRU.
-*/
+/* Initialize a BFD by putting it on the cache LRU. */
void
DEFUN(bfd_cache_init,(abfd),
bfd *abfd)
{
+ if (open_files >= BFD_CACHE_MAX_OPEN)
+ close_one ();
cache_sentinel = insert(abfd, cache_sentinel);
+ ++open_files;
}
@@ -184,13 +181,13 @@ DEFUN(bfd_cache_init,(abfd),
INTERNAL_FUNCTION
bfd_cache_close
+SYNOPSIS
+ boolean bfd_cache_close (bfd *abfd);
+
DESCRIPTION
- Remove the BFD from the cache. If the attached file is open,
+ Remove the BFD @var{abfd} from the cache. If the attached file is open,
then close it too.
-SYNOPSIS
- boolean bfd_cache_close (bfd *);
-
RETURNS
<<false>> is returned if closing the file fails, <<true>> is
returned if all is well.
@@ -214,15 +211,15 @@ DEFUN(bfd_cache_close,(abfd),
INTERNAL_FUNCTION
bfd_open_file
+SYNOPSIS
+ FILE* bfd_open_file(bfd *abfd);
+
DESCRIPTION
- Call the OS to open a file for this BFD. Returns the FILE *
- (possibly null) that results from this operation. Sets up the
- BFD so that future accesses know the file is open. If the FILE
- * returned is null, then there is won't have been put in the
+ Call the OS to open a file for @var{abfd}. Return the <<FILE *>>
+ (possibly NULL) that results from this operation. Set up the
+ BFD so that future accesses know the file is open. If the <<FILE *>>
+ returned is NULL, then it won't have been put in the
cache, so it won't have to be removed from it.
-
-SYNOPSIS
- FILE* bfd_open_file(bfd *);
*/
FILE *
@@ -256,7 +253,6 @@ DEFUN(bfd_open_file, (abfd),
}
if (abfd->iostream) {
- open_files++;
bfd_cache_init (abfd);
}
@@ -267,16 +263,16 @@ DEFUN(bfd_open_file, (abfd),
INTERNAL_FUNCTION
bfd_cache_lookup_worker
+SYNOPSIS
+ FILE *bfd_cache_lookup_worker(bfd *abfd);
+
DESCRIPTION
Called when the macro <<bfd_cache_lookup>> fails to find a
- quick answer. Finds a file descriptor for this BFD. If
- necessary, it open it. If there are already more than
- BFD_CACHE_MAX_OPEN files open, it trys to close one first, to
+ quick answer. Find a file descriptor for @var{abfd}. If
+ necessary, it open it. If there are already more than
+ <<BFD_CACHE_MAX_OPEN>> files open, it tries to close one first, to
avoid running out of file descriptors.
-SYNOPSIS
- FILE *bfd_cache_lookup_worker(bfd *);
-
*/
FILE *