From 0a45fa17086d4556b7cb4ea0a9f53894197bc897 Mon Sep 17 00:00:00 2001 From: Vic Yang Date: Thu, 2 May 2013 00:37:07 +0800 Subject: Pthread-based emulator for unit testing This is the first version of pthread-based RTOS emulator. With this, we will be able to test high-level modules entirely on the host machine. BUG=chrome-os-partner:19325 TEST='make runtests' and see tests passing. BRANCH=None Change-Id: I1f5fcd76aa84bdb46c7d35c5e60ae5d92fd3a319 Signed-off-by: Vic Yang Reviewed-on: https://gerrit.chromium.org/gerrit/49954 Reviewed-by: Vincent Palatin --- board/host/board.c | 12 ++++++++++++ board/host/board.h | 21 +++++++++++++++++++++ board/host/build.mk | 11 +++++++++++ board/host/chipset.c | 34 ++++++++++++++++++++++++++++++++++ board/host/ec.tasklist | 23 +++++++++++++++++++++++ 5 files changed, 101 insertions(+) create mode 100644 board/host/board.c create mode 100644 board/host/board.h create mode 100644 board/host/build.mk create mode 100644 board/host/chipset.c create mode 100644 board/host/ec.tasklist (limited to 'board/host') diff --git a/board/host/board.c b/board/host/board.c new file mode 100644 index 0000000000..a3b8c28aca --- /dev/null +++ b/board/host/board.c @@ -0,0 +1,12 @@ +/* Copyright (c) 2013 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. + */ +/* Emulator board-specific configuration */ + +#include "board.h" +#include "gpio.h" + +const struct gpio_info gpio_list[GPIO_COUNT] = { + {"EC_INT", 0, 0, 0, 0}, +}; diff --git a/board/host/board.h b/board/host/board.h new file mode 100644 index 0000000000..de7049bd9d --- /dev/null +++ b/board/host/board.h @@ -0,0 +1,21 @@ +/* Copyright (c) 2013 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. + */ + +/* Emulator board configuration */ + +#ifndef __BOARD_H +#define __BOARD_H + +#define CONFIG_HOST_EMU +#define CONFIG_HOSTCMD +#define CONFIG_KEYBOARD_PROTOCOL_MKBP + +enum gpio_signal { + GPIO_EC_INT, + + GPIO_COUNT +}; + +#endif /* __BOARD_H */ diff --git a/board/host/build.mk b/board/host/build.mk new file mode 100644 index 0000000000..28525a7679 --- /dev/null +++ b/board/host/build.mk @@ -0,0 +1,11 @@ +# -*- makefile -*- +# Copyright (c) 2013 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. +# +# Board specific files build +# + +CHIP:=host + +board-y=board.o chipset.o diff --git a/board/host/chipset.c b/board/host/chipset.c new file mode 100644 index 0000000000..b06e293778 --- /dev/null +++ b/board/host/chipset.c @@ -0,0 +1,34 @@ +/* Copyright (c) 2013 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. + */ + +/* Chipset module for emulator */ + +#include +#include "chipset.h" +#include "common.h" +#include "task.h" + +test_mockable void chipset_reset(int cold_reset) +{ + fprintf(stderr, "Chipset reset!\n"); +} + +test_mockable void chipset_force_shutdown(void) +{ + /* Do nothing */ +} + +#ifdef HAS_TASK_CHIPSET +test_mockable int chipset_in_state(int state_mask) +{ + return state_mask & CHIPSET_STATE_SOFT_OFF; +} + +test_mockable void chipset_task(void) +{ + while (1) + task_wait_event(-1); +} +#endif diff --git a/board/host/ec.tasklist b/board/host/ec.tasklist new file mode 100644 index 0000000000..d0597f8544 --- /dev/null +++ b/board/host/ec.tasklist @@ -0,0 +1,23 @@ +/* Copyright (c) 2013 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 + */ + +#define CONFIG_TASK_LIST \ + TASK_ALWAYS(HOOKS, hook_task, NULL, TASK_STACK_SIZE) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \ + TASK_ALWAYS(HOSTCMD, host_command_task, NULL, TASK_STACK_SIZE) -- cgit v1.2.1