Eliminate nanokernel/task sub-directory
Relocates start_task() so that it appears in the main microkernel directory, alongside its complementary routine abort_task(); this corrects a long-standing anomaly in which this microkernel- specific routine appeared in the nanokernel portion of the tree. With this move, the start_task.c file and its parent nanokernel/task sub-directory no longer serve any purpose and are removed. (Note that no changes are required for ARC architecture support, which does not support microkernel capabilities and doesn't use this sub-directory.) Change-Id: I973e1c32c9a8ddcacdc08159069ae7cdfea0f107 Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
This commit is contained in:
parent
ceeab10167
commit
3c8fb4ac7a
4 changed files with 49 additions and 98 deletions
|
@ -50,13 +50,8 @@ nkernel_SRC_NANOKERNEL_y = $(strip \
|
|||
${vBASE}/misc/printk.c \
|
||||
)
|
||||
|
||||
nkernel_SRC_MICROKERNEL_y = $(strip \
|
||||
${vBASE}/kernel/nanokernel/task/start_task.c \
|
||||
)
|
||||
|
||||
nkernel_SRC += $(strip \
|
||||
${nkernel_SRC_NANOKERNEL_${CONFIG_NANOKERNEL}} \
|
||||
${nkernel_SRC_MICROKERNEL_${CONFIG_MICROKERNEL}} \
|
||||
)
|
||||
|
||||
ifeq ($(CONFIG_ENHANCED_SECURITY),y)
|
||||
|
|
|
@ -45,7 +45,6 @@ nkernel_PATH = $(strip \
|
|||
|
||||
nkernel_PATH_y = $(strip \
|
||||
${vBASE}/arch/${vARCH}/task \
|
||||
${vBASE}/kernel/nanokernel/task \
|
||||
)
|
||||
|
||||
nkernel_PATH += ${nkernel_PATH_${CONFIG_MICROKERNEL}}
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
#include <minik.h>
|
||||
#include <nanok.h>
|
||||
#include <ktask.h>
|
||||
|
||||
#include <start_task_arch.h>
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -181,6 +181,54 @@ void set_state_bit(
|
|||
#endif
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* start_task - initialize and start a task
|
||||
*
|
||||
* RETURNS: N/A
|
||||
*/
|
||||
|
||||
void start_task(struct k_proc *X, /* ptr to task control block */
|
||||
void (*func)(void) /* entry point for task */
|
||||
)
|
||||
{
|
||||
unsigned int contextOptions;
|
||||
void *pNewContext;
|
||||
|
||||
/* Note: the field X->worksize now represents the task size in bytes */
|
||||
|
||||
#ifdef CONFIG_INIT_STACKS
|
||||
k_memset(X->workspace, 0xaa, X->worksize);
|
||||
#endif
|
||||
|
||||
contextOptions = 0;
|
||||
_START_TASK_ARCH(X, &contextOptions);
|
||||
|
||||
/*
|
||||
* The 'func' argument to _NewContext() represents the entry point of
|
||||
* the
|
||||
* kernel task. The 'parameter1', 'parameter2', & 'parameter3'
|
||||
* arguments
|
||||
* are not applicable to such tasks. A 'priority' of -1 indicates that
|
||||
* the context is a task, rather than a fiber.
|
||||
*/
|
||||
|
||||
pNewContext = (tCCS *)_NewContext((char *)X->workspace, /* pStackMem */
|
||||
X->worksize, /* stackSize */
|
||||
(_ContextEntry)func, /* pEntry */
|
||||
(void *)0, /* parameter1 */
|
||||
(void *)0, /* parameter2 */
|
||||
(void *)0, /* parameter3 */
|
||||
-1, /* priority */
|
||||
contextOptions /* options */
|
||||
);
|
||||
|
||||
X->workspace = (char *)pNewContext;
|
||||
X->fabort = NULL;
|
||||
|
||||
reset_state_bit(X, TF_STOP | TF_TERM);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* abort_task - abort a task
|
||||
|
|
|
@ -1,91 +0,0 @@
|
|||
/* start_task.c - arch-agnostic nanokernel APIs to start a task */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2010-2014 Wind River Systems, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1) Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2) Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3) Neither the name of Wind River Systems nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
This module contains the single primitive 'start_task' which is utilized
|
||||
by the microkernel to "start a task".
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_MICROKERNEL
|
||||
|
||||
#include <start_task_arch.h>
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* start_task - initialize and start a task
|
||||
*
|
||||
* RETURNS: N/A
|
||||
*/
|
||||
|
||||
void start_task(struct k_proc *X, /* ptr to task control block */
|
||||
void (*func)(void) /* entry point for task */
|
||||
)
|
||||
{
|
||||
unsigned int contextOptions;
|
||||
void *pNewContext;
|
||||
|
||||
/* Note: the field X->worksize now represents the task size in bytes */
|
||||
|
||||
#ifdef CONFIG_INIT_STACKS
|
||||
k_memset(X->workspace, 0xaa, X->worksize);
|
||||
#endif
|
||||
|
||||
contextOptions = 0;
|
||||
_START_TASK_ARCH(X, &contextOptions);
|
||||
|
||||
/*
|
||||
* The 'func' argument to _NewContext() represents the entry point of
|
||||
* the
|
||||
* kernel task. The 'parameter1', 'parameter2', & 'parameter3'
|
||||
* arguments
|
||||
* are not applicable to such tasks. A 'priority' of -1 indicates that
|
||||
* the context is a task, rather than a fiber.
|
||||
*/
|
||||
|
||||
pNewContext = (tCCS *)_NewContext((char *)X->workspace, /* pStackMem */
|
||||
X->worksize, /* stackSize */
|
||||
(_ContextEntry)func, /* pEntry */
|
||||
(void *)0, /* parameter1 */
|
||||
(void *)0, /* parameter2 */
|
||||
(void *)0, /* parameter3 */
|
||||
-1, /* priority */
|
||||
contextOptions /* options */
|
||||
);
|
||||
|
||||
X->workspace = (char *)pNewContext;
|
||||
X->fabort = NULL;
|
||||
|
||||
reset_state_bit(X, TF_STOP | TF_TERM);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MICROKERNEL */
|
Loading…
Add table
Add a link
Reference in a new issue