/*
* 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
* 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.
*/
/*
* Generic Direct Attached Device
*/
#ifdef GDA_DEBUG
#endif /* GDA_DEBUG */
/*
* Local static data
*/
/*
* global data
*/
/*
* This is the loadable module wrapper
*/
extern struct mod_ops mod_miscops;
&mod_miscops, /* Type of module */
"Generic Direct Attached Device Utilities"
};
};
int
_init(void)
{
return (mod_install(&modlinkage));
}
int
_fini(void)
{
#ifdef GDA_DEBUG
PRF("gda_fini: call\n");
#endif
return (mod_remove(&modlinkage));
}
int
{
}
void
gda_inqfill(char *p, int l, char *s)
{
register unsigned i = 0, c;
if (!p)
return;
while (i++ < l) {
/* clean strings of non-printing chars */
if ((c = *p++) < ' ' || c > 0176) {
c = ' ';
}
*s++ = (char)c;
}
*s++ = 0;
}
static char *
{
return (*cmdvec + 1);
}
cmdvec++;
}
return ("<undecoded cmd>");
}
struct cmpkt *
{
if (in_pktp) {
} else {
return (NULL);
}
if (bp) {
NULL) {
if (!in_pktp)
return (NULL);
}
}
}
#ifdef GDA_DEBUG
#endif
return (pktp);
}
void
{
if (pktp) {
}
if (bp) {
}
}
void
{
int log_only = 0;
int boot_only = 0;
int console_only = 0;
switch (*fmt) {
case '!':
log_only = 1;
fmt++;
break;
case '?':
boot_only = 1;
fmt++;
break;
case '^':
console_only = 1;
fmt++;
break;
}
if (dev) {
name[0] = '\0';
}
} else {
}
switch (level) {
case CE_NOTE:
/* FALLTHROUGH */
case CE_CONT:
case CE_WARN:
case CE_PANIC:
if (boot_only) {
} else if (console_only) {
} else if (log_only) {
} else {
}
break;
default:
break;
}
}
void
{
static char *error_classes[] = {
"All", "Unknown", "Informational",
"Recovered", "Retryable", "Fatal"
};
}
"' error code: 0x%x",
}