summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authordsmith <dsmith>2007-09-14 14:29:21 +0000
committerdsmith <dsmith>2007-09-14 14:29:21 +0000
commitbcf31db437b07b22f1bda965e980b5c98442b163 (patch)
treecf70b981f0a8ad8d643e0f4a1694616c6052d984 /tapsets.cxx
parent70cafb08301af7028904201075ef2c7335254b8d (diff)
downloadsystemtap-steved-bcf31db437b07b22f1bda965e980b5c98442b163.tar.gz
systemtap-steved-bcf31db437b07b22f1bda965e980b5c98442b163.tar.xz
systemtap-steved-bcf31db437b07b22f1bda965e980b5c98442b163.zip
2007-09-14 David Smith <dsmith@redhat.com>
PR 1154 * tapsets.cxx (procfs_derived_probe_group::emit_module_init): Fixed problem where if only one type (read/write) of procfs probe was defined, the generated code wouldn't compile.
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx30
1 files changed, 21 insertions, 9 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index f57c73f8..38067a7b 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -4694,17 +4694,29 @@ procfs_derived_probe_group::emit_module_init (systemtap_session& s)
s.op->newline() << "break;";
s.op->newline(-1) << "}";
- s.op->newline() << "if (spp->read_pp)";
- s.op->newline(1) << "_stp_procfs_files[i]->read_proc = &_stp_procfs_read;";
- s.op->newline(-1) << "else";
- s.op->newline(1) << "_stp_procfs_files[i]->read_proc = NULL;";
+ if (has_read_probes)
+ {
+ s.op->newline() << "if (spp->read_pp)";
+ s.op->newline(1) << "_stp_procfs_files[i]->read_proc = &_stp_procfs_read;";
+ s.op->newline(-1) << "else";
+ s.op->newline(1) << "_stp_procfs_files[i]->read_proc = NULL;";
+ s.op->indent(-1);
+ }
+ else
+ s.op->newline() << "_stp_procfs_files[i]->read_proc = NULL;";
- s.op->newline(-1) << "if (spp->write_pp)";
- s.op->newline(1) << "_stp_procfs_files[i]->write_proc = &_stp_procfs_write;";
- s.op->newline(-1) << "else";
- s.op->newline(1) << "_stp_procfs_files[i]->write_proc = NULL;";
+ if (has_write_probes)
+ {
+ s.op->newline(-1) << "if (spp->write_pp)";
+ s.op->newline(1) << "_stp_procfs_files[i]->write_proc = &_stp_procfs_write;";
+ s.op->newline(-1) << "else";
+ s.op->newline(1) << "_stp_procfs_files[i]->write_proc = NULL;";
+ s.op->indent(-1);
+ }
+ else
+ s.op->newline() << "_stp_procfs_files[i]->write_proc = NULL;";
- s.op->newline(-1) << "_stp_procfs_files[i]->data = spp;";
+ s.op->newline() << "_stp_procfs_files[i]->data = spp;";
s.op->newline(-1) << "}"; // for loop
}