From bff7fc17fe44e19b3876f12398c2e6b14f7766fd Mon Sep 17 00:00:00 2001 From: Allan Stephens Date: Thu, 4 Jun 2015 09:02:25 -0400 Subject: [PATCH] Begin consolidation of arch-independent private nanokernel APIs Introduces nano_internal.h, which will declare all architecture- independent non-public nanokernel APIs. This file is automatically incorporated by the various architecture-specific include files for non-public nanokernel APIs, and will not normally be included directly by any other files. Change-Id: I9f3de812a5747cc720fa0ff739007315e8d07dd9 Signed-off-by: Allan Stephens --- arch/arc/core/context.c | 1 - arch/arc/include/nanok.h | 1 + arch/arm/core/nanocontext.c | 1 - arch/arm/include/nanok.h | 1 + arch/x86/core/nanocontext.c | 1 - arch/x86/include/nanok.h | 2 +- include/arch/private.h | 24 ----------- kernel/microkernel/include/minik.h | 2 +- .../{nanocontextentry.h => nano_internal.h} | 40 +++++++++++++++---- kernel/nanokernel/nano_context.c | 1 - 10 files changed, 37 insertions(+), 37 deletions(-) rename kernel/nanokernel/include/{nanocontextentry.h => nano_internal.h} (67%) diff --git a/arch/arc/core/context.c b/arch/arc/core/context.c index 59557ea2c30..77a3a61bcaf 100644 --- a/arch/arc/core/context.c +++ b/arch/arc/core/context.c @@ -40,7 +40,6 @@ #include #include #include -#include #include /* initial stack frame */ diff --git a/arch/arc/include/nanok.h b/arch/arc/include/nanok.h index f092240a641..a3bd0ef1212 100644 --- a/arch/arc/include/nanok.h +++ b/arch/arc/include/nanok.h @@ -53,6 +53,7 @@ extern "C" { #include #ifndef _ASMLANGUAGE +#include <../../../kernel/nanokernel/include/nano_internal.h> #include #endif diff --git a/arch/arm/core/nanocontext.c b/arch/arm/core/nanocontext.c index 5d01482826c..dcf7d7344b5 100644 --- a/arch/arm/core/nanocontext.c +++ b/arch/arm/core/nanocontext.c @@ -40,7 +40,6 @@ architecture. #include #include #include -#include tNANO _nanokernel = {0}; diff --git a/arch/arm/include/nanok.h b/arch/arm/include/nanok.h index 90746e60f54..cfaa88860b6 100644 --- a/arch/arm/include/nanok.h +++ b/arch/arm/include/nanok.h @@ -53,6 +53,7 @@ extern "C" { #include #ifndef _ASMLANGUAGE +#include <../../../kernel/nanokernel/include/nano_internal.h> #include #endif diff --git a/arch/x86/core/nanocontext.c b/arch/x86/core/nanocontext.c index 7859acfa7bf..330b6fe3d14 100644 --- a/arch/x86/core/nanocontext.c +++ b/arch/x86/core/nanocontext.c @@ -44,7 +44,6 @@ processor architecture. #include #include #include -#include /* the one and only nanokernel control structure */ diff --git a/arch/x86/include/nanok.h b/arch/x86/include/nanok.h index 7e62ae920aa..9953428d979 100644 --- a/arch/x86/include/nanok.h +++ b/arch/x86/include/nanok.h @@ -53,7 +53,7 @@ offsets.o module. #ifndef _ASMLANGUAGE #include /* public nanokernel API */ -#include /* private IA-32 definitions */ +#include <../../../kernel/nanokernel/include/nano_internal.h> #include /* * This pulls in the code shared with the IDT generator that actually diff --git a/include/arch/private.h b/include/arch/private.h index e6bcee1ac12..4726b8f7045 100644 --- a/include/arch/private.h +++ b/include/arch/private.h @@ -44,30 +44,6 @@ struct _nano_queue { void *tail; }; -/* context entry point function typedef */ - -typedef void *_ContextArg; -typedef void (*_ContextEntry)(_ContextArg arg1, - _ContextArg arg2, - _ContextArg arg3); - -/* Private API to set and clear essential fiber/task flag */ -extern void _context_essential_set(void); -extern void _context_essential_clear(void); - -/* Private API to clean up when a context is aborted */ -#if defined(CONFIG_CONTEXT_MONITOR) -extern void _context_exit(tCCS *ccs); -#else -#define _context_exit(ccs) \ - do {/* nothing */ \ - } while (0) -#endif /* CONFIG_CONTEXT_MONITOR */ - -struct nano_lifo; - -extern void *_nano_fiber_lifo_get_panic(struct nano_lifo *lifo); - #ifdef __cplusplus } #endif diff --git a/kernel/microkernel/include/minik.h b/kernel/microkernel/include/minik.h index 551b653725d..b64e2f443d2 100644 --- a/kernel/microkernel/include/minik.h +++ b/kernel/microkernel/include/minik.h @@ -36,7 +36,7 @@ #include #include #include -#include +#include #define KERNEL_ENTRY(A) _k_task_call(A) diff --git a/kernel/nanokernel/include/nanocontextentry.h b/kernel/nanokernel/include/nano_internal.h similarity index 67% rename from kernel/nanokernel/include/nanocontextentry.h rename to kernel/nanokernel/include/nano_internal.h index 8b6edb8f13b..0197e17c13c 100644 --- a/kernel/nanokernel/include/nanocontextentry.h +++ b/kernel/nanokernel/include/nano_internal.h @@ -1,4 +1,4 @@ -/* nanocontextentry.h - context entry wrapper definitions */ +/* architecture-independent private nanokernel APIs */ /* * Copyright (c) 2010-2012, 2014-2015 Wind River Systems, Inc. @@ -32,13 +32,11 @@ /* DESCRIPTION -This module provides definitions for a wrapper +This file contains private nanokernel APIs that are not architecture-specific. */ -#ifndef _NANOCONTEXTENTRY__H_ -#define _NANOCONTEXTENTRY__H_ - -#include +#ifndef _NANO_INTERNAL__H_ +#define _NANO_INTERNAL__H_ #ifndef _ASMLANGUAGE @@ -46,15 +44,43 @@ This module provides definitions for a wrapper extern "C" { #endif +/* context entry point declarations */ + +typedef void *_ContextArg; +typedef void (*_ContextEntry)(_ContextArg arg1, + _ContextArg arg2, + _ContextArg arg3); + extern void _context_entry(_ContextEntry, _ContextArg, _ContextArg, _ContextArg); +/* set and clear essential fiber/task flag */ + +extern void _context_essential_set(void); +extern void _context_essential_clear(void); + +/* clean up when a context is aborted */ + +#if defined(CONFIG_CONTEXT_MONITOR) +extern void _context_exit(tCCS *ccs); +#else +#define _context_exit(ccs) \ + do {/* nothing */ \ + } while (0) +#endif /* CONFIG_CONTEXT_MONITOR */ + +/* special nanokernel object APIs */ + +struct nano_lifo; + +extern void *_nano_fiber_lifo_get_panic(struct nano_lifo *lifo); + #ifdef __cplusplus } #endif #endif /* _ASMLANGUAGE */ -#endif /* _NANOCONTEXTENTRY__H_ */ +#endif /* _NANO_INTERNAL__H_ */ diff --git a/kernel/nanokernel/nano_context.c b/kernel/nanokernel/nano_context.c index d3f862df976..fbd6c8b8951 100644 --- a/kernel/nanokernel/nano_context.c +++ b/kernel/nanokernel/nano_context.c @@ -40,7 +40,6 @@ tasks or fibers. #include #include -#include #include /*******************************************************************************