summaryrefslogtreecommitdiffstats
path: root/tapset-utrace.cxx
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-09-17 16:37:36 -0700
committerJosh Stone <jistone@redhat.com>2009-09-17 16:52:31 -0700
commit4ddb6dd03ee4364bdb36bc32888846faad48a080 (patch)
treebfc76fbbea9aa5f50b6ec7da6ea8eabcb0fbc1e5 /tapset-utrace.cxx
parent6bde4f381475cea055352d8ad5f60bb2f24de21d (diff)
downloadsystemtap-steved-4ddb6dd03ee4364bdb36bc32888846faad48a080.tar.gz
systemtap-steved-4ddb6dd03ee4364bdb36bc32888846faad48a080.tar.xz
systemtap-steved-4ddb6dd03ee4364bdb36bc32888846faad48a080.zip
Map std semaphores from probe->addr
Each probe needs to know the associated semaphore address, rather than the other way around. * session.h (sdt_semaphore_addr): Reverse the key-value types. * tapsets.cxx (record_semaphore): Take an index to only record the semaphore for newly added results. (sdt_query::handle_query_module): Adjust accordingly. (uprobe_derived_probe_group::emit_module_decls): Now it's a simple map lookup for sdt_sem_address. * tapset-utrace.cxx (utrace_derived_probe_group::emit_probe_decl): Ditto.
Diffstat (limited to 'tapset-utrace.cxx')
-rw-r--r--tapset-utrace.cxx18
1 files changed, 6 insertions, 12 deletions
diff --git a/tapset-utrace.cxx b/tapset-utrace.cxx
index 639f0c20..9e5ce939 100644
--- a/tapset-utrace.cxx
+++ b/tapset-utrace.cxx
@@ -716,20 +716,14 @@ utrace_derived_probe_group::emit_probe_decl (systemtap_session& s,
break;
}
s.op->line() << " .engine_attached=0,";
- map<Dwarf_Addr, derived_probe*>::iterator its;
- if (s.sdt_semaphore_addr.empty())
+
+ map<derived_probe*, Dwarf_Addr>::iterator its = s.sdt_semaphore_addr.find(p);
+ if (its == s.sdt_semaphore_addr.end())
s.op->line() << " .sdt_sem_address=(unsigned long)0x0,";
else
- for (its = s.sdt_semaphore_addr.begin();
- its != s.sdt_semaphore_addr.end();
- its++)
- {
- if (p == ((struct utrace_derived_probe*)(its->second)))
- {
- s.op->line() << " .sdt_sem_address=(unsigned long)0x" << hex << its->first << dec << "ULL,";
- break;
- }
- }
+ s.op->line() << " .sdt_sem_address=(unsigned long)0x"
+ << hex << its->second << dec << "ULL,";
+
s.op->line() << " .tsk=0,";
s.op->line() << " },";
}