#include <ust/kcompat/kcompat.h>
#define SOCK_DIR "/tmp/ust-app-socks"
+#define USER_TMP_DIR "/tmp"
+#define USER_SOCK_DIR_BASE "ust-socks-"
+#define USER_SOCK_DIR USER_TMP_DIR "/" USER_SOCK_DIR_BASE
struct ustcomm_sock {
- struct list_head list;
+ struct cds_list_head list;
int fd;
int epoll_fd;
};
STOP_TRACE,
};
+struct ustcomm_single_field {
+ char *field;
+ char data[USTCOMM_DATA_SIZE];
+};
+
struct ustcomm_channel_info {
+ char *trace;
char *channel;
unsigned int subbuf_size;
unsigned int subbuf_num;
};
struct ustcomm_buffer_info {
+ char *trace;
char *channel;
int ch_cpu;
pid_t pid;
};
struct ustcomm_marker_info {
+ char *trace;
char *channel;
char *marker;
char data[USTCOMM_DATA_SIZE];
};
-struct ustcomm_sock_path {
- char *sock_path;
- char data[USTCOMM_DATA_SIZE];
-};
-
struct ustcomm_pidunique {
s64 pidunique;
};
};
/* Ensure directory existence, usefull for unix sockets */
-extern int ensure_dir_exists(const char *dir);
+extern int ensure_dir_exists(const char *dir, mode_t mode);
/* Create and delete sockets */
extern struct ustcomm_sock * ustcomm_init_sock(int fd, int epoll_fd,
- struct list_head *list);
+ struct cds_list_head *list);
extern void ustcomm_del_sock(struct ustcomm_sock *sock, int keep_in_epoll);
/* Create and delete named sockets */
char *res_data);
extern int ustcomm_request_consumer(pid_t pid, const char *channel);
+
+/* Returns the current users socket directory, must be freed */
+extern char *ustcomm_user_sock_dir(void);
extern int ustcomm_connect_app(pid_t pid, int *app_fd);
extern int ustcomm_connect_path(const char *path, int *connection_fd);
(size_t) (long)(struct_ptr)->data - (long)(struct_ptr) + (offset)
/* Packing and unpacking functions, making life easier */
+extern int ustcomm_pack_single_field(struct ustcomm_header *header,
+ struct ustcomm_single_field *sf,
+ const char *trace);
+
+extern int ustcomm_unpack_single_field(struct ustcomm_single_field *sf);
+
extern int ustcomm_pack_channel_info(struct ustcomm_header *header,
struct ustcomm_channel_info *ch_inf,
+ const char *trace,
const char *channel);
extern int ustcomm_unpack_channel_info(struct ustcomm_channel_info *ch_inf);
extern int ustcomm_pack_buffer_info(struct ustcomm_header *header,
struct ustcomm_buffer_info *buf_inf,
+ const char *trace,
const char *channel,
int channel_cpu);
extern int ustcomm_pack_marker_info(struct ustcomm_header *header,
struct ustcomm_marker_info *marker_inf,
+ const char *trace,
const char *channel,
const char *marker);
extern int ustcomm_unpack_marker_info(struct ustcomm_marker_info *marker_inf);
-
-extern int ustcomm_pack_sock_path(struct ustcomm_header *header,
- struct ustcomm_sock_path *sock_path_inf,
- const char *socket_path);
-
-extern int ustcomm_unpack_sock_path(struct ustcomm_sock_path *sock_path_inf);
-
-/* Packing and requesting functions */
-extern int ustcomm_send_ch_req(int sock, char *channel, int command,
- struct ustcomm_header *recv_header,
- char *recv_data);
-
-extern int ustcomm_send_buf_req(int sock, char *channel, int ch_cpu,
- int command,
- struct ustcomm_header *recv_header,
- char *recv_data);
-
#endif /* USTCOMM_H */