1178476Sjb/*	$OpenBSD: vndioctl.h,v 1.12 2023/05/14 18:34:02 krw Exp $	*/
2178476Sjb/*	$NetBSD: vndioctl.h,v 1.5 1995/01/25 04:46:30 cgd Exp $	*/
3178476Sjb
4178476Sjb/*
5178476Sjb * Copyright (c) 1988 University of Utah.
6178476Sjb * Copyright (c) 1990, 1993
7178476Sjb *	The Regents of the University of California.  All rights reserved.
8178476Sjb *
9178476Sjb * This code is derived from software contributed to Berkeley by
10178476Sjb * the Systems Programming Group of the University of Utah Computer
11178476Sjb * Science Department.
12178476Sjb *
13178476Sjb * Redistribution and use in source and binary forms, with or without
14178476Sjb * modification, are permitted provided that the following conditions
15178476Sjb * are met:
16178476Sjb * 1. Redistributions of source code must retain the above copyright
17178476Sjb *    notice, this list of conditions and the following disclaimer.
18178476Sjb * 2. Redistributions in binary form must reproduce the above copyright
19178476Sjb *    notice, this list of conditions and the following disclaimer in the
20178476Sjb *    documentation and/or other materials provided with the distribution.
21178476Sjb * 3. Neither the name of the University nor the names of its contributors
22178476Sjb *    may be used to endorse or promote products derived from this software
23178476Sjb *    without specific prior written permission.
24178476Sjb *
25178476Sjb * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26178476Sjb * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27178476Sjb * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28178476Sjb * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29178476Sjb * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30178476Sjb * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31178476Sjb * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32178476Sjb * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33178476Sjb * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34178476Sjb * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35178476Sjb * SUCH DAMAGE.
36178476Sjb *
37178476Sjb * from: Utah $Hdr: fdioctl.h 1.1 90/07/09$
38178476Sjb *
39178476Sjb *	@(#)vnioctl.h	8.1 (Berkeley) 6/10/93
40178476Sjb */
41178476Sjb
42178476Sjb#ifndef _SYS_VNDIOCTL_H_
43178476Sjb#define _SYS_VNDIOCTL_H_
44
45#define VNDNLEN	1024		/* PATH_MAX */
46
47/*
48 * Ioctl definitions for file (vnode) disk pseudo-device.
49 */
50struct vnd_ioctl {
51	char		*vnd_file;	/* pathname of file to mount */
52	size_t		 vnd_secsize;	/* sector size in bytes */
53	size_t		 vnd_nsectors;	/* number of sectors in a track */
54	size_t		 vnd_ntracks;	/* number of tracks per cylinder */
55	off_t		 vnd_size;	/* (returned) size of disk */
56	u_char		*vnd_key;
57	int		 vnd_keylen;
58	uint16_t	 vnd_type;	/* DTYPE being emulated */
59};
60
61/*
62 * A simple structure used by userland to query about a specific vnd.
63 */
64struct vnd_user {
65	char	vnu_file[VNDNLEN];	/* vnd file */
66	int	vnu_unit;		/* vnd unit */
67	dev_t	vnu_dev;		/* vnd device */
68	ino_t	vnu_ino;		/* vnd inode */
69};
70
71/*
72 * Before you can use a unit, it must be configured with VNDIOCSET.
73 * The configuration persists across opens and closes of the device;
74 * an VNDIOCCLR must be used to reset a configuration.  An attempt to
75 * VNDIOCSET an already active unit will return EBUSY.
76 */
77#define VNDIOCSET	_IOWR('F', 0, struct vnd_ioctl)	/* enable disk */
78#define VNDIOCCLR	_IOW('F', 1, struct vnd_ioctl)	/* disable disk */
79#define VNDIOCGET	_IOWR('F', 3, struct vnd_user)	/* get disk info */
80
81#endif /* !_SYS_VNDIOCTL_H_ */
82