#define _LIBLTT_H
#include <linux/limits.h>
+#include <asm/types.h>
+#include <sys/socket.h>
+#include <linux/netlink.h>
+
+#ifndef NETLINK_LTT
+#define NETLINK_LTT 12
+#endif
+
enum trace_op {
OP_CREATE,
OP_DESTROY,
OP_START,
- OP_STOP
+ OP_STOP,
+ OP_NONE
};
enum trace_mode {
- TRACE_NORMAL,
- TRACE_FLIGHT
+ LTT_TRACE_NORMAL,
+ LTT_TRACE_FLIGHT
};
+typedef struct lttctl_peer_msg {
+ char trace_name[NAME_MAX];
+ enum trace_op op;
+ union {
+ struct {
+ enum trace_mode mode;
+ unsigned subbuf_size;
+ unsigned n_subbufs;
+ } new_trace;
+ } args;
+} lttctl_peer_msg_t;
+
struct lttctl_handle
{
int fd;
- u_int8_t blocking;
+ //u_int8_t blocking;
struct sockaddr_nl local;
struct sockaddr_nl peer;
};
-typedef struct lttctl_peer_msg {
- char trace_name[NAME_MAX];
- enum trace_op op;
- union {
- enum trace_mode mode;
- } args;
-} lttctl_peer_msg_t;
-
+typedef struct lttctl_resp_msg {
+ int err;
+} lttctl_resp_msg_t;
-struct lttctl_handle *lttctl_create_handle(u_int32_t flags);
+struct lttctl_handle *lttctl_create_handle(void);
int lttctl_destroy_handle(struct lttctl_handle *h);
-int lttctl_create_trace(char *name, enum trace_mode mode);
+int lttctl_create_trace(const struct lttctl_handle *h,
+ char *name, enum trace_mode mode, unsigned subbuf_size, unsigned n_subbufs);
-int lttctl_destroy_trace(char *name);
+int lttctl_destroy_trace(const struct lttctl_handle *handle, char *name);
-int lttctl_start(char *name);
+int lttctl_start(const struct lttctl_handle *handle, char *name);
-int lttctl_stop(char *name);
+int lttctl_stop(const struct lttctl_handle *handle, char *name);
#define LTTCTLM_BASE 0x10
#define LTTCTLM_CONTROL (LTTCTLM_BASE + 1) /* LTT control message */