Add a new module implementing a queue data structure.
Since the functions are simple make them inline functions. This provides a small code size saving.
This commit is contained in:
32
tests/app_queue_test/Makefile
Normal file
32
tests/app_queue_test/Makefile
Normal file
@@ -0,0 +1,32 @@
|
||||
# The TARGET variable determines what target system the application is
|
||||
# compiled for. It either refers to an XN file in the source directories
|
||||
# or a valid argument for the --target option when compiling
|
||||
TARGET = XP-SKC-SU1
|
||||
|
||||
# The APP_NAME variable determines the name of the final .xe file. It should
|
||||
# not include the .xe postfix. If left blank the name will default to
|
||||
# the project name
|
||||
APP_NAME = app_queue_test
|
||||
|
||||
# The USED_MODULES variable lists other module used by the application.
|
||||
USED_MODULES = module_queue
|
||||
|
||||
# The flags passed to xcc when building the application
|
||||
# You can also set the following to override flags for a particular language:
|
||||
# XCC_XC_FLAGS, XCC_C_FLAGS, XCC_ASM_FLAGS, XCC_CPP_FLAGS
|
||||
# If the variable XCC_MAP_FLAGS is set it overrides the flags passed to
|
||||
# xcc for the final link (mapping) stage.
|
||||
XCC_FLAGS = -O0 -g
|
||||
|
||||
# The VERBOSE variable, if set to 1, enables verbose output from the make system.
|
||||
VERBOSE = 0
|
||||
|
||||
# This change to the module path is so that this application can be in the
|
||||
# tests sub-directory in it's git repo
|
||||
ifeq ($(notdir $(abspath ..)),tests)
|
||||
PATHSEP = $(if $(findstring Windows, $(OS))$(findstring WINDOWS,$(OS)),;,:)
|
||||
XMOS_MODULE_PATH := $(XMOS_MODULE_PATH)$(PATHSEP)../../..
|
||||
endif
|
||||
|
||||
XMOS_MAKE_PATH ?= ../..
|
||||
-include $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.common
|
||||
32
tests/app_queue_test/src/app_queue_test.xc
Normal file
32
tests/app_queue_test/src/app_queue_test.xc
Normal file
@@ -0,0 +1,32 @@
|
||||
#include "queue.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
#define VERIFY(x) do { if (!(x)) _Exit(1); } while(0)
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
||||
|
||||
int main()
|
||||
{
|
||||
queue_t q;
|
||||
unsigned array[4];
|
||||
const unsigned size = ARRAY_SIZE(array);
|
||||
queue_init(q, size);
|
||||
VERIFY(queue_is_empty(q));
|
||||
VERIFY(!queue_is_full(q));
|
||||
VERIFY(queue_items(q) == 0);
|
||||
VERIFY(queue_space(q) == size);
|
||||
queue_push_word(q, array, 1);
|
||||
VERIFY(!queue_is_empty(q));
|
||||
VERIFY(queue_items(q) == 1);
|
||||
VERIFY(queue_space(q) == size - 1);
|
||||
for (unsigned i = 1; i < size; i++) {
|
||||
queue_push_word(q, array, i + 1);
|
||||
}
|
||||
VERIFY(queue_is_full(q));
|
||||
VERIFY(queue_items(q) == size);
|
||||
VERIFY(queue_space(q) == 0);
|
||||
for (unsigned i = 0; i < size; i++) {
|
||||
VERIFY(queue_pop_word(q, array) == i + 1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user