summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-10-19 18:11:58 -0700
committerJosh Stone <jistone@redhat.com>2009-10-19 18:36:24 -0700
commit81fb86d83da9964e7d9e2330d78b2008f18054e4 (patch)
tree0462bb7e33e030f68925764b1aaeea1407919173
parent892e5de27d2f275e2d7c2160d81fe9e0c87b1ee1 (diff)
downloadsystemtap-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.c4
-rw-r--r--tapset-utrace.cxx2
-rw-r--r--tapsets.cxx2
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++)