X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fgraph%2Fnotification%2Fnotification.c;h=3338780d435efd68f90dbeb8da25d30621b1032c;hb=e2f7325d1e58710ee928373592adcee466f93d06;hp=57da6c333c3ae95c80d24babd2eec2bcff210ccf;hpb=f42867e2d049c1e7cad50cd097290a3adef8d54c;p=babeltrace.git diff --git a/lib/graph/notification/notification.c b/lib/graph/notification/notification.c index 57da6c33..3338780d 100644 --- a/lib/graph/notification/notification.c +++ b/lib/graph/notification/notification.c @@ -1,10 +1,7 @@ /* - * Babeltrace Plug-in Notification - * + * Copyright 2017-2018 Philippe Proulx * Copyright 2016 Jérémie Galarneau * - * Author: Jérémie Galarneau - * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights @@ -27,14 +24,16 @@ #define BT_LOG_TAG "NOTIF" #include +#include #include +#include #include #include BT_ASSERT_PRE_FUNC static inline void _init_seq_num(struct bt_notification *notification) { - notification->seq_num = -1ULL; + notification->seq_num = UINT64_C(-1); } #ifdef BT_DEV_MODE @@ -46,17 +45,31 @@ static inline void _init_seq_num(struct bt_notification *notification) BT_HIDDEN void bt_notification_init(struct bt_notification *notification, enum bt_notification_type type, - bt_object_release_func release) + bt_object_release_func release, + struct bt_graph *graph) { - BT_ASSERT(type >= 0 && type < BT_NOTIFICATION_TYPE_NR); + BT_ASSERT(type >= 0 && + type <= BT_NOTIFICATION_TYPE_PACKET_END); notification->type = type; init_seq_num(notification); - bt_object_init(¬ification->base, release); + bt_object_init_shared(¬ification->base, release); + notification->graph = graph; + + if (graph) { + bt_graph_add_notification(graph, notification); + } } enum bt_notification_type bt_notification_get_type( - struct bt_notification *notification) + const struct bt_notification *notification) { BT_ASSERT_PRE_NON_NULL(notification, "Notification"); return notification->type; } + +BT_HIDDEN +void bt_notification_unlink_graph(struct bt_notification *notif) +{ + BT_ASSERT(notif); + notif->graph = NULL; +}