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 <allan.stephens@windriver.com>
This commit is contained in:
Allan Stephens 2015-06-04 09:02:25 -04:00 committed by Anas Nashif
parent 69555e8efd
commit bff7fc17fe
10 changed files with 37 additions and 37 deletions

View file

@ -40,7 +40,6 @@
#include <arch/cpu.h> #include <arch/cpu.h>
#include <toolchain.h> #include <toolchain.h>
#include <nanok.h> #include <nanok.h>
#include <nanocontextentry.h>
#include <offsets.h> #include <offsets.h>
/* initial stack frame */ /* initial stack frame */

View file

@ -53,6 +53,7 @@ extern "C" {
#include <arch/cpu.h> #include <arch/cpu.h>
#ifndef _ASMLANGUAGE #ifndef _ASMLANGUAGE
#include <../../../kernel/nanokernel/include/nano_internal.h>
#include <stdint.h> #include <stdint.h>
#endif #endif

View file

@ -40,7 +40,6 @@ architecture.
#include <arch/cpu.h> #include <arch/cpu.h>
#include <toolchain.h> #include <toolchain.h>
#include <nanok.h> #include <nanok.h>
#include <nanocontextentry.h>
tNANO _nanokernel = {0}; tNANO _nanokernel = {0};

View file

@ -53,6 +53,7 @@ extern "C" {
#include <arch/cpu.h> #include <arch/cpu.h>
#ifndef _ASMLANGUAGE #ifndef _ASMLANGUAGE
#include <../../../kernel/nanokernel/include/nano_internal.h>
#include <stdint.h> #include <stdint.h>
#endif #endif

View file

@ -44,7 +44,6 @@ processor architecture.
#include <toolchain.h> #include <toolchain.h>
#include <sections.h> #include <sections.h>
#include <nanok.h> #include <nanok.h>
#include <nanocontextentry.h>
/* the one and only nanokernel control structure */ /* the one and only nanokernel control structure */

View file

@ -53,7 +53,7 @@ offsets.o module.
#ifndef _ASMLANGUAGE #ifndef _ASMLANGUAGE
#include <nanokernel.h> /* public nanokernel API */ #include <nanokernel.h> /* public nanokernel API */
#include <arch/x86/arch.h> /* private IA-32 definitions */ #include <../../../kernel/nanokernel/include/nano_internal.h>
#include <stdint.h> #include <stdint.h>
/* /*
* This pulls in the code shared with the IDT generator that actually * This pulls in the code shared with the IDT generator that actually

View file

@ -44,30 +44,6 @@ struct _nano_queue {
void *tail; 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 #ifdef __cplusplus
} }
#endif #endif

View file

@ -36,7 +36,7 @@
#include <stddef.h> #include <stddef.h>
#include <kernel_struct.h> #include <kernel_struct.h>
#include <kernel_main.h> #include <kernel_main.h>
#include <clock_vars.h> #include <nanok.h>
#define KERNEL_ENTRY(A) _k_task_call(A) #define KERNEL_ENTRY(A) _k_task_call(A)

View file

@ -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. * Copyright (c) 2010-2012, 2014-2015 Wind River Systems, Inc.
@ -32,13 +32,11 @@
/* /*
DESCRIPTION DESCRIPTION
This module provides definitions for a wrapper This file contains private nanokernel APIs that are not architecture-specific.
*/ */
#ifndef _NANOCONTEXTENTRY__H_ #ifndef _NANO_INTERNAL__H_
#define _NANOCONTEXTENTRY__H_ #define _NANO_INTERNAL__H_
#include <nanok.h>
#ifndef _ASMLANGUAGE #ifndef _ASMLANGUAGE
@ -46,15 +44,43 @@ This module provides definitions for a wrapper
extern "C" { extern "C" {
#endif #endif
/* context entry point declarations */
typedef void *_ContextArg;
typedef void (*_ContextEntry)(_ContextArg arg1,
_ContextArg arg2,
_ContextArg arg3);
extern void _context_entry(_ContextEntry, extern void _context_entry(_ContextEntry,
_ContextArg, _ContextArg,
_ContextArg, _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 #ifdef __cplusplus
} }
#endif #endif
#endif /* _ASMLANGUAGE */ #endif /* _ASMLANGUAGE */
#endif /* _NANOCONTEXTENTRY__H_ */ #endif /* _NANO_INTERNAL__H_ */

View file

@ -40,7 +40,6 @@ tasks or fibers.
#include <sections.h> #include <sections.h>
#include <nanok.h> #include <nanok.h>
#include <nanocontextentry.h>
#include <misc/printk.h> #include <misc/printk.h>
/******************************************************************************* /*******************************************************************************