OCEOSmp/blank

From wiki
Revision as of 17:09, 2 May 2024 by Bkavanagh (talk | contribs)
Jump to navigation Jump to search

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));