*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
*/
#include <babeltrace/babeltrace.h>
int i, stream_id;
gpointer *event_id_ptr;
unsigned long event_id;
- struct trace_collection *tc = iter->parent.ctx->tc;
+ struct trace_collection *tc;
+
+ if (!iter || !callback)
+ return -EINVAL;
+ tc = iter->parent.ctx->tc;
for (i = 0; i < tc->array->len; i++) {
struct ctf_trace *tin;
struct trace_descriptor *td_read;
}
static
-struct ctf_event_definition *extract_ctf_stream_event(struct ctf_stream *stream)
+int extract_ctf_stream_event(struct ctf_stream_definition *stream,
+ struct bt_ctf_event *event)
{
struct ctf_stream_declaration *stream_class = stream->stream_class;
- struct ctf_event *event_class;
- struct ctf_event_definition *event;
+ struct ctf_event_declaration *event_class;
uint64_t id = stream->event_id;
if (id >= stream_class->events_by_id->len) {
fprintf(stderr, "[error] Event id %" PRIu64 " is outside range.\n", id);
- return NULL;
+ return -1;
}
- event = g_ptr_array_index(stream->events_by_id, id);
- if (!event) {
+ event->parent = g_ptr_array_index(stream->events_by_id, id);
+ if (!event->parent) {
fprintf(stderr, "[error] Event id %" PRIu64 " is unknown.\n", id);
- return NULL;
+ return -1;
}
event_class = g_ptr_array_index(stream_class->events_by_id, id);
if (!event_class) {
fprintf(stderr, "[error] Event id %" PRIu64 " is unknown.\n", id);
- return NULL;
+ return -1;
}
- return event;
+ return 0;
}
void process_callbacks(struct bt_ctf_iter *iter,
- struct ctf_stream *stream)
+ struct ctf_stream_definition *stream)
{
struct bt_stream_callbacks *bt_stream_cb;
struct bt_callback_chain *bt_chain;
enum bt_cb_ret ret;
struct bt_ctf_event ctf_data;
- ctf_data.event = extract_ctf_stream_event(stream);
- ctf_data.stream = stream;
+ assert(iter && stream);
+
+ ret = extract_ctf_stream_event(stream, &ctf_data);
+ if (ret)
+ goto end;
/* process all events callback first */
if (iter->main_callbacks.callback) {