-
Notifications
You must be signed in to change notification settings - Fork 215
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix #285, Refactor OSAL to avoid inclusion of C files
Use separate source files and CMake-based source selection based on feature configuration, rather than using the C preprocessor for including/excluding different OSAL function groups. Refactor all implementation units to provide a separate header file for each functional group/subsystem. Remove "static" declaration on internal helper functions so they can be invoked from unit test.
- Loading branch information
Showing
445 changed files
with
21,961 additions
and
14,334 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,197 @@ | ||
########################################################################## | ||
# | ||
# Default configuration options for OSAL | ||
# | ||
# This file specifies the default values for various compile-time options | ||
# supported by OSAL. These options can be further tuned by the specific | ||
# OSAL and BSP selection, as well as the user application. | ||
# | ||
# NOTE: | ||
# The defaults in this file should _not_ be directly modified for tuning. | ||
# | ||
# Instead, use the "OSAL_CONFIGURATION_FILE" CMake variable to define | ||
# a custom file which can override/modify the configuration for the items | ||
# which require tuning. | ||
# | ||
########################################################################## | ||
|
||
|
||
############################################################## | ||
# Code/Feature Selection Options for the OSAL implementation | ||
############################################################## | ||
|
||
|
||
# OSAL_CONFIG_INCLUDE_NETWORK | ||
# ---------------------------------- | ||
# | ||
# Whether to include the Network API | ||
# | ||
# If set TRUE, the the socket abstraction (if applicable on the platform) | ||
# will be included. If set FALSE, then all calls to the network API will | ||
# return OS_ERR_NOT_IMPLEMENTED. | ||
# | ||
# This can be set FALSE for platforms which do not have a network or | ||
# IP stack available, or to save code space if the application does | ||
# not use network resources. | ||
# | ||
set(OSAL_CONFIG_INCLUDE_NETWORK FALSE) | ||
|
||
|
||
# | ||
# OSAL_CONFIG_INCLUDE_DYNAMIC_LOADER | ||
# ---------------------------------- | ||
# | ||
# Whether to include the capability of loading dynamic code objects | ||
# | ||
# This is normally set TRUE to support modularized applications on | ||
# platforms which have this capability. | ||
# | ||
# For deployments which are always statically linked, this may be set | ||
# FALSE for a smaller library size and reduced linking requirements. | ||
# | ||
set(OSAL_CONFIG_INCLUDE_DYNAMIC_LOADER TRUE) | ||
|
||
|
||
# | ||
# OSAL_CONFIG_INCLUDE_STATIC_LOADER | ||
# ---------------------------------- | ||
# | ||
# Whether to include a compatibility "loader" for statically-linked objects | ||
# | ||
# This feature allows applications normally written for dynamic module loading | ||
# operate transparently in a static link environment. If this is set TRUE, | ||
# then the application must supply an object named "OS_STATIC_SYMBOL_TABLE" that | ||
# contains the names and addresses of statically-linked symbols that should | ||
# be known to the lookup/load functions. | ||
# | ||
# Note that modules "loaded" using this abstraction are still assigned a | ||
# module ID and still require a slot in the module table even though | ||
# no actual runtime loading is performed (see OSAL_CONFIG_MAX_MODULES). | ||
# | ||
set(OSAL_CONFIG_INCLUDE_STATIC_LOADER TRUE) | ||
|
||
# | ||
# OSAL_CONFIG_DEBUG_PERMISSIVE_MODE | ||
# ---------------------------------- | ||
# | ||
# The OSAL_CONFIG_DEBUG_PERMISSIVE_MODE option controls how privileged operations | ||
# are handled by the OSAL in the event that the user does not have sufficient permission. | ||
# In particular this applies to task priorities and message queues. | ||
# | ||
# If set FALSE, then all permissions are enforced, and a failure due to lack of permission | ||
# will cause a failure of the overall operation, which is passed back to the application. | ||
# | ||
# If set to TRUE, this will treat some errors non-fatal and enable a graceful fallback, | ||
# allowing the overall operation to complete in a reduced form. This makes the | ||
# OSAL library compatible with a non-root (normal user mode) environment. | ||
# | ||
# In the PC-Linux/Posix build, this means: | ||
# - A message queue deeper than the maximum system limit will be silently truncated | ||
# to the maximum system limit (no error). | ||
# - If the user does not have permission to create elevated priority tasks, then the tasks will | ||
# be created at the default priority (no error). | ||
# | ||
set(OSAL_CONFIG_DEBUG_PERMISSIVE_MODE TRUE) | ||
|
||
# | ||
# OSAL_CONFIG_DEBUG_PRINTF | ||
# ---------------------------------- | ||
# | ||
# Controls inclusion of OS_DEBUG statements in the code | ||
# | ||
# If set FALSE, all OS_DEBUG statements are compiled out. | ||
# | ||
# If set TRUE, all the "OS_DEBUG" statements will be compiled in and displayed | ||
# on the debug console. The statements may still be suppressed at runtime. | ||
# | ||
set(OSAL_CONFIG_DEBUG_PRINTF TRUE) | ||
|
||
|
||
############################################# | ||
# Resource Limits for the OS API | ||
############################################# | ||
|
||
# The maximum number of concurrently-running tasks to support | ||
set(OSAL_CONFIG_MAX_TASKS 64) | ||
|
||
# The maximum number of queues to support | ||
set(OSAL_CONFIG_MAX_QUEUES 64) | ||
|
||
# The maximum number of counting semaphores to support | ||
set(OSAL_CONFIG_MAX_COUNT_SEMAPHORES 20) | ||
|
||
# The maximum number of binary semaphores to support | ||
set(OSAL_CONFIG_MAX_BIN_SEMAPHORES 20) | ||
|
||
# The maximum number of mutexes to support | ||
set(OSAL_CONFIG_MAX_MUTEXES 20) | ||
|
||
# The maximum number of loadable modules to support | ||
# Note that emulating module loading for statically-linked objects also | ||
# requires a slot in this table, as it still assigns an OSAL ID. | ||
set(OSAL_CONFIG_MAX_MODULES 20) | ||
|
||
# The maximum number of time base objects (reference for timers) | ||
set(OSAL_CONFIG_MAX_TIMEBASES 5) | ||
|
||
# The maximum number of user timers / app callbacks that can be registered | ||
set(OSAL_CONFIG_MAX_TIMERS 10) | ||
|
||
# The maximum number of concurrently open file descriptors to support | ||
set(OSAL_CONFIG_MAX_NUM_OPEN_FILES 50) | ||
|
||
# The maximum number of concurrently open directory descriptors to support | ||
set(OSAL_CONFIG_MAX_NUM_OPEN_DIRS 4) | ||
|
||
# The maximum number of file systems that can be managed by OSAL | ||
set(OSAL_CONFIG_MAX_FILE_SYSTEMS 14) | ||
|
||
# The maximum length for a file name, including any extension | ||
# (This does not include the directory part) | ||
set(OSAL_CONFIG_MAX_FILE_NAME 20) | ||
|
||
# Maximum length for an virtual path name (virtual directory + file) | ||
set(OSAL_CONFIG_MAX_PATH_LEN 64) | ||
|
||
# Maximum length allowed for a object (task,queue....) name | ||
set(OSAL_CONFIG_MAX_API_NAME 20) | ||
|
||
# Maximum length of a symbol name for OS_SymbolLookup() | ||
set(OSAL_CONFIG_MAX_SYM_LEN 64) | ||
|
||
# Maximum length of a network socket address | ||
# This is only relevant if network support is included, and the | ||
# required length depends on the address families in use | ||
set(OSAL_CONFIG_SOCKADDR_MAX_LEN 28) | ||
|
||
# Maximum length of a single message produced by OS_printf() | ||
set(OSAL_CONFIG_PRINTF_BUFFER_SIZE 172) | ||
|
||
# Maximum number of OS_printf() messages that will be buffered | ||
set(OSAL_CONFIG_PRINTF_BUFFER_DEPTH 100) | ||
|
||
# Priority level of a console output helper task | ||
# | ||
# Set logically low (high number) to maximize performance. | ||
# - Messages from OS_printf() may show on the console with some delay | ||
# but should have minimal impact to real time tasks. | ||
# | ||
# Set logically high (low number) for debugging | ||
# - Messages from OS_printf() will have more timely output, but may | ||
# adversely impact real time tasks. | ||
set(OSAL_CONFIG_UTILITYTASK_PRIORITY 245) | ||
|
||
# Stack size of console output task. | ||
# | ||
# This applies to RTOS layers with precise stack control, | ||
# normally not necessary to change this unless the task implementation | ||
# changes. | ||
set(OSAL_CONFIG_UTILITYTASK_STACK_SIZE 2048) | ||
|
||
# The size of a command that can be passed to the underlying OS | ||
set(OSAL_CONFIG_MAX_CMD_LEN 1000) | ||
|
||
# The maximum depth of an OSAL message queue. | ||
# On some implementations this may affect the overall OSAL memory footprint | ||
# so it may be beneficial to set this limit accordingly. | ||
set(OSAL_CONFIG_QUEUE_MAX_DEPTH 50) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/* | ||
* Configuration file Operating System Abstraction Layer | ||
* | ||
* NOTE: this file was automatically generated by CMake from | ||
* @CMAKE_CURRENT_SOURCE_DIR@/osconfig.h.in | ||
* | ||
* Any direct modifications to the generated copy will | ||
* be overwritten each time CMake executes. | ||
*/ | ||
|
||
#ifndef INCLUDE_OSCONFIG_H_ | ||
#define INCLUDE_OSCONFIG_H_ | ||
|
||
/* | ||
* OSAL feature selection options from build config | ||
*/ | ||
#cmakedefine OSAL_CONFIG_INCLUDE_DYNAMIC_LOADER | ||
#cmakedefine OSAL_CONFIG_INCLUDE_NETWORK | ||
#cmakedefine OSAL_CONFIG_INCLUDE_STATIC_LOADER | ||
#cmakedefine OSAL_CONFIG_DEBUG_PRINTF | ||
#cmakedefine OSAL_CONFIG_DEBUG_PERMISSIVE_MODE | ||
|
||
/* | ||
* OSAL resource limits from build config | ||
* | ||
* (These are prefixed with OS_ for compatibility | ||
* with existing code referencing these symbols) | ||
*/ | ||
#define OS_MAX_TASKS @OSAL_CONFIG_MAX_TASKS@ | ||
#define OS_MAX_QUEUES @OSAL_CONFIG_MAX_QUEUES@ | ||
#define OS_MAX_COUNT_SEMAPHORES @OSAL_CONFIG_MAX_COUNT_SEMAPHORES@ | ||
#define OS_MAX_BIN_SEMAPHORES @OSAL_CONFIG_MAX_BIN_SEMAPHORES@ | ||
#define OS_MAX_MUTEXES @OSAL_CONFIG_MAX_MUTEXES@ | ||
#define OS_MAX_MODULES @OSAL_CONFIG_MAX_MODULES@ | ||
#define OS_MAX_TIMEBASES @OSAL_CONFIG_MAX_TIMEBASES@ | ||
#define OS_MAX_TIMERS @OSAL_CONFIG_MAX_TIMERS@ | ||
#define OS_MAX_NUM_OPEN_FILES @OSAL_CONFIG_MAX_NUM_OPEN_FILES@ | ||
#define OS_MAX_NUM_OPEN_DIRS @OSAL_CONFIG_MAX_NUM_OPEN_DIRS@ | ||
#define OS_MAX_FILE_SYSTEMS @OSAL_CONFIG_MAX_FILE_SYSTEMS@ | ||
#define OS_MAX_SYM_LEN @OSAL_CONFIG_MAX_SYM_LEN@ | ||
#define OS_MAX_FILE_NAME @OSAL_CONFIG_MAX_FILE_NAME@ | ||
#define OS_MAX_PATH_LEN @OSAL_CONFIG_MAX_PATH_LEN@ | ||
#define OS_MAX_API_NAME @OSAL_CONFIG_MAX_API_NAME@ | ||
#define OS_SOCKADDR_MAX_LEN @OSAL_CONFIG_SOCKADDR_MAX_LEN@ | ||
#define OS_BUFFER_SIZE @OSAL_CONFIG_PRINTF_BUFFER_SIZE@ | ||
#define OS_BUFFER_MSG_DEPTH @OSAL_CONFIG_PRINTF_BUFFER_DEPTH@ | ||
#define OS_UTILITYTASK_PRIORITY @OSAL_CONFIG_UTILITYTASK_PRIORITY@ | ||
#define OS_UTILITYTASK_STACK_SIZE @OSAL_CONFIG_UTILITYTASK_STACK_SIZE@ | ||
#define OS_MAX_CMD_LEN @OSAL_CONFIG_MAX_CMD_LEN@ | ||
#define OS_QUEUE_MAX_DEPTH @OSAL_CONFIG_QUEUE_MAX_DEPTH@ | ||
#define OS_SHELL_CMD_INPUT_FILE_NAME "@OSAL_CONFIG_SHELL_CMD_INPUT_FILE_NAME@" | ||
#define OS_PRINTF_CONSOLE_NAME "@OSAL_CONFIG_PRINTF_CONSOLE_NAME@" | ||
|
||
/* | ||
* OSAL fixed resource limits | ||
* | ||
* The resource limits here are not user-configurable, but | ||
* may be changed in a future revision of OSAL, so it is | ||
* still present in osconfig.h along with the others. | ||
*/ | ||
#define OS_MAX_CONSOLES 1 | ||
|
||
|
||
#endif /* INCLUDE_OSCONFIG_H_ */ |
Oops, something went wrong.