Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

osal Integration candidate: 2021-06-01 #1058

Merged
merged 38 commits into from
Jun 8, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
81a9fbb
Fix #961, update OSAL Config Guide link
rosspeters6 Apr 14, 2021
652cf50
Fix #984, Document OS_ObjectIdToArrayIndex as public
skliper May 19, 2021
841b0f6
Fix #913, include doxygen targets locally
jphickey May 20, 2021
d4af445
Fix #1035, Rename CodeQL cFE and add Duplicate Job
arielswalker May 20, 2021
e54acfc
Fix #1024, check misc API return codes
jphickey May 12, 2021
78e87f7
Fix #1009, add missing clock retcode tests
jphickey May 12, 2021
d06680e
Fix #1048, filter only whole words for keyword match
jphickey May 24, 2021
e8add95
Fix #1048, also filter C++-style comments
jphickey May 25, 2021
5ca529b
Fix #1008, resolve discrepancies between binsem API and unit tests
jphickey May 21, 2021
c831aeb
Fix #1010, resolve discrepancies between common API and unit tests
jphickey May 21, 2021
715501d
Fix #1011, resolve discrepancies between countsem API and unit tests
jphickey May 21, 2021
92e56e6
Fix #1012, resolve discrepancies between dir API and unit tests
jphickey May 21, 2021
b420e8d
Fix #1016, resolve discrepancies between module API and unit tests
jphickey May 21, 2021
40b4a89
Fix #1017, resolve discrepancies between mutex API and unit tests
jphickey May 21, 2021
fce66b5
Fix #1018, resolve discrepancies between queue API and unit tests
jphickey May 20, 2021
a987a20
Fix #1021, resolve discrepancies between task API and unit tests
jphickey May 20, 2021
fc0482b
Fix #1022, resolve discrepancies between timebase API and unit tests
jphickey May 24, 2021
1e0025b
Fix #1023, resolve discrepancies between timer API and unit tests
jphickey May 25, 2021
8e8115a
Merge pull request #1033 from jphickey/fix-913-localize-doxygen
astrogeco May 27, 2021
5edc586
Merge pull request #1031 from skliper/fix984-os_objectidtoarrayindex_…
astrogeco May 27, 2021
a72eeb9
HOTFIX IC 2021-06-01, update osal apiguide warning filename
jphickey May 28, 2021
b041927
Merge pull request #1053 from jphickey/fix-1023-timer-api-retcodes
astrogeco Jun 1, 2021
d5c8fc4
Merge pull request #1040 from jphickey/fix-1008-binsem-api-retcodes
astrogeco Jun 1, 2021
b6511e9
Merge pull request #1029 from jphickey/fix-1009-clock-retcodes
astrogeco Jun 1, 2021
0783a86
Merge pull request #1046 from jphickey/fix-1010-common-api-retcodes
astrogeco Jun 1, 2021
5a10433
Merge pull request #1041 from jphickey/fix-1011-countsem-api-retcodes
astrogeco Jun 1, 2021
d2837bf
Merge pull request #1045 from jphickey/fix-1012-dir-api-retcodes
astrogeco Jun 1, 2021
976d1fa
Merge pull request #1043 from jphickey/fix-1016-module-api-retcodes
astrogeco Jun 1, 2021
0c8dbe0
Merge pull request #1044 from jphickey/fix-1017-mutex-api-retcodes
astrogeco Jun 1, 2021
b339de0
Merge pull request #1038 from jphickey/fix-1018-queue-api-retcodes
astrogeco Jun 1, 2021
f3c3692
Merge pull request #1037 from jphickey/fix-1021-task-api-retcodes
astrogeco Jun 2, 2021
494f2f4
Merge pull request #1051 from jphickey/fix-1022-timebase-api-retcodes
astrogeco Jun 2, 2021
36a2923
Merge pull request #1030 from jphickey/fix-1024-api-test-retcodes
astrogeco Jun 2, 2021
d57e3d6
Merge pull request #1039 from ArielSAdamsNASA/fix-1035-rename-cfe-dup…
astrogeco Jun 2, 2021
d5d370a
Merge pull request #1049 from jphickey/fix-1048-extern-strings
astrogeco Jun 2, 2021
269e6c1
Merge pull request #962 from rosspeters6/fix-961-update-osal-config-g…
astrogeco Jun 2, 2021
b210b27
HOTFIX 2021-06-01: Update cFS version doxygen refs
jphickey Jun 8, 2021
4e377ef
IC:2021-06-01, Bump to v5.1.0-rc1+dev501
astrogeco Jun 8, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: "CodeQL Analysis"
name: "CodeQL cFE Build Analysis"

