Difference between revisions of "OCEOSmp/blank"
Line 1: | Line 1: | ||
== Next Section == | == Next Section == | ||
== Logging directives == | |||
===<span style="color:#0000ff">Introduction</span>=== | |||
<blockquote style="border-left-style: none;"> | |||
* Log Area Features (for details of other areas see oceos_areas.h) | |||
* | |||
The system log area holds the system log and the records of the present and | |||
previous values of the system state variable. | |||
* | |||
It is set up initially as an array of 32-bit words that starts at a 32-bit | |||
aligned address provided by the application developer. | |||
* | |||
It is recommended that this address be in non-volatile RAM memory if this | |||
is available to allow information be preserved across power-up cycles. | |||
* | |||
OCEOS preserves log area information across resets as far as possible. | |||
* | |||
The system log itself is a circular buffer of struct log entry. | |||
Older entries are overwritten by new entries once all entries are in use. | |||
* | |||
The application developer can specify a function to be called when 3/4 of | |||
log entries are in use. This function is called again only after 3/4 of | |||
log entries have been read and the log has again become 3/4 full. | |||
* | |||
The read and write indices are stored in the log area and if equal indicate | |||
that the log is empty. | |||
* | |||
As with other OCEOS data areas, the log area | |||
starts with a header | |||
a 32-bit word holding a constant OCEOS_VERSION | |||
a 32-bit word holding the log area size in 32-bit words | |||
followed by (in this case) | |||
a 32-bit word, the system status variable | |||
a 32-bit word, the system status mask | |||
a 32-bit word, the accumulated system status | |||
a 32-bit word, the previous system status mask | |||
a 32-bit word, the log control, that gives | |||
whether the log full function was called | |||
the read index | |||
the write index | |||
an array of struct log_entry making up the system log itself | |||
and ending with a 32-bit constant END_SENTINEL | |||
* | |||
The system fixed meta structure at sysMetaPtr provides | |||
system_log_ptr the start address of the log area | |||
logEntries the number of log entries | |||
logCreated flag indicating log was created successfully | |||
logFullFunction user defined function, called when the log | |||
becomes 3/4 full (or NULL if not used) | |||
<span style="color:#1b7ac2">'''Log Entry Types'''</span><br> | |||
<syntaxhighlight lang="C"> | |||
/***************************************************************************** | |||
* TODO check each log entry and remove unused | |||
* LOG ENTRY TYPES | |||
* | |||
* A log entry type is an 8-bit number. | |||
* Values from 0 to 127 can be defined by the application. | |||
* Values from 128 to 255 are used by OCEOS as below. | |||
* | |||
* | |||
* NOTE: Add new log types at the end for backward compatibility | |||
*/ | |||
enum LOG_ENTRY_TYPE{ | |||
LOG_SYS_OK = 0x80U, | |||
LOG_OCEOS_ABORT, // when exiting from oceos_start | |||
LOG_LOG_NOT_VALID_ENTRY, // used to initialise log and when log empty | |||
LOG_INIT_TASK_START_FAIL, // initial task passed to oceos_start failed | |||
LOG_DEADLINE_MISSED, // task deadline missed | |||
LOG_JOB_NOT_ACTIVE, // cpu_terminate but job not active, absurd | |||
LOG_JOB_NOT_FREE, // job guarded but not free | |||
LOG_JOBS_INC_FAILED, // pending jobs increment failed | |||
LOG_JOB_NOT_GUARDED, // paranoia | |||
LOG_CS_LOG_SPIN_FAIL, // oceos_CPU_sleep, trying to update CS log | |||
LOG_MUTEX_ALREADY_HELD, // oceos_mutex_wait, code returned, not needed | |||
LOG_MUTEX_INCORRECT_ORDER, // oceos_mutex_wait | |||
LOG_MUTEX_EXIT_HOLDING, // task exits holding one or more mutexes | |||
LOG_MUTEX_EXIT_NONE, // __oceos_tasks_remove_mutexes called but no mutex held | |||
LOG_SEMAPHORE_PENDING_REMOVE_FAIL, // timed_action.c | |||
LOG_SEMAPHORE_PENDING_QUEUE_FULL, // __oceos_semaphore_add_pend | |||
LOG_SEMAPHORE_SPIN_FAILED, // trying to access semaphore | |||
LOG_DATAQ_PENDING_QUEUE_FULL, | |||
LOG_DATAQ_PENDING_REMOVE_FAIL, | |||
LOG_DATAQ_SPIN_FAILED, | |||
LOG_TIMED_ACTION_TIMER_NULL, | |||
LOG_TIMED_ACTION_INVALID, | |||
LOG_TIMED_ACTION_BAD_INDEX, | |||
LOG_TIMED_ACTION_MISSED, | |||
LOG_TIMED_ACTION_Q_EMPTY, | |||
LOG_TIMED_ACTION_REMOVE_FAIL, | |||
LOG_TIMED_ACTION_BAD_JOB_ID, | |||
LOG_TIMED_Q_SPIN_FAIL, | |||
LOG_SYSTEM_ERROR, | |||
LOG_ATOMICINC_FAILED, | |||
LOG_PENDING_PRI_UPDATE_FAILED, | |||
LOG_KILL_TASK_INVALID_ID, // Tried to kill task with invalid ID | |||
LOG_OCEOS_EXIT_REQUEST, // oceos_exit command was called | |||
LOG_RWMUTEX_NOT_RETURNED, | |||
LOG_RWMUTEX_NOT_HIGHEST | |||
}; | |||
</syntaxhighlight> | |||
Revision as of 16:09, 2 May 2024
Next Section
Logging directives
Introduction
- Log Area Features (for details of other areas see oceos_areas.h)
* The system log area holds the system log and the records of the present and previous values of the system state variable. * It is set up initially as an array of 32-bit words that starts at a 32-bit aligned address provided by the application developer. * It is recommended that this address be in non-volatile RAM memory if this is available to allow information be preserved across power-up cycles. * OCEOS preserves log area information across resets as far as possible. * The system log itself is a circular buffer of struct log entry. Older entries are overwritten by new entries once all entries are in use. * The application developer can specify a function to be called when 3/4 of log entries are in use. This function is called again only after 3/4 of log entries have been read and the log has again become 3/4 full. * The read and write indices are stored in the log area and if equal indicate that the log is empty. * As with other OCEOS data areas, the log area starts with a header a 32-bit word holding a constant OCEOS_VERSION a 32-bit word holding the log area size in 32-bit words followed by (in this case) a 32-bit word, the system status variable a 32-bit word, the system status mask a 32-bit word, the accumulated system status a 32-bit word, the previous system status mask a 32-bit word, the log control, that gives whether the log full function was called the read index the write index an array of struct log_entry making up the system log itself and ending with a 32-bit constant END_SENTINEL * The system fixed meta structure at sysMetaPtr provides system_log_ptr the start address of the log area logEntries the number of log entries logCreated flag indicating log was created successfully logFullFunction user defined function, called when the log becomes 3/4 full (or NULL if not used)
Log Entry Types
/***************************************************************************** * TODO check each log entry and remove unused * LOG ENTRY TYPES * * A log entry type is an 8-bit number. * Values from 0 to 127 can be defined by the application. * Values from 128 to 255 are used by OCEOS as below. * * * NOTE: Add new log types at the end for backward compatibility */ enum LOG_ENTRY_TYPE{ LOG_SYS_OK = 0x80U, LOG_OCEOS_ABORT, // when exiting from oceos_start LOG_LOG_NOT_VALID_ENTRY, // used to initialise log and when log empty LOG_INIT_TASK_START_FAIL, // initial task passed to oceos_start failed LOG_DEADLINE_MISSED, // task deadline missed LOG_JOB_NOT_ACTIVE, // cpu_terminate but job not active, absurd LOG_JOB_NOT_FREE, // job guarded but not free LOG_JOBS_INC_FAILED, // pending jobs increment failed LOG_JOB_NOT_GUARDED, // paranoia LOG_CS_LOG_SPIN_FAIL, // oceos_CPU_sleep, trying to update CS log LOG_MUTEX_ALREADY_HELD, // oceos_mutex_wait, code returned, not needed LOG_MUTEX_INCORRECT_ORDER, // oceos_mutex_wait LOG_MUTEX_EXIT_HOLDING, // task exits holding one or more mutexes LOG_MUTEX_EXIT_NONE, // __oceos_tasks_remove_mutexes called but no mutex held LOG_SEMAPHORE_PENDING_REMOVE_FAIL, // timed_action.c LOG_SEMAPHORE_PENDING_QUEUE_FULL, // __oceos_semaphore_add_pend LOG_SEMAPHORE_SPIN_FAILED, // trying to access semaphore LOG_DATAQ_PENDING_QUEUE_FULL, LOG_DATAQ_PENDING_REMOVE_FAIL, LOG_DATAQ_SPIN_FAILED, LOG_TIMED_ACTION_TIMER_NULL, LOG_TIMED_ACTION_INVALID, LOG_TIMED_ACTION_BAD_INDEX, LOG_TIMED_ACTION_MISSED, LOG_TIMED_ACTION_Q_EMPTY, LOG_TIMED_ACTION_REMOVE_FAIL, LOG_TIMED_ACTION_BAD_JOB_ID, LOG_TIMED_Q_SPIN_FAIL, LOG_SYSTEM_ERROR, LOG_ATOMICINC_FAILED, LOG_PENDING_PRI_UPDATE_FAILED, LOG_KILL_TASK_INVALID_ID, // Tried to kill task with invalid ID LOG_OCEOS_EXIT_REQUEST, // oceos_exit command was called LOG_RWMUTEX_NOT_RETURNED, LOG_RWMUTEX_NOT_HIGHEST };
blank_function()
Header File
header.h
Description
This function does xyz...Prototype
S32_t oceosmp_blank( U32_t param );Parameters
Parameter Description param parameter to function Returns
This function returns an S32_t with a value of OCEOS_SUCCESS (zero) or return code bits set as defined in the table below.
Error bit Description Error_name description Example Usage
S32_t status, param; ... // Do xyz status = oceosmp_blank(param));