extern int lttng_calibrate(struct lttng_handle *handle,
struct lttng_calibrate *calibrate);
+/*
+ * Set the default channel attributes for a specific domain and an allocated
+ * lttng_channel_attr pointer.
+ */
+extern void lttng_channel_set_default_attr(struct lttng_domain *domain,
+ struct lttng_channel_attr *attr);
+
#endif /* _LTTNG_H */
}
/*
- * lttng_set_tracing_group
- *
- * Set tracing group variable with name. This function
- * allocate memory pointed by tracing_group.
+ * Set tracing group variable with name. This function allocate memory pointed
+ * by tracing_group.
*/
int lttng_set_tracing_group(const char *name)
{
return ask_sessiond(&lsm, NULL);
}
+/*
+ * Set default channel attributes.
+ */
+void lttng_channel_set_default_attr(struct lttng_domain *domain,
+ struct lttng_channel_attr *attr)
+{
+ /* Safety check */
+ if (attr == NULL || domain == NULL) {
+ return;
+ }
+
+ switch (domain->type) {
+ case LTTNG_DOMAIN_KERNEL:
+ attr->overwrite = DEFAULT_CHANNEL_OVERWRITE;
+ attr->switch_timer_interval = DEFAULT_CHANNEL_SWITCH_TIMER;
+ attr->read_timer_interval = DEFAULT_CHANNEL_READ_TIMER;
+
+ attr->subbuf_size = DEFAULT_KERNEL_CHANNEL_SUBBUF_SIZE;
+ attr->num_subbuf = DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM;
+ attr->output = DEFAULT_KERNEL_CHANNEL_OUTPUT;
+ break;
+ case LTTNG_DOMAIN_UST:
+ case LTTNG_DOMAIN_UST_EXEC_NAME:
+ case LTTNG_DOMAIN_UST_PID:
+ case LTTNG_DOMAIN_UST_PID_FOLLOW_CHILDREN:
+ attr->overwrite = DEFAULT_CHANNEL_OVERWRITE;
+ attr->switch_timer_interval = DEFAULT_CHANNEL_SWITCH_TIMER;
+ attr->read_timer_interval = DEFAULT_CHANNEL_READ_TIMER;
+
+ attr->subbuf_size = DEFAULT_UST_CHANNEL_SUBBUF_SIZE;
+ attr->num_subbuf = DEFAULT_UST_CHANNEL_SUBBUF_NUM;
+ attr->output = DEFAULT_UST_CHANNEL_OUTPUT;
+ break;
+ default:
+ /* Default behavior */
+ memset(attr, 0, sizeof(struct lttng_channel_attr));
+ break;
+ }
+}
+
/*
* Check if session daemon is alive.
*
uchan->attr.switch_timer_interval;
channels[i].attr.read_timer_interval =
uchan->attr.read_timer_interval;
- channels[i].attr.output = uchan->attr.output;
channels[i].enabled = uchan->enabled;
+ switch (uchan->attr.output) {
+ case LTTNG_UST_MMAP:
+ default:
+ channels[i].attr.output = LTTNG_EVENT_MMAP;
+ break;
+ }
i++;
}
break;
#include "../utils.h"
static char *opt_channels;
-static char *opt_kernel;
+static int opt_kernel;
static char *opt_cmd_name;
static char *opt_session_name;
static int opt_pid_all;
fprintf(ofp, "\n");
}
+/*
+ * Set default attributes depending on those already defined from the command
+ * line.
+ */
+static void set_default_attr(struct lttng_domain *dom)
+{
+ struct lttng_channel_attr default_attr;
+
+ /* Set attributes */
+ lttng_channel_set_default_attr(dom, &default_attr);
+
+ if (chan.attr.overwrite == -1) {
+ chan.attr.overwrite = default_attr.overwrite;
+ }
+ if (chan.attr.subbuf_size == -1) {
+ chan.attr.subbuf_size = default_attr.subbuf_size;
+ }
+ if (chan.attr.num_subbuf == -1) {
+ chan.attr.num_subbuf = default_attr.num_subbuf;
+ }
+ if (chan.attr.switch_timer_interval == -1) {
+ chan.attr.switch_timer_interval = default_attr.switch_timer_interval;
+ }
+ if (chan.attr.read_timer_interval == -1) {
+ chan.attr.read_timer_interval = default_attr.read_timer_interval;
+ }
+ if (chan.attr.output == -1) {
+ chan.attr.output = default_attr.output;
+ }
+}
+
/*
* Adding channel using the lttng API.
*/
goto error;
}
+ set_default_attr(&dom);
+
handle = lttng_create_handle(session_name, &dom);
if (handle == NULL) {
ret = -1;
*/
static void init_channel_config(void)
{
- if (opt_kernel) {
- /* kernel default */
- chan.attr.overwrite = DEFAULT_CHANNEL_OVERWRITE;
- chan.attr.switch_timer_interval = DEFAULT_CHANNEL_SWITCH_TIMER;
- chan.attr.read_timer_interval = DEFAULT_CHANNEL_READ_TIMER;
-
- chan.attr.subbuf_size = DEFAULT_KERNEL_CHANNEL_SUBBUF_SIZE;
- chan.attr.num_subbuf = DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM;
- chan.attr.output = DEFAULT_KERNEL_CHANNEL_OUTPUT;
- } else {
- /* default behavior, used by UST. */
- chan.attr.overwrite = DEFAULT_CHANNEL_OVERWRITE;
- chan.attr.switch_timer_interval = DEFAULT_CHANNEL_SWITCH_TIMER;
- chan.attr.read_timer_interval = DEFAULT_CHANNEL_READ_TIMER;
-
- chan.attr.subbuf_size = DEFAULT_UST_CHANNEL_SUBBUF_SIZE;
- chan.attr.num_subbuf = DEFAULT_UST_CHANNEL_SUBBUF_NUM;
- chan.attr.output = DEFAULT_CHANNEL_OUTPUT;
- }
+ /*
+ * Put -1 everywhere so we can identify those set by the command line and
+ * those needed to be set by the default values.
+ */
+ memset(&chan.attr, -1, sizeof(chan.attr));
}
/*
MSG("\n%sEvents:", indent4);
if (count == 0) {
- MSG("%sNone", indent6);
+ MSG("%sNone\n", indent6);
goto end;
}