#include "tap.h"
+struct my_tls_struct {
+ int int1;
+ char char1;
+ void *void1;
+};
+
+static DEFINE_URCU_TLS(int, my_tls_int);
+static DEFINE_URCU_TLS(struct my_tls_struct, my_tls_struct);
+
static void test_lfstack(void)
{
struct cds_lfs_stack s;
cds_lfs_init(&s);
- if (!cds_lfs_empty(&s))
- fail("cds_lfs_empty");
- else
- ok(1, "cds_lfs_empty");
+ ok(cds_lfs_empty(&s), "cds_lfs_empty");
}
static void test_wfstack(void)
struct cds_wfs_stack s;
cds_wfs_init(&s);
- if (!cds_wfs_empty(&s))
- fail("cds_lfs_empty");
- else
- ok(1, "cds_lfs_empty");
+ ok(cds_wfs_empty(&s), "cds_lfs_empty");
}
static void test_wfcqueue(void)
struct cds_wfcq_tail tail;
cds_wfcq_init(&head, &tail);
- if (!cds_wfcq_empty(&head, &tail))
- fail("cds_wfcq_empty");
- else
- ok(1, "cds_wfcq_empty");
+ ok(cds_wfcq_empty(&head, &tail), "cds_wfcq_empty");
+}
+
+static
+void test_build_cds_list_head_init(void)
+{
+ /* Test that the CDS_LIST_HEAD_INIT macro builds correctly. */
+ struct struct_with_list {
+ struct cds_list_head head;
+ };
+
+ struct struct_with_list list = {
+ .head = CDS_LIST_HEAD_INIT(list.head),
+ };
+}
+
+static
+void test_urcu_tls(void)
+{
+ URCU_TLS(my_tls_int) = 1;
+ URCU_TLS(my_tls_struct).int1 = 1;
+ URCU_TLS(my_tls_struct).char1 = 'a';
+ URCU_TLS(my_tls_struct).void1 = NULL;
}
int main(void)
{
- /* Need at least 1 test to make a valid TAP test plan. */
plan_tests(3);
- ok(1, "dummy");
test_lfstack();
test_wfstack();
test_wfcqueue();
+ test_build_cds_list_head_init();
+ test_urcu_tls();
return exit_status();
}