summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile16
-rw-r--r--Makefile.toolchain3
-rw-r--r--board/nucleo-f072rb/ec.tasklist3
-rw-r--r--board/stm32l476g-eval/ec.tasklist3
-rw-r--r--common/build.mk5
-rw-r--r--core/cortex-m/task.c4
-rw-r--r--core/cortex-m0/task.c4
-rw-r--r--core/host/task.c3
-rw-r--r--cts/cts.tasklist22
-rw-r--r--include/config.h11
-rw-r--r--include/task_id.h12
11 files changed, 72 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index ac296ad6dd..3b5c4e70d4 100644
--- a/Makefile
+++ b/Makefile
@@ -58,6 +58,9 @@ UC_PROJECT:=$(call uppercase,$(PROJECT))
# the board/project/chip/core variables are defined, since some of the configs
# are dependent on particular configurations.
includes=include core/$(CORE)/include $(dirs) $(out) test
+ifdef CTS_MODULE
+includes+=cts/$(CTS_MODULE) cts
+endif
ifeq "$(TEST_BUILD)" "y"
_tsk_lst_file:=ec.tasklist
_tsk_lst:=$(shell echo "CONFIG_TASK_LIST CONFIG_TEST_TASK_LIST" | \
@@ -66,17 +69,20 @@ ifeq "$(TEST_BUILD)" "y"
-D"TASK_TEST(n, r, d, s)=n" -imacros $(_tsk_lst_file) \
-imacros $(PROJECT).tasklist)
else ifdef CTS_MODULE
- _tsk_lst_file:=$(PROJECT).tasklist
- _tsk_lst:=$(shell echo "CONFIG_TASK_LIST" | $(CPP) -P \
- -I$(BDIR) -D"TASK_NOTEST(n, r, d, s)=n" -D"TASK_CTS(n, r, d, s)=n" \
- -D"TASK_ALWAYS(n, r, d, s)=n" -imacros $(_tsk_lst_file))
+ _tsk_lst_file:=ec.tasklist
+ _tsk_lst:=$(shell echo "CONFIG_TASK_LIST CONFIG_CTS_TASK_LIST" | \
+ $(CPP) -P -I cts/$(CTS_MODULE) -Icts -I$(BDIR) \
+ -D"TASK_NOTEST(n, r, d, s)=n" \
+ -D"TASK_ALWAYS(n, r, d, s)=n" \
+ -imacros $(_tsk_lst_file) \
+ -imacros cts.tasklist)
else
_tsk_lst_file:=$(PROJECT).tasklist
_tsk_lst:=$(shell echo "CONFIG_TASK_LIST" | $(CPP) -P \
-I$(BDIR) -D"TASK_NOTEST(n, r, d, s)=n" \
- -D"TASK_CTS(n, r, d, s)=" \
-D"TASK_ALWAYS(n, r, d, s)=n" -imacros $(_tsk_lst_file))
endif
+
_tsk_cfg:=$(foreach t,$(_tsk_lst) ,HAS_TASK_$(t))
CPPFLAGS+=$(foreach t,$(_tsk_cfg),-D$(t))
_flag_cfg:=$(shell $(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) -I$(BDIR) \
diff --git a/Makefile.toolchain b/Makefile.toolchain
index 26e9c57690..d611c1bc94 100644
--- a/Makefile.toolchain
+++ b/Makefile.toolchain
@@ -35,7 +35,8 @@ CFLAGS_DEBUG= -g
CFLAGS_INCLUDE=$(foreach i,$(includes),-I$(i) ) -I.
CFLAGS_TEST=$(if $(TEST_BUILD),-DTEST_BUILD \
-DTEST_TASKFILE=$(PROJECT).tasklist,) \
- $(if $(CTS_MODULE), -DCTS_MODULE=$(CTS_MODULE)) \
+ $(if $(CTS_MODULE), -DCTS_MODULE=$(CTS_MODULE) \
+ -DCTS_TASKFILE=cts.tasklist) \
$(if $(EMU_BUILD),-DEMU_BUILD) \
$(if $($(PROJECT)-scale),-DTEST_TIME_SCALE=$($(PROJECT)-scale)) \
-DTEST_$(PROJECT) -DTEST_$(UC_PROJECT)
diff --git a/board/nucleo-f072rb/ec.tasklist b/board/nucleo-f072rb/ec.tasklist
index c9b8950f71..1944ef3874 100644
--- a/board/nucleo-f072rb/ec.tasklist
+++ b/board/nucleo-f072rb/ec.tasklist
@@ -18,5 +18,4 @@
*/
#define CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_CTS(CTS, cts_task, NULL, TASK_STACK_SIZE)
+ TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE)
diff --git a/board/stm32l476g-eval/ec.tasklist b/board/stm32l476g-eval/ec.tasklist
index be8895ba73..abe3ced689 100644
--- a/board/stm32l476g-eval/ec.tasklist
+++ b/board/stm32l476g-eval/ec.tasklist
@@ -18,6 +18,5 @@
*/
#define CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \
- TASK_CTS(CTS, cts_task, NULL, TASK_STACK_SIZE)
+ TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE)
diff --git a/common/build.mk b/common/build.mk
index da386b85ab..1ebc48e63b 100644
--- a/common/build.mk
+++ b/common/build.mk
@@ -101,4 +101,9 @@ common-$(HAS_TASK_PDCMD)+=host_command_pd.o
common-$(HAS_TASK_KEYSCAN)+=keyboard_scan.o
common-$(HAS_TASK_LIGHTBAR)+=lb_common.o lightbar.o
common-$(HAS_TASK_MOTIONSENSE)+=motion_sense.o
+
+ifeq ($(CTS_MODULE),)
common-$(TEST_BUILD)+=test_util.o
+else
+common-y+=test_util.o
+endif \ No newline at end of file
diff --git a/core/cortex-m/task.c b/core/cortex-m/task.c
index 91b9e62caa..ae2882ac10 100644
--- a/core/cortex-m/task.c
+++ b/core/cortex-m/task.c
@@ -36,6 +36,7 @@ typedef union {
void __idle(void);
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+CONFIG_CTS_TASK_LIST
#undef TASK
/* Task names for easier debugging */
@@ -44,6 +45,7 @@ static const char * const task_names[] = {
"<< idle >>",
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+ CONFIG_CTS_TASK_LIST
};
#undef TASK
@@ -117,6 +119,7 @@ static const struct {
TASK(IDLE, __idle, 0, IDLE_TASK_STACK_SIZE)
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+ CONFIG_CTS_TASK_LIST
};
#undef TASK
@@ -133,6 +136,7 @@ uint8_t task_stacks[0
TASK(IDLE, __idle, 0, IDLE_TASK_STACK_SIZE)
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+ CONFIG_CTS_TASK_LIST
] __aligned(8);
#undef TASK
diff --git a/core/cortex-m0/task.c b/core/cortex-m0/task.c
index b013fe82f4..5d219a5149 100644
--- a/core/cortex-m0/task.c
+++ b/core/cortex-m0/task.c
@@ -36,6 +36,7 @@ typedef union {
void __idle(void);
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+CONFIG_CTS_TASK_LIST
#undef TASK
/* Task names for easier debugging */
@@ -44,6 +45,7 @@ static const char * const task_names[] = {
"<< idle >>",
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+ CONFIG_CTS_TASK_LIST
};
#undef TASK
@@ -97,6 +99,7 @@ static const struct {
TASK(IDLE, __idle, 0, IDLE_TASK_STACK_SIZE)
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+ CONFIG_CTS_TASK_LIST
};
#undef TASK
@@ -113,6 +116,7 @@ uint8_t task_stacks[0
TASK(IDLE, __idle, 0, IDLE_TASK_STACK_SIZE)
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+ CONFIG_CTS_TASK_LIST
] __aligned(8);
#undef TASK
diff --git a/core/host/task.c b/core/host/task.c
index 8e85679890..7a17e13e89 100644
--- a/core/host/task.c
+++ b/core/host/task.c
@@ -61,6 +61,7 @@ static void task_enable_all_tasks_callback(void);
#define TASK(n, r, d, s) void r(void *);
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+CONFIG_CTS_TASK_LIST
#undef TASK
/* Idle task */
@@ -80,6 +81,7 @@ struct task_args task_info[TASK_ID_COUNT] = {
{__idle, NULL},
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+ CONFIG_CTS_TASK_LIST
{_run_test, NULL},
};
#undef TASK
@@ -89,6 +91,7 @@ static const char * const task_names[] = {
"<< idle >>",
CONFIG_TASK_LIST
CONFIG_TEST_TASK_LIST
+ CONFIG_CTS_TASK_LIST
"<< test runner >>",
};
#undef TASK
diff --git a/cts/cts.tasklist b/cts/cts.tasklist
new file mode 100644
index 0000000000..73e959684f
--- /dev/null
+++ b/cts/cts.tasklist
@@ -0,0 +1,22 @@
+/* Copyright 2016 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/**
+ * List of enabled tasks in the priority order
+ *
+ * The first one has the lowest priority.
+ *
+ * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and
+ * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries,
+ * where :
+ * 'n' in the name of the task
+ * 'r' in the main routine of the task
+ * 'd' in an opaque parameter passed to the routine at startup
+ * 's' is the stack size in bytes; must be a multiple of 8
+ */
+
+/* Default task list for suites which don't define its own */
+#define CONFIG_CTS_TASK_LIST \
+ TASK_ALWAYS(CTS, cts_task, NULL, TASK_STACK_SIZE)
diff --git a/include/config.h b/include/config.h
index bf4cf994b1..d1de4f5c79 100644
--- a/include/config.h
+++ b/include/config.h
@@ -1715,6 +1715,17 @@
#undef CONFIG_TEST_TASK_LIST
/*
+ * List of tasks used by CTS
+ *
+ * cts.tasklist contains tasks run only for CTS. These tasks are added to the
+ * tasks registered in ec.tasklist with higher priority.
+ *
+ * If a CTS suite does not define its own cts.tasklist, the common list is used
+ * (i.e. cts/cts.tasklist).
+ */
+#undef CONFIG_CTS_TASK_LIST
+
+/*
* Enable task profiling.
*
* Boards may #undef this to reduce image size and RAM usage.
diff --git a/include/task_id.h b/include/task_id.h
index 34f24f097d..bcd0b61c85 100644
--- a/include/task_id.h
+++ b/include/task_id.h
@@ -17,10 +17,8 @@
#define CONFIG_TEST_TASK_LIST
#endif
-#ifdef CTS_MODULE
-#define TASK_CTS TASK
-#else
-#define TASK_CTS(n, r, d, s)
+#ifndef CTS_MODULE
+#define CONFIG_CTS_TASK_LIST
#endif
#define TASK_ALWAYS TASK
@@ -28,10 +26,14 @@
/* define the name of the header containing the list of tasks */
#define STRINGIFY0(name) #name
#define STRINGIFY(name) STRINGIFY0(name)
+#define CTS_TASK_LIST STRINGIFY(CTS_TASKFILE)
#define TEST_TASK_LIST STRINGIFY(TEST_TASKFILE)
#define BOARD_TASK_LIST STRINGIFY(BOARD_TASKFILE)
#include BOARD_TASK_LIST
+#ifdef CTS_MODULE
+#include CTS_TASK_LIST
+#endif
#ifdef TEST_BUILD
#include TEST_TASK_LIST
#endif
@@ -53,6 +55,8 @@ enum {
CONFIG_TASK_LIST
/* CONFIG_TEST_TASK_LIST is a macro from the TEST_TASK_LIST file */
CONFIG_TEST_TASK_LIST
+ /* For CTS tasks */
+ CONFIG_CTS_TASK_LIST
#ifdef EMU_BUILD
TASK_ID_TEST_RUNNER,
#endif