Difference between revisions of "OCEOSmp/blank"

From wiki
Jump to navigation Jump to search
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 17: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));