diff options
author | Josh Stone <jistone@redhat.com> | 2009-10-19 18:11:58 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-10-19 18:36:24 -0700 |
commit | 81fb86d83da9964e7d9e2330d78b2008f18054e4 (patch) | |
tree | 0462bb7e33e030f68925764b1aaeea1407919173 | |
parent | 892e5de27d2f275e2d7c2160d81fe9e0c87b1ee1 (diff) | |
download | systemtap-steved-81fb86d83da9964e7d9e2330d78b2008f18054e4.tar.gz systemtap-steved-81fb86d83da9964e7d9e2330d78b2008f18054e4.tar.xz systemtap-steved-81fb86d83da9964e7d9e2330d78b2008f18054e4.zip |
Improve some runtime struct layouts
Guided by pahole, I've shaved off a few padding bytes here and there.
New sizes on x86_64:
stap_task_finder_target 192 -> 184
stap_itrace_probe 216 -> 208
stap_utrace_probe 328 -> 312
stap_uprobe_tf 200 -> 192
stap_uprobe_spec 48 -> 40
I only changed field layouts, not types or names, so this should be
perfectly safe. (FLW)
-rw-r--r-- | runtime/task_finder.c | 4 | ||||
-rw-r--r-- | tapset-utrace.cxx | 2 | ||||
-rw-r--r-- | tapsets.cxx | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/runtime/task_finder.c b/runtime/task_finder.c index 6b50f1b9..e89ac8ee 100644 --- a/runtime/task_finder.c +++ b/runtime/task_finder.c @@ -87,15 +87,15 @@ struct stap_task_finder_target { struct list_head callback_list_head; struct list_head callback_list; struct utrace_engine_ops ops; + size_t pathlen; unsigned engine_attached:1; unsigned mmap_events:1; unsigned munmap_events:1; unsigned mprotect_events:1; - size_t pathlen; /* public: */ - const char *procname; pid_t pid; + const char *procname; stap_task_finder_callback callback; stap_task_finder_mmap_callback mmap_callback; stap_task_finder_munmap_callback munmap_callback; diff --git a/tapset-utrace.cxx b/tapset-utrace.cxx index abc9759f..4bd4ecc1 100644 --- a/tapset-utrace.cxx +++ b/tapset-utrace.cxx @@ -785,10 +785,10 @@ utrace_derived_probe_group::emit_module_decls (systemtap_session& s) s.op->newline() << "struct stap_task_finder_target tgt;"; s.op->newline() << "const char *pp;"; s.op->newline() << "void (*ph) (struct context*);"; + s.op->newline() << "int engine_attached;"; s.op->newline() << "enum utrace_derived_probe_flags flags;"; s.op->newline() << "struct utrace_engine_ops ops;"; s.op->newline() << "unsigned long events;"; - s.op->newline() << "int engine_attached;"; s.op->newline() << "struct task_struct *tsk;"; s.op->newline() << "unsigned long sdt_sem_address;"; s.op->newline(-1) << "};"; diff --git a/tapsets.cxx b/tapsets.cxx index 59dbc4b3..17e6c6cf 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -4433,11 +4433,11 @@ uprobe_derived_probe_group::emit_module_decls (systemtap_session& s) s.op->newline() << "static const struct stap_uprobe_spec {"; // NB: read-only structure s.op->newline(1) << "unsigned tfi;"; // index into stap_uprobe_finders[] + s.op->newline() << "unsigned return_p:1;"; s.op->newline() << "unsigned long address;"; s.op->newline() << "const char *pp;"; s.op->newline() << "void (*ph) (struct context*);"; s.op->newline() << "unsigned long sdt_sem_address;"; - s.op->newline() << "unsigned return_p:1;"; s.op->newline(-1) << "} stap_uprobe_specs [] = {"; // NB: read-only structure s.op->indent(1); for (unsigned i =0; i<probes.size(); i++) |