+/* String serialising functions, printf straight into a buffer */
+#define USTCOMM_POISON_PTR (void *)0x19831018
+
+extern char * ustcomm_print_data(char *data_field, int field_size,
+ int *offset, const char *format, ...);
+extern char * ustcomm_restore_ptr(char *ptr, char *data_field,
+ int data_field_size);
+
+#define COMPUTE_MSG_SIZE(struct_ptr, offset) \
+ (size_t) (long)(struct_ptr)->data - (long)(struct_ptr) + (offset)
+
+/* Packing and unpacking functions, making life easier */
+extern int ustcomm_pack_trace_info(struct ustcomm_header *header,
+ struct ustcomm_trace_info *trace_inf,
+ const char *trace);
+
+extern int ustcomm_unpack_trace_info(struct ustcomm_trace_info *trace_inf);
+
+extern int ustcomm_pack_channel_info(struct ustcomm_header *header,
+ struct ustcomm_channel_info *ch_inf,
+ 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 *channel,
+ int channel_cpu);
+
+extern int ustcomm_unpack_buffer_info(struct ustcomm_buffer_info *buf_inf);
+
+extern int ustcomm_pack_marker_info(struct ustcomm_header *header,
+ struct ustcomm_marker_info *marker_inf,
+ 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);