diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2020-06-08 09:24:01 +0100 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2020-07-22 17:57:49 +0100 |
commit | 2399827bfa1062c7f782499e6dcd9f988318d422 (patch) | |
tree | ea65807b4e18793968c87cc905ac034239cd4cd9 /libctf/ctf-open.c | |
parent | 9850ce4d7bb89d4f9216dd5eebc88156bf31b70b (diff) | |
download | gdb-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.c | 11 |
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 |