Commit | Line | Data |
---|---|---|
b70d57a1 | 1 | /* |
0235b0db | 2 | * SPDX-License-Identifier: MIT |
b70d57a1 | 3 | * |
0235b0db | 4 | * Copyright (c) 2019 Philippe Proulx <pproulx@efficios.com> |
b70d57a1 PP |
5 | */ |
6 | ||
7 | #define BT_LOG_TAG "LIB/INTERRUPTER" | |
8 | #include "lib/logging.h" | |
9 | ||
10 | #include <stdlib.h> | |
11 | #include <stdint.h> | |
12 | #include <babeltrace2/babeltrace.h> | |
13 | ||
14 | #include "interrupter.h" | |
d98421f2 | 15 | #include "lib/assert-cond.h" |
b70d57a1 PP |
16 | |
17 | static | |
18 | void destroy_interrupter(struct bt_object *obj) | |
19 | { | |
20 | g_free(obj); | |
21 | } | |
22 | ||
1353b066 SM |
23 | BT_EXPORT |
24 | struct bt_interrupter *bt_interrupter_create(void) | |
b70d57a1 PP |
25 | { |
26 | struct bt_interrupter *intr = g_new0(struct bt_interrupter, 1); | |
27 | ||
17f3083a SM |
28 | BT_ASSERT_PRE_NO_ERROR(); |
29 | ||
b70d57a1 PP |
30 | if (!intr) { |
31 | BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one interrupter."); | |
32 | goto error; | |
33 | } | |
34 | ||
35 | bt_object_init_shared(&intr->base, destroy_interrupter); | |
36 | goto end; | |
37 | ||
38 | error: | |
39 | BT_OBJECT_PUT_REF_AND_RESET(intr); | |
40 | ||
41 | end: | |
42 | return intr; | |
43 | } | |
44 | ||
1353b066 | 45 | BT_EXPORT |
b70d57a1 PP |
46 | void bt_interrupter_set(struct bt_interrupter *intr) |
47 | { | |
d5b13b9b | 48 | BT_ASSERT_PRE_INTR_NON_NULL(intr); |
b70d57a1 PP |
49 | intr->is_set = true; |
50 | } | |
51 | ||
1353b066 | 52 | BT_EXPORT |
b70d57a1 PP |
53 | void bt_interrupter_reset(struct bt_interrupter *intr) |
54 | { | |
d5b13b9b | 55 | BT_ASSERT_PRE_INTR_NON_NULL(intr); |
b70d57a1 PP |
56 | intr->is_set = false; |
57 | } | |
58 | ||
1353b066 | 59 | BT_EXPORT |
b70d57a1 PP |
60 | bt_bool bt_interrupter_is_set(const struct bt_interrupter *intr) |
61 | { | |
d5b13b9b | 62 | BT_ASSERT_PRE_INTR_NON_NULL(intr); |
b70d57a1 PP |
63 | return (bt_bool) intr->is_set; |
64 | } | |
65 | ||
1353b066 | 66 | BT_EXPORT |
b70d57a1 PP |
67 | void bt_interrupter_get_ref(const struct bt_interrupter *intr) |
68 | { | |
69 | bt_object_get_ref(intr); | |
70 | } | |
71 | ||
1353b066 | 72 | BT_EXPORT |
b70d57a1 PP |
73 | void bt_interrupter_put_ref(const struct bt_interrupter *intr) |
74 | { | |
75 | bt_object_put_ref(intr); | |
76 | } |