summaryrefslogtreecommitdiff
path: root/gdb/target-dcache.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-04-21 09:12:47 -0600
committerTom Tromey <tom@tromey.com>2019-05-08 16:01:46 -0600
commit35632941c90f406f69512c9559ae7ba561f7eee8 (patch)
treecfb2a58c71f2024392f2b1139fd367341f8ae18e /gdb/target-dcache.c
parent3017b94d60f1e8929886be6992547973ad354f4c (diff)
downloadbinutils-gdb-35632941c90f406f69512c9559ae7ba561f7eee8.tar.gz
Convert target dcache to type-safe registry API
This changes the target dcache to use the type-safe registry API. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * target-dcache.c (target_dcache_cleanup): Remove. (target_dcache_aspace_key): Change type. (target_dcache_init_p, target_dcache_invalidate) (target_dcache_get, target_dcache_get_or_init) (_initialize_target_dcache): Update. * dcache.h (struct dcache_deleter): New.
Diffstat (limited to 'gdb/target-dcache.c')
-rw-r--r--gdb/target-dcache.c34
1 files changed, 7 insertions, 27 deletions
diff --git a/gdb/target-dcache.c b/gdb/target-dcache.c
index 3fab9845bc3..98d5c1f83b6 100644
--- a/gdb/target-dcache.c
+++ b/gdb/target-dcache.c
@@ -23,16 +23,8 @@
/* The target dcache is kept per-address-space. This key lets us
associate the cache with the address space. */
-static const struct address_space_data *target_dcache_aspace_key;
-
-/* Clean up dcache, represented by ARG, which is associated with
- ASPACE. */
-
-static void
-target_dcache_cleanup (struct address_space *aspace, void *arg)
-{
- dcache_free ((DCACHE *) arg);
-}
+static const struct address_space_key<DCACHE, dcache_deleter>
+ target_dcache_aspace_key;
/* Target dcache is initialized or not. */
@@ -40,8 +32,7 @@ int
target_dcache_init_p (void)
{
DCACHE *dcache
- = (DCACHE *) address_space_data (current_program_space->aspace,
- target_dcache_aspace_key);
+ = target_dcache_aspace_key.get (current_program_space->aspace);
return (dcache != NULL);
}
@@ -52,8 +43,7 @@ void
target_dcache_invalidate (void)
{
DCACHE *dcache
- = (DCACHE *) address_space_data (current_program_space->aspace,
- target_dcache_aspace_key);
+ = target_dcache_aspace_key.get (current_program_space->aspace);
if (dcache != NULL)
dcache_invalidate (dcache);
@@ -65,11 +55,7 @@ target_dcache_invalidate (void)
DCACHE *
target_dcache_get (void)
{
- DCACHE *dcache
- = (DCACHE *) address_space_data (current_program_space->aspace,
- target_dcache_aspace_key);
-
- return dcache;
+ return target_dcache_aspace_key.get (current_program_space->aspace);
}
/* Return the target dcache. If it is not initialized yet, initialize
@@ -79,14 +65,12 @@ DCACHE *
target_dcache_get_or_init (void)
{
DCACHE *dcache
- = (DCACHE *) address_space_data (current_program_space->aspace,
- target_dcache_aspace_key);
+ = target_dcache_aspace_key.get (current_program_space->aspace);
if (dcache == NULL)
{
dcache = dcache_init ();
- set_address_space_data (current_program_space->aspace,
- target_dcache_aspace_key, dcache);
+ target_dcache_aspace_key.set (current_program_space->aspace, dcache);
}
return dcache;
@@ -193,8 +177,4 @@ access is on."),
set_code_cache,
show_code_cache,
&setlist, &showlist);
-
- target_dcache_aspace_key
- = register_address_space_data_with_cleanup (NULL,
- target_dcache_cleanup);
}