OpenSolaris_b135/cmd/avs/errgen/errgen.help.txt

# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
/*
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */
Usage: errgen [-c | -j | -e | -m | -t] <module_code>
Options:
    -c   Generate C header file
    -j   Generate Java resource file
    -e   Generate libspcs exception class body
    -m   Generate error message text header file
    -t   Genrate  libspcs JNI exception trinket string table
    -x   Genrate  libspcs JNI exception trinket defines
The module_code values are case insensitive:

    SPCS	Storage Product Controller Software (general errors)
    DSW		DataShadow Module
    SV		Storage Volume Module
    RDC		Remote Dual Copy Module
    SDBC	Storage Device Block Cache Module
    STE		SCSI Target Emulation Module
    SDCTL	Storage Device Control Module
    MC		Memory Channel Module
    SIMCKD	CKD Simulation (SIMCKD) Module

The format of the resource file is as follows:

<message_key> = <message text>

The message_key will become the #define or static final name of the message 
definition with a module error prefix. The message_text will become a 
inline comment depending on usage

EXAMPLE resource input file. NOTE that only the %s format spec is supported
for supplying supplemental data for ioctl status. If a line ends with "@@" it
it indicates that a byte address and length will be supplied with the status
code to provide arbitrary data for shipment to userspace (a "bytestream"). 
Bytestreams are intended for asynchronous status output from coresw and are 
not supported for ioctl status.

NOMINOR = No more minor numbers available
ARRBOUNDS = Array bounds check exceeded %s size limit
INTERNALDUMP = Internal state dump @@

EXAMPLE C header file generated with "errgen -c SV":

#define SV_ENOMINOR   0x00030001 /* No more minor numbers available */
#define SV_EARRBOUNDS 0x01030002 /*Array bounds over %s size limit */
#define SV_EINTERNALDUMP 0x09030003 /* Internal state dump */

EXAMPLE Java resource file generated by "errgen -j SV":

`SV_ENOMINOR` =  No more minor numbers available
`SV_EARRBOUNDS` = Array bounds check exceeded {0} size limit
`SV_EINTERNALDUMP` = Internal state dump

EXAMPLE libspcs exception class body generated by "errgen -e SV":

    /**
     * No more minor numbers available
    **/
    public static final String SV_ENOMINOR = `SV_ENOMINOR`;

    /**
     * Array bounds check exceeded %s size limit
    **/
    public static final String SV_EARRBOUND = `SV_EARRBOUND`;

    /**
     * Internal state dump
    **/
    public static final String SV_EINTERNALDUMP = `SV_EINTERNALDUMP`;

EXAMPLE msg text data generated by "errgen -m SV":

    static char *SPCS_L_NTOM_SV[]={
	    "",	
	    "No more minor numbers available",
	    "Array bounds check exceeded %s size limit",
	    "Internal State dump",
    };
    #define SPCS_M_CNT_SV 3	/* total codes */

EXAMPLE libspcs JNI exception "trinket" table generated by "errgen -t SV":

    static char *SPCS_TRINKET_SV[]={
	     "",
	     "`SV_ENOMINOR`",
	     "`SV_EARRBOUNDS`",
	     "`SV_EINTERNALDUMP`",
    }

EXAMPLE libspcs JNI exception "trinket" defines generated by "errgen -x SV":

#define T_SV_ENOMINOR   "`SV_ENOMINOR`"
#define T_SV_EARRBOUNDS "`SV_EARRBOUNDS`"
#define T_SV_EARRBOUNDS "`SV_EINTERNALDUMP`"