AC_PREREQ(2.57)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
#AC_WITH_LTDL # not needed ?
-AM_INIT_AUTOMAKE(ltt-control,0.72-23102009)
+AM_INIT_AUTOMAKE(ltt-control,0.73-12112009)
AM_CONFIG_HEADER(config.h)
AM_PROG_LIBTOOL
if (ret)
fprintf(stderr, "Set channel's subbuf size failed\n");
}
+
int lttctl_set_channel_subbuf_size(const char *name, const char *channel,
unsigned subbuf_size)
{
return ret;
}
+static int __lttctl_set_channel_switch_timer(const char *name,
+ const char *channel, unsigned switch_timer)
+{
+ int ret;
+ char ctlfname[PATH_MAX];
+ char opstr[32];
+
+ sprintf(ctlfname, "%s/ltt/control/%s/channel/%s/switch_timer",
+ debugfsmntdir, name, channel);
+
+ sprintf(opstr, "%u", switch_timer);
+
+ ret = lttctl_sendop(ctlfname, opstr);
+ if (ret)
+ fprintf(stderr, "Set channel's switch timer failed\n");
+}
+
+int lttctl_set_channel_switch_timer(const char *name, const char *channel,
+ unsigned switch_timer)
+{
+ int ret;
+ char **channellist;
+ int n_channel;
+
+ if (!name || !channel) {
+ fprintf(stderr, "%s: args invalid\n", __func__);
+ ret = -EINVAL;
+ goto arg_error;
+ }
+
+ ret = lttctl_check_trace(name, 1);
+ if (ret)
+ goto arg_error;
+
+ if (strcmp(channel, "all")) {
+ ret = __lttctl_set_channel_subbuf_size(name, channel,
+ switch_timer);
+ if (ret)
+ goto op_err;
+ } else {
+ /* allow set subbuf_size for metadata channel */
+ n_channel = lttctl_get_channellist(name, &channellist, 1);
+ if (n_channel < 0) {
+ fprintf(stderr, "%s: lttctl_get_channellist failed\n",
+ __func__);
+ ret = -ENOENT;
+ goto op_err;
+ }
+
+ for (; n_channel > 0; n_channel--) {
+ ret = __lttctl_set_channel_switch_timer(name,
+ channellist[n_channel - 1], switch_timer);
+ if (ret)
+ goto op_err_clean;
+ }
+ lttctl_free_channellist(channellist, n_channel);
+ }
+
+ return 0;
+
+op_err_clean:
+ lttctl_free_channellist(channellist, n_channel);
+op_err:
+arg_error:
+ return ret;
+}
+
int getdebugfsmntdir(char *mntdir)
{
char mnt_dir[PATH_MAX];
int overwrite;
int bufnum;
int bufsize;
+ int switch_timer;
};
struct lttctl_option {
printf(" channel.<channelname>.bufsize= (in bytes, rounded to "
"next power of 2)\n");
printf(" <channelname> can be set to all for all channels\n");
+ printf(" channel.<channelname>.switch_timer= (timer interval in "
+ "ms)\n");
printf("\n");
printf(" Integration options:\n");
printf(" -C, --create_start\n");
opt->overwrite = -1;
opt->bufnum = -1;
opt->bufsize = -1;
+ opt->switch_timer = -1;
strcpy(opt->chan_name, opt_name);
}
}
opt->bufsize = opt_val;
return 0;
+ } else if (!strcmp("switch_timer", opt_name)) {
+ ret = sscanf(opt_valstr, "%d", &opt_val);
+ if (ret != 1 || opt_val < 0) {
+ return -EINVAL;
+ }
+
+ opt->switch_timer = opt_val;
+ return 0;
} else {
return -EINVAL;
}
opt->bufsize)) != 0)
return ret;
}
+ if (opt->switch_timer != -1) {
+ if ((ret = lttctl_set_channel_switch_timer(opt_tracename,
+ opt->chan_name, opt->switch_timer)) != 0)
+ return ret;
+ }
return 0;
}