275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * CDDL HEADER START
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * The contents of this file are subject to the terms of the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Common Development and Distribution License (the "License").
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * You may not use this file except in compliance with the License.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * See the License for the specific language governing permissions
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * and limitations under the License.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * When distributing Covered Code, include this CDDL HEADER in each
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * If applicable, add the following below this CDDL HEADER, with the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * fields enclosed by brackets "[]" replaced with your own identifying
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * information: Portions Copyright [yyyy] [name of copyright owner]
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * CDDL HEADER END
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Use is subject to license terms.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock#pragma ident "%Z%%M% %I% %E% SMI"
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockstatic void *
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock if ((dp = libscsi_zalloc(hp, sizeof (struct uscsi_dev))) == NULL)
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock if ((dp->dev = libscsi_strdup(hp, target_name)) == NULL) {
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock (void) libscsi_error(hp, ESCSI_BADTARGET, "failed to open %s "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock struct uscsi_dev *dp = (struct uscsi_dev *)private;
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockxlate_flags(libscsi_hdl_t *hp, uint_t flags, int *uf)
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (0);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockuscsi_exec(libscsi_hdl_t *hp, void *private, libscsi_action_t *ap)
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock struct uscsi_dev *dp = (struct uscsi_dev *)private;
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock cmd.uscsi_timeout = (short)libscsi_action_get_timeout(ap);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock if (flags & (LIBSCSI_AF_READ | LIBSCSI_AF_WRITE)) {
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock (uint8_t **)&cmd.uscsi_bufaddr, &data_a, &data_v) != 0)
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock if (libscsi_action_get_sense(ap, (uint8_t **)&cmd.uscsi_rqbuf,
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (libscsi_error(hp, ESCSI_BADCMD, "internal "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock "uscsi error"));
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (libscsi_error(hp, ESCSI_PERM, "insufficient "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock "privileges "));
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock /* Command never executed at all */
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (libscsi_error(hp, ESCSI_SYS, "uscsi ioctl "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock if ((flags & LIBSCSI_AF_READ) && libscsi_action_set_datalen(ap,
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock if ((flags & LIBSCSI_AF_RQSENSE) && libscsi_action_set_senselen(ap,
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (0);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock/*ARGSUSED*/
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockuscsi_target_name(libscsi_hdl_t *hp, void *private, char *buf, size_t len)
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock struct uscsi_dev *dp = (struct uscsi_dev *)private;
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock/*ARGSUSED*/