/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos720 src/bos/kernel/sys/kerrors.h 1.1                                */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 2005                   */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)21       1.1  src/bos/kernel/sys/kerrors.h, syserrchk, bos720 3/17/05 00:31:55 */
/*
 * COMPONENT_NAME: (sysras) RAS Component Infrastructure
 *
 * FUNCTIONS: 
 *
 */

#ifndef _H_SYS_KERRORS
#define _H_SYS_KERRORS

/*
 * Severity classifications of errors discovered by components
 * are defined as follows. The severities are component specific and the
 * components can choose to assign error severities based on the context in 
 * which the error occurs.
 */

enum error_severity
{
	LOW_SEVERITY = 1,	/* Unexpected error that occurs within the 
				 * normal component design. (heap exhaustion)
				 */
	MEDIUM_SEVERITY,	/* Design or Implementation flaw 
				 * (parameter error) 
				 */
	HIGH_SEVERITY		/* Irrecoverable fatal errors. (corruption of
				 * critical data structures)
				 */
};

typedef enum error_severity error_severity_t;

/*
 * The following are the error dispositions or the ways a system reacts to an
 * error of certain severity. The list describes the possible disposition for 
 * each severity. Note: The disposition for HIGH_SEVERITY errors is 
 * ERROR_SYSTEM_DUMP, which produces a full system dump.  This disposition
 * cannot be changed.
 * Other error dispositions can be set on a per component basis.
 *
 * The various error dispositions are defined reasonably apart with the 
 * notion that the higher the numerical value of the disposition, the more 
 * severe it is.  This allows room for future definitions to be added 
 * appropriately.  
 * 
 * Currently the values start with ERROR_IGNORE and increment by 
 * ERROR_DISP_SHIFT (0x10). So the values are 0x30, 0x40, 0x50, 0x60 and 
 * 0x70.
 *
 * For example, if another disposition is added in the future and inserted 
 * after ERROR_IGNORE, it would take the successive value of 0x31.
 *
 */
#define ERROR_DISP_FIRST	0x30
#define ERROR_DISP_SHIFT	0x10

enum error_disposition
{
	/* No action. The system continues to operate 
	 * 
	 */
	ERROR_IGNORE = ERROR_DISP_FIRST,

	/* 
         * On detecting an error, the system performs
         * minimal error analysis and may record an errlog entry.
	 */
	ERROR_LOG = ERROR_IGNORE + ERROR_DISP_SHIFT,

	/* 
	 * A live component dump is taken on error. 
	 */
	ERROR_LIVE_DUMP = ERROR_LOG + ERROR_DISP_SHIFT,
        /*
         * Isolate the failure, preserving state for offline analysis
         */
	ERROR_ISOLATE = ERROR_LIVE_DUMP + ERROR_DISP_SHIFT,	

	/* 
	 * Produce a full system dump.	
	 */
	ERROR_SYSTEM_DUMP = ERROR_ISOLATE + ERROR_DISP_SHIFT
};
#define ERROR_DISP_LAST		ERROR_SYSTEM_DUMP

typedef enum error_disposition error_disposition_t;


#endif /* _H_SYS_KERRORS */
