summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/vol.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/vol.h')
-rw-r--r--usr/src/uts/common/sys/vol.h603
1 files changed, 0 insertions, 603 deletions
diff --git a/usr/src/uts/common/sys/vol.h b/usr/src/uts/common/sys/vol.h
deleted file mode 100644
index be766d5f4c..0000000000
--- a/usr/src/uts/common/sys/vol.h
+++ /dev/null
@@ -1,603 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (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 2004 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-/*
- * Volume Management Mux Driver Interface
- */
-
-#ifndef _SYS_VOL_H
-#define _SYS_VOL_H
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#include <rpc/types.h>
-#include <sys/ioccom.h>
-#include <sys/param.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*
- * The labelent structures tell the driver where labels might be found,
- * so the driver can watch this range of addresses and tell us
- * (via the VIE_NEWLABEL event) when someone writes to one. It
- * also allows the driver to "blot out" the label from reads and
- * writes, if desired.
- */
-
-struct vio_labelent {
- off_t vl_off; /* label offset (in bytes) */
- size_t vl_len; /* length of the label */
- bool_t vl_mapout; /* map the label out? */
-};
-
-#ifdef _SYSCALL32
-struct vio_labelent32 {
- off32_t vl_off; /* label offset (in bytes) */
- size32_t vl_len; /* length of the label */
- int32_t vl_mapout; /* map the label out? */
-};
-#endif /* _SYSCALL32 */
-
-/*
- * Map our unit number (vim_unit) to a dev_t representing a
- * real driver (vim_dev).
- */
-struct vioc_map {
- dev_t vim_dev; /* device (full name) to map to */
- caddr_t vim_path; /* path name of device */
- size_t vim_pathlen; /* string + 0 */
- minor_t vim_unit; /* unit number (minor number) */
- dev_t vim_basedev; /* device to return for errs &c. */
- uint64_t vim_id; /* id of the volume */
- uint_t vim_nvl; /* number of vio_labelent structs */
- struct vio_labelent *vim_vl; /* list of where labels are */
- uint_t vim_flags; /* flags */
-};
-
-#ifdef _SYSCALL32
-
-#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
-#pragma pack(4)
-#endif
-
-struct vioc_map32 {
- dev32_t vim_dev; /* device (full name) to map to */
- caddr32_t vim_path; /* path name of device */
- size32_t vim_pathlen; /* string + 0 */
- minor32_t vim_unit; /* unit number (minor number) */
- dev32_t vim_basedev; /* device to return for errs &c. */
- uint64_t vim_id; /* id of the volume */
- uint32_t vim_nvl; /* number of vio_labelent structs */
- caddr32_t vim_vl; /* list of where labels are */
- uint32_t vim_flags; /* flags */
-};
-
-#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
-#pragma pack()
-#endif
-
-#endif /* _SYSCALL32 */
-
-#define VIM_FLOPPY 0x0001 /* device is a floppy */
-#define VIM_RDONLY 0x0002 /* volume is read only */
-
-
-#define MAX_ATTR_LEN 128 /* max size for attr or value */
-
-struct vioc_dattr {
- minor_t vda_unit; /* unit number */
- char vda_value[MAX_ATTR_LEN]; /* value */
- int vda_errno; /* error */
-};
-
-#ifdef _SYSCALL32
-struct vioc_dattr32 {
- minor32_t vda_unit; /* unit number */
- char vda_value[MAX_ATTR_LEN]; /* value */
- int32_t vda_errno; /* error */
-};
-#endif /* _SYSCALL32 */
-
-/*
- * Passed from daemon to driver to specify what action should happen on
- * eject. This is in response to a VIE_EJECT event.
- */
-enum eject_state {
- VEJ_YES, /* eject is okay, send eject */
- VEJ_NO, /* eject is denied, don't send eject */
- VEJ_YESSTOP, /* eject is okay, don't send eject */
- VEJ_NONE /* no state */
-};
-
-struct vioc_eject {
- minor_t viej_unit;
- enum eject_state viej_state;
-};
-
-#ifdef _SYSCALL32
-struct vioc_eject32 {
- minor32_t viej_unit;
- int32_t viej_state;
-};
-#endif /* _SYSCALL32 */
-
-
-struct vioc_flags {
- minor_t vfl_unit; /* unit number */
- uint_t vfl_flags; /* flags to set */
-};
-
-#ifdef _SYSCALL32
-struct vioc_flags32 {
- minor32_t vfl_unit; /* unit number */
- uint32_t vfl_flags; /* flags to set */
-};
-#endif /* _SYSCALL32 */
-
-#define VFL_ENXIO 0x0001 /* enxio on unmap */
-
-/*
- * structure to provide buffer size of a passed in
- * string so kernel can use ddi
- */
-
-struct vol_str {
- caddr_t data; /* the addr of string */
- size_t data_len; /* buffer size of string */
-};
-
-#ifdef _SYSCALL32
-struct vol_str32 {
- caddr32_t data; /* the addr of string */
- size32_t data_len; /* buffer size of string */
-};
-#endif /* _SYSCALL32 */
-
-/*
- * returned in response to VOLIOCINFO
- */
-struct vioc_info {
- uint_t vii_inuse; /* others using volume */
- uint64_t vii_id; /* id of the volume */
- caddr_t vii_devpath; /* path name of mapped device */
- size_t vii_pathlen; /* buffer size of passed in devpath */
-};
-
-#ifdef _SYSCALL32
-
-#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
-#pragma pack(4)
-#endif
-
-struct vioc_info32 {
- uint32_t vii_inuse; /* others using volume */
- uint64_t vii_id; /* id of the volume */
- caddr32_t vii_devpath; /* path name of mapped device */
- size32_t vii_pathlen; /* buffer size of passed in devpath */
-};
-
-#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
-#pragma pack()
-#endif
-
-#endif /* _SYSCALL32 */
-
-struct vioc_sattr {
- caddr_t sa_attr; /* name of the attribute */
- caddr_t sa_value; /* value of the attribute */
- size_t sa_attr_len; /* length of str sa_attr */
- size_t sa_value_len; /* length of value string */
-};
-
-#ifdef _SYSCALL32
-struct vioc_sattr32 {
- caddr32_t sa_attr; /* name of the attribute */
- caddr32_t sa_value; /* value of the attribute */
- size32_t sa_attr_len; /* length of str sa_attr */
- size32_t sa_value_len; /* length of value string */
-};
-#endif /* _SYSCALL32 */
-
-struct vioc_gattr {
- caddr_t ga_attr; /* name of the attribute */
- caddr_t ga_value; /* value of the attribute */
- size_t ga_val_len; /* size of value buffer */
- size_t ga_attr_len; /* size of attr buffer */
-};
-
-#ifdef _SYSCALL32
-struct vioc_gattr32 {
- caddr32_t ga_attr; /* name of the attribute */
- caddr32_t ga_value; /* value of the attribute */
- size32_t ga_val_len; /* size of value buffer */
- size32_t ga_attr_len; /* size of attr buffer */
-};
-#endif /* _SYSCALL32 */
-
-/* for the VOLIOCSYMNAME ioctl */
-struct vioc_symname {
- dev_t sn_dev; /* dev to find symname of */
- caddr_t sn_symname; /* where symname gets returned */
- size_t sn_pathlen; /* max length to return */
-};
-
-#ifdef _SYSCALL32
-struct vioc_symname32 {
- dev32_t sn_dev; /* dev to find symname of */
- caddr32_t sn_symname; /* where symname gets returned */
- size32_t sn_pathlen; /* max length to return */
-};
-#endif /* _SYSCALL32 */
-
-/* for the VOLIOCSYMDEV ioctl */
-struct vioc_symdev {
- caddr_t sd_symname; /* symname to find dev name for */
- caddr_t sd_symdevname; /* where dev pathname gets returned */
- size_t sd_pathlen; /* max length to return */
- size_t sd_symnamelen; /* length of the symname */
-};
-
-#ifdef _SYSCALL32
-struct vioc_symdev32 {
- caddr32_t sd_symname; /* symname to find dev name for */
- caddr32_t sd_symdevname; /* where dev pathname gets returned */
- size32_t sd_pathlen; /* max length to return */
- size32_t sd_symnamelen; /* length of the symname */
-};
-#endif /* _SYSCALL32 */
-
-#if defined(_LONGLONG_TYPE)
-#define VOLID_TMP 0xff00000000000000ull
-#else
-#define VOLID_TMP 0xff000000
-#endif
-
-
-/*
- * max size of a device pathname in /dev (e.g. "/dev/diskette0")
- */
-#define VOL_SYMDEV_LEN (MAXPATHLEN)
-
-/*
- * max size of aliases pathname in /vol (e.g. "floppy0")
- */
-#define VOL_SYMNAME_LEN (MAXNAMELEN)
-
-
-/*
- * Possible events that the drive can generate for the daemon.
- */
-enum vie_event {
- VIE_MISSING, /* driver has no mapping */
- VIE_EJECT, /* eject has been requested */
- VIE_DEVERR, /* error seen from device */
- VIE_CLOSE, /* last close on device from userland */
- VIE_CANCEL, /* user has cancelled pending i/o */
- VIE_NEWLABEL, /* a new label has been written to device */
- VIE_INSERT, /* new media has arrived */
- VIE_GETATTR, /* get an attribute */
- VIE_SETATTR, /* set an attribute */
- VIE_INUSE, /* check to see if a device is in use */
- VIE_CHECK, /* check a device to see if media is there */
- VIE_REMOVED, /* media was removed from device */
- VIE_SYMNAME, /* for volmgt_symname() */
- VIE_SYMDEV, /* for volmgt_symdev() */
- VIE_REMOUNT /* the medium's file system structure has changed */
-};
-
-/*
- * This structure is used for communication between the daemon and
- * the driver.
- */
-
-
-struct vioc_event {
- enum vie_event vie_type; /* type of the event */
- union {
- /*
- * A unit has been opened for which we don't
- * have a mapping.
- */
- struct ve_missing {
- minor_t viem_unit; /* missing unit # */
- bool_t viem_ndelay; /* don't look for volume */
- uid_t viem_user; /* uid of requester */
- dev_t viem_tty; /* cont tty of req */
- } vie_u_missing;
- /*
- * A request has been made to eject a unit.
- */
- struct ve_eject {
- minor_t viej_unit; /* unit eject seen on */
- uid_t viej_user; /* uid of requester */
- dev_t viej_tty; /* tty of requester */
- int viej_force; /* DEPRECIATED */
- } vie_u_eject;
-
- /*
- * New media has arrived.
- */
- struct ve_insert {
- dev_t viei_dev;
- } vie_u_insert;
-
- /*
- * User wants us to see if a device is in use.
- */
- struct ve_inuse {
- dev_t vieu_dev;
- } vie_u_inuse;
-
- /*
- * User wants us to see if media has arrived in a device.
- */
- struct ve_check {
- dev_t viec_dev;
- } vie_u_check;
-
- /*
- * An error has been returned from a device
- */
- struct ve_error {
- dev_t viee_dev; /* dev_t of error */
- uint_t viee_errno; /* errno returned */
- } vie_u_error;
-
- /*
- * "last" close on a unit.
- */
- struct ve_close {
- minor_t viecl_unit; /* unit # finished with */
- } vie_u_close;
-
- /*
- * user has "interrupted" (^C) a pending operation.
- */
- struct ve_cancel {
- minor_t viec_unit; /* unit # aborted */
- } vie_u_cancel;
-
- /*
- * New label has been written.
- */
- struct ve_newlabel {
- minor_t vien_unit; /* unit # new label seen on */
- } vie_u_newlabel;
-
- /*
- * Set or get an attribute
- */
- struct ve_attr {
- minor_t viea_unit;
- char viea_attr[MAX_ATTR_LEN+1];
- char viea_value[MAX_ATTR_LEN+1];
- uid_t viea_uid;
- gid_t viea_gid;
- } vie_u_attr;
-
- struct ve_rm {
- minor_t virm_unit;
- } vie_u_rm;
-
- /*
- * user wants to find the symname for a dev path
- */
- struct ve_symname {
- dev_t vies_dev;
- } vie_u_symname;
-
- /*
- * user wants to find the dev path for a symname
- */
- struct ve_symdev {
- char vied_symname[VOL_SYMNAME_LEN+1];
- } vie_u_symdev;
-
- /*
- * Medium's partition structure has changed
- */
- struct ve_remount {
- minor_t vier_unit; /* repartitioned unit # */
- } vie_u_remount;
-
- } vie_un;
-};
-
-#ifdef _SYSCALL32
-struct vioc_event32 {
- int32_t vie_type; /* type of the event */
- union {
- /*
- * A unit has been opened for which we don't
- * have a mapping.
- */
- struct ve_missing32 {
- minor32_t viem_unit; /* missing unit # */
- int32_t viem_ndelay; /* don't look for volume */
- uid32_t viem_user; /* uid of requester */
- dev32_t viem_tty; /* cont tty of req */
- } vie_u_missing;
-
- /*
- * A request has been made to eject a unit.
- */
- struct ve_eject32 {
- minor32_t viej_unit; /* unit eject seen on */
- uid32_t viej_user; /* uid of requester */
- dev32_t viej_tty; /* tty of requester */
- int32_t viej_force; /* DEPRECIATED */
- } vie_u_eject;
-
- /*
- * New media has arrived.
- */
- struct ve_insert32 {
- dev32_t viei_dev;
- } vie_u_insert;
-
- /*
- * User wants us to see if a device is in use.
- */
- struct ve_inuse32 {
- dev32_t vieu_dev;
- } vie_u_inuse;
-
- /*
- * User wants us to see if media has arrived in a device.
- */
- struct ve_check32 {
- dev32_t viec_dev;
- } vie_u_check;
-
- /*
- * An error has been returned from a device
- */
- struct ve_error32 {
- dev32_t viee_dev; /* dev_t of error */
- uint32_t viee_errno; /* errno returned */
- } vie_u_error;
-
- /*
- * "last" close on a unit.
- */
- struct ve_close32 {
- minor32_t viecl_unit; /* unit # finished with */
- } vie_u_close;
-
- /*
- * user has "interrupted" (^C) a pending operation.
- */
- struct ve_cancel32 {
- minor32_t viec_unit; /* unit # aborted */
- } vie_u_cancel;
-
- /*
- * New label has been written.
- */
- struct ve_newlabel32 {
- minor32_t vien_unit; /* unit # new label seen on */
- } vie_u_newlabel;
-
- /*
- * Set or get an attribute
- */
- struct ve_attr32 {
- minor32_t viea_unit;
- char viea_attr[MAX_ATTR_LEN+1];
- char viea_value[MAX_ATTR_LEN+1];
- uid32_t viea_uid;
- gid32_t viea_gid;
- } vie_u_attr;
-
- struct ve_rm32 {
- minor32_t virm_unit;
- } vie_u_rm;
-
- /*
- * user wants to find the symname for a dev path
- */
- struct ve_symname32 {
- dev32_t vies_dev;
- } vie_u_symname;
-
- /*
- * user wants to find the dev path for a symname
- */
- struct ve_symdev32 {
- char vied_symname[VOL_SYMNAME_LEN+1];
- } vie_u_symdev;
- /*
- * Medium has new partition structure
- */
- struct ve_remount32 {
- minor32_t vier_unit; /* repartitioned unit # */
- } vie_u_remount;
- } vie_un;
-};
-#endif /* _SYSCALL32 */
-
-#define vie_missing vie_un.vie_u_missing
-#define vie_eject vie_un.vie_u_eject
-#define vie_insert vie_un.vie_u_insert
-#define vie_error vie_un.vie_u_error
-#define vie_close vie_un.vie_u_close
-#define vie_cancel vie_un.vie_u_cancel
-#define vie_newlabel vie_un.vie_u_newlabel
-#define vie_attr vie_un.vie_u_attr
-#define vie_inuse vie_un.vie_u_inuse
-#define vie_check vie_un.vie_u_check
-#define vie_rm vie_un.vie_u_rm
-#define vie_symname vie_un.vie_u_symname
-#define vie_symdev vie_un.vie_u_symdev
-#define vie_remount vie_un.vie_u_remount
-
-/*
- * These ioctl numbers have been allocated and approved by USL.
- */
-#define VOLIOC ('v' << 8)
-
-/* "control" ioctls (i.e. only valid on unit 0) */
-#define VOLIOCMAP (VOLIOC|1) /* build a volume to device mapping */
-#define VOLIOCUNMAP (VOLIOC|2) /* remove a mapping */
-#define VOLIOCEVENT (VOLIOC|3) /* read an event */
-#define VOLIOCEJECT (VOLIOC|4) /* allow/deny ejection */
-#define VOLIOCDGATTR (VOLIOC|7) /* daemon getattr */
-#define VOLIOCDSATTR (VOLIOC|8) /* daemon setattr */
-#define VOLIOCDCHECK (VOLIOC|9) /* daemon response to check */
-#define VOLIOCDINUSE (VOLIOC|14) /* daemon response to inuse */
-#define VOLIOCDAEMON (VOLIOC|15) /* daemon set's pid */
-#define VOLIOCFLAGS (VOLIOC|16) /* set flags on a mapping */
-#define VOLIOCDROOT (VOLIOC|17) /* tell driver where vol root is */
-#define VOLIOCDSYMNAME (VOLIOC|20) /* for volmgt_symname() */
-#define VOLIOCDSYMDEV (VOLIOC|21) /* for volmgt_symdev() */
-#define VOLIOCCMINOR (VOLIOC|24) /* create minor unit name */
-#define VOLIOCRMINOR (VOLIOC|25) /* remove minor unit name */
-
-/* "user" ioctls */
-#define VOLIOCINUSE (VOLIOC|6) /* is a device "in use"? */
-#define VOLIOCCHECK (VOLIOC|5) /* check a device for media */
-#define VOLIOCCANCEL (VOLIOC|10) /* cancel pending i/o */
-#define VOLIOCINFO (VOLIOC|11) /* get info about a volume */
-#define VOLIOCSATTR (VOLIOC|12) /* set an attribute */
-#define VOLIOCGATTR (VOLIOC|13) /* get an attribute */
-#define VOLIOCROOT (VOLIOC|18) /* find out where vol root is */
-#define VOLIOCSYMNAME (VOLIOC|19) /* for volmgt_symname() */
-#define VOLIOCSYMDEV (VOLIOC|22) /* for volmgt_symdev() */
-#define VOLIOCREMOUNT (VOLIOC|23) /* medium has new partitions */
-
-/* Name of control port (unit 0), i.e. /dev/%s */
-#define VOLCTLNAME "volctl"
-#define VOLUNITNAME_BLK "u%d"
-#define VOLUNITNAME_CHR "u%d,raw"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SYS_VOL_H */