Difference between revisions of "OCEOSmp/blank"

From wiki
Jump to navigation Jump to search
Line 6: Line 6:
<blockquote style="border-left-style: none;">
<blockquote style="border-left-style: none;">


* Log Area Features  (for details of other areas see oceos_areas.h)
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
The system log area holds the system log and the records of the present and previous values of the system state variable.
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 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.
*
 
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.
OCEOS preserves log area information across resets as far as possible.
*
 
The system log itself is a circular buffer of struct log entry.
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.
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 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
The read and write indices are stored in the log area and if equal indicate that the log is empty.
log entries have been read and the log has again become 3/4 full.
 
*
As with other OCEOS data areas, the log area starts with a header
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 a constant OCEOS_VERSION
     a 32-bit word holding the log area size in 32-bit words
     a 32-bit word holding the log area size in 32-bit words
Line 44: Line 36:
     an array of struct log_entry making up the system log itself
     an array of struct log_entry making up the system log itself
     and ending with a 32-bit constant END_SENTINEL
     and ending with a 32-bit constant END_SENTINEL
*
 
The system fixed meta structure at sysMetaPtr provides
The system fixed meta structure at sysMetaPtr provides
     system_log_ptr      the start address of the log area
     system_log_ptr      the start address of the log area
Line 51: Line 43:
     logFullFunction    user defined function, called when the log
     logFullFunction    user defined function, called when the log
                         becomes 3/4 full (or NULL if not used)
                         becomes 3/4 full (or NULL if not used)


<span style="color:#1b7ac2">'''Log Entry Types'''</span><br>
<span style="color:#1b7ac2">'''Log Entry Types'''</span><br>
Line 103: Line 96:
};
};
</syntaxhighlight>
</syntaxhighlight>


===<span style="color:#0000ff">blank_function()</span>===
===<span style="color:#0000ff">blank_function()</span>===

Revision as of 16:13, 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));