diff options
Diffstat (limited to 'runtime/staprun/ctl.c')
-rw-r--r-- | runtime/staprun/ctl.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/runtime/staprun/ctl.c b/runtime/staprun/ctl.c index a217d270..95337f59 100644 --- a/runtime/staprun/ctl.c +++ b/runtime/staprun/ctl.c @@ -12,6 +12,40 @@ #include "staprun.h" +/* This is only used in the old relayfs code */ +static void read_buffer_info(void) +{ + char buf[128]; + struct statfs st; + int fd, len, ret; + + if (!use_old_transport) + return; + + if (statfs("/sys/kernel/debug", &st) == 0 && (int) st.f_type == (int) DEBUGFS_MAGIC) + return; + + sprintf (buf, "/proc/systemtap/%s/bufsize", modname); + fd = open(buf, O_RDONLY); + if (fd < 0) + return; + + len = read(fd, buf, sizeof(buf)); + if (len <= 0) { + fprintf (stderr, "ERROR: couldn't read bufsize.\n"); + close(fd); + return; + } + ret = sscanf(buf, "%u,%u", &n_subbufs, &subbuf_size); + if (ret != 2) + fprintf (stderr, "ERROR: couldn't read bufsize.\n"); + + dbug("n_subbufs= %u, size=%u\n", n_subbufs, subbuf_size); + close(fd); + return; +} + + int init_ctl_channel(void) { char buf[128]; @@ -32,6 +66,8 @@ int init_ctl_channel(void) fprintf (stderr, "errcode = %s\n", strerror(errno)); return -1; } + + read_buffer_info(); return 0; } |