aboutsummaryrefslogtreecommitdiff
path: root/libctf/ctf-open.c
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2020-06-08 09:24:01 +0100
committerNick Alcock <nick.alcock@oracle.com>2020-07-22 17:57:49 +0100
commit2399827bfa1062c7f782499e6dcd9f988318d422 (patch)
treeea65807b4e18793968c87cc905ac034239cd4cd9 /libctf/ctf-open.c
parent9850ce4d7bb89d4f9216dd5eebc88156bf31b70b (diff)
downloadgdb-2399827bfa1062c7f782499e6dcd9f988318d422.zip
gdb-2399827bfa1062c7f782499e6dcd9f988318d422.tar.gz
gdb-2399827bfa1062c7f782499e6dcd9f988318d422.tar.bz2
libctf: add ctf_ref
This allows you to bump the refcount on a ctf_file_t, so that you can smuggle it out of iterators which open and close the ctf_file_t for you around the loop body (like ctf_archive_iter). You still can't use this to preserve a ctf_file_t for longer than the lifetime of its containing entity (e.g. ctf_archive). include/ * ctf-api.h (ctf_ref): New. libctf/ * libctf.ver (ctf_ref): New. * ctf-open.c (ctf_ref): Implement it.
Diffstat (limited to 'libctf/ctf-open.c')
-rw-r--r--libctf/ctf-open.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libctf/ctf-open.c b/libctf/ctf-open.c
index 05672f3..b7846bd 100644
--- a/libctf/ctf-open.c
+++ b/libctf/ctf-open.c
@@ -1620,6 +1620,17 @@ bad:
return NULL;
}
+/* Bump the refcount on the specified CTF container, to allow export of
+ ctf_file_t's from iterators that open and close the ctf_file_t around the
+ loop. (This does not extend their lifetime beyond that of the ctf_archive_t
+ in which they are contained.) */
+
+void
+ctf_ref (ctf_file_t *fp)
+{
+ fp->ctf_refcnt++;
+}
+
/* Close the specified CTF container and free associated data structures. Note
that ctf_file_close() is a reference counted operation: if the specified file
is the parent of other active containers, its reference count will be greater