aboutsummaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
authorPetr Machata <pmachata@redhat.com>2012-10-31 03:28:39 +0100
committerPetr Machata <pmachata@redhat.com>2012-10-31 03:28:39 +0100
commit3240554e943bf773aa57b7e3e3bf80d7102a8b10 (patch)
treeaaa6df697266abbbd2a8f0dacea439ef7b753e6f /proc.c
parent6d8aa0bba1fb9473f6e92738975f6be73a6ac722 (diff)
downloadltrace-3240554e943bf773aa57b7e3e3bf80d7102a8b10.tar.gz
New function proc_each_symbol
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/proc.c b/proc.c
index 3134ce9..54909c9 100644
--- a/proc.c
+++ b/proc.c
@@ -999,3 +999,24 @@ proc_find_symbol(struct Process *proc, struct library_symbol *sym,
return 0;
}
+
+struct library_symbol *
+proc_each_symbol(struct Process *proc, struct library_symbol *start_after,
+ enum callback_status (*cb)(struct library_symbol *, void *),
+ void *data)
+{
+ struct library *lib;
+ if (start_after != NULL)
+ lib = start_after->lib;
+ else
+ lib = proc->libraries;
+
+ for (lib = start_after != NULL ? start_after->lib : proc->libraries;
+ lib != NULL; lib = lib->next) {
+ start_after = library_each_symbol(lib, start_after, cb, data);
+ if (start_after != NULL)
+ return start_after;
+ }
+
+ return NULL;
+}