diff options
author | Josh Stone <jistone@redhat.com> | 2009-09-17 16:37:36 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-09-17 16:52:31 -0700 |
commit | 4ddb6dd03ee4364bdb36bc32888846faad48a080 (patch) | |
tree | bfc76fbbea9aa5f50b6ec7da6ea8eabcb0fbc1e5 /tapset-utrace.cxx | |
parent | 6bde4f381475cea055352d8ad5f60bb2f24de21d (diff) | |
download | systemtap-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.cxx | 18 |
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() << " },"; } |