X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf-ir%2Fstream-class.h;h=bc1ece1dc6a6cc93d24d8a8dd6fee53f7700f5a6;hb=8bf65fbd5d6164488f1912f88ef632a58598ed2f;hp=71b10679ceac550ed0a1f4f197489daf7300cf3d;hpb=af181248caf97d9c4e22182181f70a16b40ffead;p=babeltrace.git diff --git a/include/babeltrace/ctf-ir/stream-class.h b/include/babeltrace/ctf-ir/stream-class.h index 71b10679..bc1ece1d 100644 --- a/include/babeltrace/ctf-ir/stream-class.h +++ b/include/babeltrace/ctf-ir/stream-class.h @@ -30,6 +30,9 @@ * http://www.efficios.com/ctf */ +#include +#include + #ifdef __cplusplus extern "C" { #endif @@ -52,12 +55,27 @@ struct bt_ctf_clock; * - uint64_t packet_size * - uint64_t events_discarded * - * @param name Stream name. + * A stream class's event header is a structure initialized the following + * fields: + * - uint32_t id + * - uint64_t timestamp + * + * @param name Stream name, NULL to create an unnamed stream class. * * Returns an allocated stream class on success, NULL on error. */ extern struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name); +/* + * bt_ctf_stream_class_get_trace: Get a stream class' associated trace. + * + * @param stream_class Stream class. + * + * Returns the stream class' associated trace, NULL on error. + */ +extern struct bt_ctf_trace *bt_ctf_stream_class_get_trace( + struct bt_ctf_stream_class *stream_class); + /* * bt_ctf_stream_class_get_name: Get a stream class' name. * @@ -69,29 +87,24 @@ extern const char *bt_ctf_stream_class_get_name( struct bt_ctf_stream_class *stream_class); /* - * bt_ctf_stream_class_get_clock: get the clock associated with a stream class. + * bt_ctf_stream_class_set_name: Set a stream class' name. * * @param stream_class Stream class. * - * Returns a clock instance, NULL on error. + * Returns 0 on success, a negative value on error. */ -extern struct bt_ctf_clock *bt_ctf_stream_class_get_clock( - struct bt_ctf_stream_class *stream_class); +extern int bt_ctf_stream_class_set_name( + struct bt_ctf_stream_class *stream_class, const char *name); /* - * bt_ctf_stream_class_set_clock: assign a clock to a stream class. - * - * Assign a clock to a stream class. This clock will be sampled each time an - * event is appended to an instance of this stream class. + * bt_ctf_stream_class_get_clock: get the clock associated with a stream class. * * @param stream_class Stream class. - * @param clock Clock to assign to the provided stream class. * - * Returns 0 on success, a negative value on error. + * Returns a clock instance, NULL on error. */ -extern int bt_ctf_stream_class_set_clock( - struct bt_ctf_stream_class *stream_class, - struct bt_ctf_clock *clock); +extern struct bt_ctf_clock *bt_ctf_stream_class_get_clock( + struct bt_ctf_stream_class *stream_class); /* * bt_ctf_stream_class_get_id: Get a stream class' id. @@ -127,6 +140,9 @@ extern int bt_ctf_stream_class_set_id( * The stream class will share the ownership of "event_class" by incrementing * its reference count. * + * Note that an event class may only be added to one stream class. It + * also becomes immutable. + * * @param stream_class Stream class. * @param event_class Event class to add to the provided stream class. * @@ -170,6 +186,18 @@ extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class( extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_name( struct bt_ctf_stream_class *stream_class, const char *name); +/* + * bt_ctf_stream_class_get_event_class_by_name: Get stream class event class by + * ID. + * + * @param stream_class Stream class. + * @param id Event class ID. + * + * Returns event class, NULL on error. + */ +extern struct bt_ctf_event_class *bt_ctf_stream_class_get_event_class_by_id( + struct bt_ctf_stream_class *stream_class, uint32_t id); + /* * bt_ctf_stream_class_get_packet_context_type: get the stream class' packet * context type. @@ -194,6 +222,31 @@ extern int bt_ctf_stream_class_set_packet_context_type( struct bt_ctf_stream_class *stream_class, struct bt_ctf_field_type *packet_context_type); +/* + * bt_ctf_stream_class_get_event_header_type: get the stream class' + * event header type. + * + * @param stream_class Stream class. + * + * Returns the stream event header's type (a structure), NULL on error. + */ +extern struct bt_ctf_field_type * +bt_ctf_stream_class_get_event_header_type( + struct bt_ctf_stream_class *stream_class); + +/* + * bt_ctf_stream_class_set_event_header_type: set the stream class' + * event header type. + * + * @param stream_class Stream class. + * @param event_header_type Event header type (must be a structure). + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_stream_class_set_event_header_type( + struct bt_ctf_stream_class *stream_class, + struct bt_ctf_field_type *event_header_type); + /* * bt_ctf_stream_class_get_event_context_type: get the stream class' * event context type. @@ -220,21 +273,18 @@ extern int bt_ctf_stream_class_set_event_context_type( struct bt_ctf_field_type *event_context_type); /* - * bt_ctf_stream_class_get and bt_ctf_stream_class_put: increment and - * decrement the stream class' reference count. + * bt_ctf_stream_class_visit: visit a stream class' event classes. * - * These functions ensure that the stream class won't be destroyed while it - * is in use. The same number of get and put (plus one extra put to - * release the initial reference done at creation) have to be done to - * destroy a stream class. + * Call visitor on each of a stream class' event classes. * - * When the stream class' reference count is decremented to 0 by a - * bt_ctf_stream_class_put, the stream class is freed. + * @param stream_class Stream class instance. + * @param visitor visitor function to invoke for each stream class. + * @param data user data passed to the visitor. * - * @param stream_class Stream class. + * Returns 0 on success, a negative value on error. */ -extern void bt_ctf_stream_class_get(struct bt_ctf_stream_class *stream_class); -extern void bt_ctf_stream_class_put(struct bt_ctf_stream_class *stream_class); +extern int bt_ctf_stream_class_visit(struct bt_ctf_stream_class *stream_class, + bt_ctf_ir_visitor visitor, void *data); #ifdef __cplusplus }