fec509a05ddbf645268fe2e537314def7d1b67c8gm/*
fec509a05ddbf645268fe2e537314def7d1b67c8gm * CDDL HEADER START
fec509a05ddbf645268fe2e537314def7d1b67c8gm *
fec509a05ddbf645268fe2e537314def7d1b67c8gm * The contents of this file are subject to the terms of the
fec509a05ddbf645268fe2e537314def7d1b67c8gm * Common Development and Distribution License (the "License").
fec509a05ddbf645268fe2e537314def7d1b67c8gm * You may not use this file except in compliance with the License.
fec509a05ddbf645268fe2e537314def7d1b67c8gm *
fec509a05ddbf645268fe2e537314def7d1b67c8gm * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fec509a05ddbf645268fe2e537314def7d1b67c8gm * or http://www.opensolaris.org/os/licensing.
fec509a05ddbf645268fe2e537314def7d1b67c8gm * See the License for the specific language governing permissions
fec509a05ddbf645268fe2e537314def7d1b67c8gm * and limitations under the License.
fec509a05ddbf645268fe2e537314def7d1b67c8gm *
fec509a05ddbf645268fe2e537314def7d1b67c8gm * When distributing Covered Code, include this CDDL HEADER in each
fec509a05ddbf645268fe2e537314def7d1b67c8gm * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fec509a05ddbf645268fe2e537314def7d1b67c8gm * If applicable, add the following below this CDDL HEADER, with the
fec509a05ddbf645268fe2e537314def7d1b67c8gm * fields enclosed by brackets "[]" replaced with your own identifying
fec509a05ddbf645268fe2e537314def7d1b67c8gm * information: Portions Copyright [yyyy] [name of copyright owner]
fec509a05ddbf645268fe2e537314def7d1b67c8gm *
fec509a05ddbf645268fe2e537314def7d1b67c8gm * CDDL HEADER END
fec509a05ddbf645268fe2e537314def7d1b67c8gm */
fec509a05ddbf645268fe2e537314def7d1b67c8gm/*
fec509a05ddbf645268fe2e537314def7d1b67c8gm * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
fec509a05ddbf645268fe2e537314def7d1b67c8gm * Use is subject to license terms.
fec509a05ddbf645268fe2e537314def7d1b67c8gm */
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gm#pragma ident "%Z%%M% %I% %E% SMI"
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gm#include <sys/types.h>
fec509a05ddbf645268fe2e537314def7d1b67c8gm#include <sys/ddi.h>
fec509a05ddbf645268fe2e537314def7d1b67c8gm#include <sys/sunddi.h>
fec509a05ddbf645268fe2e537314def7d1b67c8gm#include <sys/cmn_err.h>
fec509a05ddbf645268fe2e537314def7d1b67c8gm#include <sys/varargs.h>
fec509a05ddbf645268fe2e537314def7d1b67c8gm#include <sys/n2rng.h>
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gm/*
fec509a05ddbf645268fe2e537314def7d1b67c8gm * Debugging and messaging.
fec509a05ddbf645268fe2e537314def7d1b67c8gm */
fec509a05ddbf645268fe2e537314def7d1b67c8gm#if DEBUG
fec509a05ddbf645268fe2e537314def7d1b67c8gmstatic unsigned int n2rng_debug = DWARN;
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gmint
fec509a05ddbf645268fe2e537314def7d1b67c8gmn2rng_dflagset(int flag)
fec509a05ddbf645268fe2e537314def7d1b67c8gm{
fec509a05ddbf645268fe2e537314def7d1b67c8gm return (flag & n2rng_debug);
fec509a05ddbf645268fe2e537314def7d1b67c8gm}
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gmvoid
fec509a05ddbf645268fe2e537314def7d1b67c8gmn2rng_dprintf(n2rng_t *n2rng, int level, const char *fmt, ...)
fec509a05ddbf645268fe2e537314def7d1b67c8gm{
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_list ap;
fec509a05ddbf645268fe2e537314def7d1b67c8gm char buf[256];
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gm if (n2rng_debug & level) {
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_start(ap, fmt);
fec509a05ddbf645268fe2e537314def7d1b67c8gm if (n2rng == NULL) {
fec509a05ddbf645268fe2e537314def7d1b67c8gm (void) sprintf(buf, "%s\n", fmt);
fec509a05ddbf645268fe2e537314def7d1b67c8gm } else {
fec509a05ddbf645268fe2e537314def7d1b67c8gm (void) sprintf(buf, "%s/%d: %s\n",
fec509a05ddbf645268fe2e537314def7d1b67c8gm ddi_driver_name(n2rng->n_dip),
fec509a05ddbf645268fe2e537314def7d1b67c8gm ddi_get_instance(n2rng->n_dip), fmt);
fec509a05ddbf645268fe2e537314def7d1b67c8gm }
fec509a05ddbf645268fe2e537314def7d1b67c8gm vprintf(buf, ap);
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_end(ap);
fec509a05ddbf645268fe2e537314def7d1b67c8gm }
fec509a05ddbf645268fe2e537314def7d1b67c8gm}
fec509a05ddbf645268fe2e537314def7d1b67c8gm#endif
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gmvoid
fec509a05ddbf645268fe2e537314def7d1b67c8gmn2rng_error(n2rng_t *n2rng, const char *fmt, ...)
fec509a05ddbf645268fe2e537314def7d1b67c8gm{
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_list ap;
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_start(ap, fmt);
fec509a05ddbf645268fe2e537314def7d1b67c8gm n2rng_dipverror(n2rng->n_dip, fmt, ap);
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_end(ap);
fec509a05ddbf645268fe2e537314def7d1b67c8gm}
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gmvoid
fec509a05ddbf645268fe2e537314def7d1b67c8gmn2rng_diperror(dev_info_t *dip, const char *fmt, ...)
fec509a05ddbf645268fe2e537314def7d1b67c8gm{
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_list ap;
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_start(ap, fmt);
fec509a05ddbf645268fe2e537314def7d1b67c8gm n2rng_dipverror(dip, fmt, ap);
fec509a05ddbf645268fe2e537314def7d1b67c8gm va_end(ap);
fec509a05ddbf645268fe2e537314def7d1b67c8gm}
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gmvoid
fec509a05ddbf645268fe2e537314def7d1b67c8gmn2rng_dipverror(dev_info_t *dip, const char *fmt, va_list ap)
fec509a05ddbf645268fe2e537314def7d1b67c8gm{
fec509a05ddbf645268fe2e537314def7d1b67c8gm char buf[256];
fec509a05ddbf645268fe2e537314def7d1b67c8gm
fec509a05ddbf645268fe2e537314def7d1b67c8gm (void) sprintf(buf, "%s%d: %s", ddi_driver_name(dip),
fec509a05ddbf645268fe2e537314def7d1b67c8gm ddi_get_instance(dip), fmt);
fec509a05ddbf645268fe2e537314def7d1b67c8gm vcmn_err(CE_WARN, buf, ap);
fec509a05ddbf645268fe2e537314def7d1b67c8gm}