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.
This commit is contained in:
parent
9850ce4d7b
commit
2399827bfa
@ -1,3 +1,7 @@
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-api.h (ctf_ref): New.
|
||||
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-api.h (ctf_archive_count): New.
|
||||
|
@ -285,6 +285,7 @@ extern ctf_file_t *ctf_simple_open (const char *, size_t, const char *, size_t,
|
||||
size_t, const char *, size_t, int *);
|
||||
extern ctf_file_t *ctf_bufopen (const ctf_sect_t *, const ctf_sect_t *,
|
||||
const ctf_sect_t *, int *);
|
||||
extern void ctf_ref (ctf_file_t *);
|
||||
extern void ctf_file_close (ctf_file_t *);
|
||||
|
||||
extern int ctf_arc_write (const char *, ctf_file_t **, size_t,
|
||||
|
@ -1,3 +1,8 @@
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* libctf.ver (ctf_ref): New.
|
||||
* ctf-open.c (ctf_ref): Implement it.
|
||||
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-inlines.h (ctf_forwardable_kind): New.
|
||||
|
@ -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
|
||||
|
@ -24,6 +24,7 @@ LIBCTF_1.0 {
|
||||
ctf_simple_open;
|
||||
ctf_create;
|
||||
ctf_close;
|
||||
ctf_ref;
|
||||
ctf_file_close;
|
||||
|
||||
ctf_cuname;
|
||||
|
Loading…
Reference in New Issue
Block a user