X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/060df5ea7c632b1ac8cc8aac1fb59758165c2084..6d2010ae8f7a6078e10b361c6962983bab233e0f:/tools/tests/xnu_quick_test/atomic_fifo_queue_test.c diff --git a/tools/tests/xnu_quick_test/atomic_fifo_queue_test.c b/tools/tests/xnu_quick_test/atomic_fifo_queue_test.c new file mode 100644 index 000000000..06a0e809f --- /dev/null +++ b/tools/tests/xnu_quick_test/atomic_fifo_queue_test.c @@ -0,0 +1,33 @@ +#if defined(i386) || defined(__x86_64__) + +#include +#include +#include +#include + +typedef struct { + void *next; + char *str; +} QueueNode; + +int atomic_fifo_queue_test( void *the_argp ) { + OSFifoQueueHead head = OS_ATOMIC_FIFO_QUEUE_INIT; + char *str1 = "String 1", *str2 = "String 2"; + QueueNode node1 = { 0, str1 }; + OSAtomicFifoEnqueue(&head, &node1, 0); + QueueNode node2 = { 0, str2 }; + OSAtomicFifoEnqueue(&head, &node2, 0); + QueueNode *node_ptr = OSAtomicFifoDequeue(&head, 0); + if( strcmp(node_ptr->str, str1) != 0 ) { + warnx("OSAtomicFifoDequeue returned incorrect string. Expected %s, got %s", str1, node_ptr->str); + return 1; + } + node_ptr = OSAtomicFifoDequeue(&head, 0); + if( strcmp(node_ptr->str, str2) != 0 ) { + warnx("OSAtomicFifoDequeue returned incorrect string. Expected %s, got %s", str2, node_ptr->str); + return 1; + } + return 0; +} + +#endif