on:
push:
Expand All @@ -11,8 +11,23 @@ env:
BUILDTYPE: release

jobs:
#Checks for duplicate actions. Skips push actions if there is a matching or duplicate pull-request action.
check-for-duplicates:
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@master
with:
concurrent_skipping: 'same_content'
skip_after_successful_duplicate: 'true'
do_not_skip: '["pull_request", "workflow_dispatch", "schedule"]'

CodeQL-Build:
needs: check-for-duplicates
if: ${{ needs.check-for-duplicates.outputs.should_skip != 'true' }}
runs-on: ubuntu-18.04
timeout-minutes: 15

Expand Down
12 changes: 8 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ project(OSAL C)
# part of the open source release.
# CAUTION: The API between the OSAL and the low level implementation and/or BSP
# is not stabilized, and may change with every OSAL release. No attempt is made
# to provide backward compatibility with to external sources.
set(OSAL_EXT_SOURCE_DIR "$ENV{OSAL_EXT_SOURCE_DIR}"
# to provide backward compatibility with to external sources.
set(OSAL_EXT_SOURCE_DIR "$ENV{OSAL_EXT_SOURCE_DIR}"
CACHE PATH "External source directory to check for additional OS/BSP implementations")

# Read the default compile-time configuration, and update with
# any mission/project specific options in the OSAL_CONFIGURATION_FILE
include("${OSAL_SOURCE_DIR}/default_config.cmake")
Expand Down Expand Up @@ -170,7 +170,7 @@ if (OSAL_BSP_INCLUDE_DIRECTORIES)
include_directories(${OSAL_BSP_INCLUDE_DIRECTORIES})
endif (OSAL_BSP_INCLUDE_DIRECTORIES)

set(BSP_SRCLIST
set(BSP_SRCLIST
src/bsp/shared/src/osapi-bsp.c
src/bsp/shared/src/bsp_default_app_run.c
src/bsp/shared/src/bsp_default_app_startup.c
Expand Down Expand Up @@ -351,6 +351,10 @@ if (HAS_PARENT)
# when building code intended for coverage analysis.
set(UT_COVERAGE_COMPILE_FLAGS "${UT_COVERAGE_COMPILE_FLAGS}" PARENT_SCOPE)
set(UT_COVERAGE_LINK_FLAGS "${UT_COVERAGE_LINK_FLAGS}" PARENT_SCOPE)
else(HAS_PARENT)
# In a standalone build, also add the documentation target(s)
# Note that in a CFE/integrated build, it is expected this will be built separately.
add_subdirectory(doc/src doc)
endif(HAS_PARENT)


Expand Down
24 changes: 23 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,28 @@ The autogenerated OSAL user's guide can be viewed at <https://github.com/nasa/cF

## Version History


### Development Build: v5.1.0-rc1+dev501

- include doxygen targets locally
- resolve discrepancies between timer API and unit tests
- Ensure correlation between the test cases and documented return values for the OSAL timer API.
- resolve discrepancies between binsem API and unit tests
- add missing clock retcode tests
- resolve discrepancies between common API and unit tests
- resolve discrepancies between countsem API and unit tests
- resolve discrepancies between dir API and unit tests
- resolve discrepancies between module API and unit tests
- resolve discrepancies between mutex API and unit tests
- resolve discrepancies between queue API and unit tests
- resolve discrepancies between task API and unit tests
- resolve discrepancies between timebase API and unit tests
- check misc API return codes
- Rename CodeQL cFE Build and add Duplicate Job
- filter only whole words for keyword match
- update OSAL Config Guide link
- See <https://github.com/nasa/osal/pull/1058> and <https://github.com/nasa/cFS/pull/263>

### Development Build: v5.1.0-rc1+dev458

- Adds Counting Semaphore Test with timeouts
Expand Down Expand Up @@ -534,7 +556,7 @@ make
make test
```

See the [Configuration Guide](https://github.com/nasa/osal/blob/master/doc/OSAL-Configuration-guide.pdf) for more information.
See the [Configuration Guide](https://github.com/nasa/osal/blob/main/doc/OSAL-Configuration-Guide.md) for more information.

See also the autogenerated user's guide: <https://github.com/nasa/cFS/blob/gh-pages/OSAL_Users_Guide.pdf>

Expand Down
88 changes: 88 additions & 0 deletions doc/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
########################################################
#
# CMake Recipe to build OSAL API guide documentation
#
########################################################

#
# This CMake script currently defines a top-level target "apiguide"
# to build the OSAL API documentation. This may be invoked either
# from the main OSAL CMakeLists.txt as a subdirectory (useful in the
# case of a self-contained/standalone build) or by a separate script
# (useful if integrating into a larger project with a separate doc build)
#
# To invoke from a separate documentation build, the following vars
# should be defined by the caller, before adding this subdirectory:
#
# OSAL_API_INCLUDE_DIRECTORIES :
# The list of directories that have the OSAL API headers
# This should include the path to osconfig.h to avoid warnings
# about undefined references.
#
# OSALDOC_PREDEFINED :
# Not used directly, but passed through to the "osal-common.doxyfile"
# This may be used to indicate preprocessor definitions that the
# documentation generator tool should be aware of
#
# Note that OSAL_API_INCLUDE_DIRECTORIES is defined by the parent script
# in a standalone build environment.
#

cmake_minimum_required(VERSION 3.5)
project(OSAL_DOCS NONE)

# List of dox files to include -
# note that order is relevant here, doxygen processes in the order listed.
set(OSAL_DOCFILE_LIST
${CMAKE_CURRENT_SOURCE_DIR}/osalmain.dox
${CMAKE_CURRENT_SOURCE_DIR}/osal_fs.dox
${CMAKE_CURRENT_SOURCE_DIR}/osal_timer.dox
)

# For the generated Doxyfiles, the various paths should be in native form
set(OSAL_NATIVE_APIGUIDE_SOURCEFILES)
set(OSAL_NATIVE_INCLUDE_DIRS)
set(OSAL_DOC_DEPENDENCY_LIST)

foreach(SRC ${OSAL_DOCFILE_LIST})
file(TO_NATIVE_PATH "${SRC}" SRC)
string(APPEND OSAL_NATIVE_APIGUIDE_SOURCEFILES " \\\n ${SRC}")
endforeach()

foreach(DIR ${OSAL_API_INCLUDE_DIRECTORIES})
file(GLOB OSAL_HEADERFILE_LIST ${DIR}/*.h)
foreach(HDR ${OSAL_HEADERFILE_LIST})
list(APPEND OSAL_DOC_DEPENDENCY_LIST ${HDR})
file(TO_NATIVE_PATH "${HDR}" HDR)
string(APPEND OSAL_NATIVE_APIGUIDE_SOURCEFILES " \\\n ${HDR}")
endforeach()
file(TO_NATIVE_PATH "${DIR}" DIR)
string(APPEND OSAL_NATIVE_INCLUDE_DIRS " \\\n ${DIR}")
endforeach()

file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/osal-apiguide-warnings.log OSAL_NATIVE_LOGFILE)
file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/osal-common.doxyfile OSAL_NATIVE_COMMON_CFGFILE)
file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/osal-apiguide.doxyfile OSAL_NATIVE_APIGUIDE_CFGFILE)

# generate the configuration files
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/osal-common.doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/osal-common.doxyfile
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/osal-apiguide.doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/osal-apiguide.doxyfile
@ONLY
)

add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/apiguide/html/index.html"
COMMAND doxygen ${OSAL_NATIVE_APIGUIDE_CFGFILE}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/osal-apiguide.doxyfile ${OSAL_DOCFILE_LIST} ${OSAL_DOC_DEPENDENCY_LIST}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)

add_custom_target(osal-apiguide
COMMAND echo "OSAL API Guide: file://${CMAKE_CURRENT_BINARY_DIR}/apiguide/html/index.html"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/apiguide/html/index.html"
)
16 changes: 16 additions & 0 deletions doc/src/osal-apiguide.doxyfile.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#---------------------------------------------------------------------------
# Doxygen Configuration options to generate the "OSAL API Guide"
#---------------------------------------------------------------------------

# Complete list of input files
INPUT += @OSAL_NATIVE_APIGUIDE_SOURCEFILES@


# Common definitions, some of which are extended or overridden here.
@INCLUDE = @OSAL_NATIVE_COMMON_CFGFILE@
PROJECT_NAME = "OSAL User's Guide"
OUTPUT_DIRECTORY = apiguide
GENERATE_LATEX = YES

# output the warnings to a separate file
WARN_LOGFILE = @OSAL_NATIVE_LOGFILE@
76 changes: 76 additions & 0 deletions doc/src/osal-common.doxyfile.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#---------------------------------------------------------------------------
# Project related configuration options, shared for all cFE doxygen outputs
#---------------------------------------------------------------------------
@INCLUDE_PATH = @OSAL_NATIVE_INCLUDE_DIRS@
OUTPUT_DIRECTORY = .
ABBREVIATE_BRIEF = "The $name class " \
"The $name widget " \
"The $name file " \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
TAB_SIZE = 4
OPTIMIZE_OUTPUT_FOR_C = YES
ALIASES += nonnull="(must not be null)"
ALIASES += nonzero="(must not be zero)"
ALIASES += covtest="(return value only verified in coverage test)"

PREDEFINED += @OSALDOC_PREDEFINED@

#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
CASE_SENSE_NAMES = NO
GENERATE_TODOLIST = NO
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
WARN_NO_PARAMDOC = YES
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
STRIP_FROM_PATH = @OSAL_SOURCE_NATIVE_DIR@
FILE_PATTERNS = *.c *.cpp *.cc *.C *.h *.hh *.hpp *.H *.dox *.md
RECURSIVE = YES
EXAMPLE_PATTERNS = *
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_CMD_NAME = latex
COMPACT_LATEX = YES
PAPER_TYPE = letter
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
COMPACT_RTF = YES
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
HAVE_DOT = YES
CLASS_GRAPH = NO
COLLABORATION_GRAPH = NO
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = YES
GRAPHICAL_HIERARCHY = NO
MAX_DOT_GRAPH_DEPTH = 1000
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
94 changes: 94 additions & 0 deletions doc/src/osal_fs.dox
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/**
\page osalfsovr File System Overview

The File System API is a thin wrapper around a selection of POSIX file APIs.
In addition the File System API presents a common directory structure and
volume view regardless of the underlying system type. For example, vxWorks
uses MS-DOS style volume names and directories where a vxWorks RAM disk might
have the volume “RAM:0”. With this File System API, volumes are represented
as Unix-style paths where each volume is mounted on the root file system:

<UL>
<LI>RAM:0/file1.dat becomes /mnt/ram/file1.dat
<LI>FL:0/file2.dat becomes /mnt/fl/file2.dat
</UL>

This abstraction allows the applications to use the same paths regardless of
the implementation and it also allows file systems to be simulated on a desktop
system for testing. On a desktop Linux system, the file system abstraction can
be set up to map virtual devices to a regular directory. This is accomplished
through the OS_mkfs call, OS_mount call, and a BSP specific volume table that
maps the virtual devices to real devices or underlying file systems.

In order to make this file system volume abstraction work, a “Volume Table”
needs to be provided in the Board Support Package of the application. The table
has the following fields:

<UL>
<LI> Device Name: This is the name of the virtual device that the Application
uses. Common names are “ramdisk1”, “flash1”, or “volatile1” etc. But the
name can be any unique string.
<LI> Physical Device Name: This is an implementation specific field. For
vxWorks it is not needed and can be left blank. For a File system based
implementation, it is the “mount point” on the root file system where all
of the volume will be mounted. A common place for this on Linux could
be a user’s home directory, “/tmp”, or even the current working
directory “.”. In the example of “/tmp” all of the directories created
for the volumes would be under “/tmp” on the Linux file system. For a real
disk device in Linux, such as a RAM disk, this field is the device
name “/dev/ram0”.
<LI> Volume Type: This field defines the type of volume. The types are:
FS_BASED which uses the existing file system, RAM_DISK which uses a
RAM_DISK device in vxWorks, RTEMS, or Linux, FLASH_DISK_FORMAT which uses
a flash disk that is to be formatted before use, FLASH_DISK_INIT which
uses a flash disk with an existing format that is just to be initialized
before it’s use, EEPROM which is for an EEPROM or PROM based system.
<LI> Volatile Flag: This flag indicates that the volume or disk is a volatile
disk (RAM disk ) or a non-volatile disk, that retains its contents when
the system is rebooted. This should be set to TRUE or FALSE.
<LI> Free Flag: This is an internal flag that should be set to FALSE or zero.
<LI> Is Mounted Flag: This is an internal flag that should be set to FALSE
or zero. Note that a “pre-mounted” FS_BASED path can be set up by setting
this flag to one.
<LI> Volume Name: This is an internal field and should be set to a space
character “ “.
<LI> Mount Point Field: This is an internal field and should be set to a space
character “ “.
<LI> Block Size Field: This is used to record the block size of the device and
does not need to be set by the user.
</UL>
**/

/**
\page osalfsfd File Descriptors In Osal

The OSAL uses abstracted file descriptors. This means that the file descriptors
passed back from the OS_open and OS_creat calls will only work with other OSAL OS_*
calls. The reasoning for this is as follows:

Because the OSAL now keeps track of all file descriptors, OSAL specific information
can be associated with a specific file descriptor in an OS independent way. For
instance, the path of the file that the file descriptor points to can be easily
retrieved. Also, the OSAL task ID of the task that opened the file can also be
retrieved easily. Both of these pieces of information are very useful when trying
to determine statistics for a task, or the entire system. This information can all
be retrieved with a single API, OS_FDGetInfo.

All of possible file system calls are not implemented. "Special" files requiring OS
specific control/operations are by nature not portable. Abstraction in this case is
is not possible, so the raw OS calls should be used (including open/close/etc). Mixing
with OSAL calls is not supported for such cases. #OS_TranslatePath is available to
support using open directly by an app and maintain abstraction on the file system.

There are some small drawbacks with the OSAL file descriptors. Because the related
information is kept in a table, there is a define called OS_MAX_NUM_OPEN_FILES that
defines the maximum number of file descriptors available. This is a configuration
parameter, and can be changed to fit your needs.

Also, if you open or create a file not using the OSAL calls (OS_open or OS_creat)
then none of the other OS_* calls that accept a file descriptor as a parameter will
work (the results of doing so are undefined). Therefore, if you open a file with
the underlying OS's open call, you must continue to use the OS's calls until you
close the file descriptor. Be aware that by doing this your software may no longer
be OS agnostic.
**/
8 changes: 8 additions & 0 deletions doc/src/osal_timer.dox
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/**
\page osaltimerover Timer Overview

The timer API is a generic interface to the OS timer facilities. It is
implemented using the POSIX timers on Linux and vxWorks and the native timer
API on RTEMS. The number of timers supported is controlled by the configuration
parameter OS_MAX_TIMERS.
**/
Loading