+/* Atoms associate strings with a list of the CTF items that reference that
+ string, so that ctf_update() can instantiate all the strings using the
+ ctf_str_atoms and then reassociate them with the real string later.
+
+ Strings can be interned into ctf_str_atom without having refs associated
+ with them, for values that are returned to callers, etc. Items are only
+ removed from this table on ctf_close(), but on every ctf_update(), all the
+ csa_refs in all entries are purged. */
+
+typedef struct ctf_str_atom
+{
+ const char *csa_str; /* Backpointer to string (hash key). */
+ ctf_list_t csa_refs; /* This string's refs. */
+ uint32_t csa_offset; /* External strtab offset, if any. */
+ unsigned long csa_snapshot_id; /* Snapshot ID at time of creation. */
+} ctf_str_atom_t;
+
+/* The refs of a single string in the atoms table. */
+
+typedef struct ctf_str_atom_ref
+{
+ ctf_list_t caf_list; /* List forward/back pointers. */
+ uint32_t *caf_ref; /* A single ref to this string. */
+} ctf_str_atom_ref_t;
+