emul64ioctl.c revision b1dd958f54f8bfa984d306bb8ca8264855761d7b
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * CDDL HEADER START
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * The contents of this file are subject to the terms of the
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * Common Development and Distribution License, Version 1.0 only
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * (the "License"). You may not use this file except in compliance
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * with the License.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * or http://www.opensolaris.org/os/licensing.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * See the License for the specific language governing permissions
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * and limitations under the License.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * When distributing Covered Code, include this CDDL HEADER in each
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * If applicable, add the following below this CDDL HEADER, with the
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * fields enclosed by brackets "[]" replaced with your own identifying
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * information: Portions Copyright [yyyy] [name of copyright owner]
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * CDDL HEADER END
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * Use is subject to license terms.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala#pragma ident "%Z%%M% %I% %E% SMI"
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * This program provides a command line interface to the
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * three new ioctls for the emul64 driver - EMUL64_WRITE_OFF,
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * EMUL64_WRITE_ON and EMUL64_ZERO_RANGE. All three of these
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * ioctls require the range of blocks to be specified. The
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * range is specified by starting block number and block count
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * both of which are 64 bit.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * Returns 0 on success, >0 on failure.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummalastatic int get_disk_addr(char *path, emul64_tgt_range_t *tr, char **admin);
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala (void) fprintf(stderr, "Usage: emul64ioctl -s start_block "
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala "-b block_count -c write_off | write_on | zero emul64_dev\n");
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala while ((retval = getopt(argc, argv, "s:b:c:")) != -1) {
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala tr.emul64_blkrange.emul64_sb = atoll(optarg);
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala tr.emul64_blkrange.emul64_blkcnt = atoll(optarg);
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala if ((sb_seen == 0) || (count_seen == 0) || (cmd == -1))
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * Get admin device, target and lun
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala if (get_disk_addr(slice, &tr, &admin) != 0)
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala * open the specified emul64_dev.
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala if ((fd = open(admin, O_RDONLY, 0444)) != -1) {
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala (void) printf("emul64ioctl: %s: ioctl %s\n",
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummala (void) printf("emul64ioctl: %s: open %s\n",
1cfa752f4e24c34133009b0f6c139127a5c461deRamaswamy Tummalaget_disk_addr(char *path, emul64_tgt_range_t *tr, char **admin)
int conversions;
char *ctds;
ctds++;