usr/src/uts/common/sys/devinfo_impl.h
author ramat
Thu, 10 Nov 2005 07:14:29 -0800
changeset 878 964ddd439490
parent 0 68f95e015346
child 893 76977629f0d7
permissions -rw-r--r--
PSARC 2005/583 VHCI Driven Device Enumeration 4938301 scsi_vhci does not enumerate devices on-demand (BUS_CONFIG_ONE)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
 * Common Development and Distribution License, Version 1.0 only
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     6
 * (the "License").  You may not use this file except in compliance
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 * with the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
/*
878
964ddd439490 PSARC 2005/583 VHCI Driven Device Enumeration
ramat
parents: 0
diff changeset
    23
 * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
#ifndef	_SYS_DEVINFO_IMPL_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
#define	_SYS_DEVINFO_IMPL_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
 * This file is separate from libdevinfo.h because the devinfo driver
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
 * needs to know about the stuff. Library consumer should not care
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
 * about stuff defined here.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
 * The only exception is di_priv_data (consolidation private) and
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
 * DINFO* ioctls.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
/* ioctl commands for devinfo driver */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
#define	DIIOC		(0xdf<<8)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
#define	DIIOC_MASK	(0xffff00ff)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
 * Any combination of the following ORed together will take a snapshot
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
 * of the device configuration data.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
#define	DINFOSUBTREE	(DIIOC | 0x01)	/* include subtree */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
#define	DINFOMINOR	(DIIOC | 0x02)	/* include minor data */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
#define	DINFOPROP	(DIIOC | 0x04)	/* include properties */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
/* private bits */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
#define	DINFOPATH	(DIIOC | 0x08)	/* include i/o pathing information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
#define	DINFOPRIVDATA	(DIIOC | 0x10)	/* include private data */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
#define	DINFOFORCE	(DIIOC | 0x20)	/* force load all drivers */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
#define	DINFOCACHE	(DIIOC | 0x100000) /* use cached data  */
878
964ddd439490 PSARC 2005/583 VHCI Driven Device Enumeration
ramat
parents: 0
diff changeset
    63
#define	DINFOCLEANUP	(DIIOC | 0x200000) /* cleanup /etc/devices files */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
/* new public flag for the layered drivers framework */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
#define	DINFOLYR	(DIIOC | 0x40)	/* get device layering information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
 * Straight ioctl commands, not bitwise operation
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
#define	DINFOUSRLD	(DIIOC | 0x80)	/* copy snapshot to usrland */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
#define	DINFOLODRV	(DIIOC | 0x81)	/* force load a driver */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
#define	DINFOIDENT	(DIIOC | 0x82)	/* identify the driver */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
 * ioctl for taking a snapshot a single node and all nodes
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
#define	DINFOCPYONE	DIIOC
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
#define	DINFOCPYALL	(DINFOSUBTREE | DINFOPROP | DINFOMINOR)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
#define	DI_MAGIC	0xdfdf	/* magic number returned by DINFOIDENT */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
/* driver ops encoding */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
#define	DI_BUS_OPS	0x1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
#define	DI_CB_OPS	0x2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
#define	DI_STREAM_OPS	0x4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
/* property list enumeration */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
#define	DI_PROP_DRV_LIST	0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
#define	DI_PROP_SYS_LIST	1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
#define	DI_PROP_GLB_LIST	2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
#define	DI_PROP_HW_LIST		3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
/* misc parameters */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
#define	MAX_TREE_DEPTH	64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
#define	MAX_PTR_IN_PRV	5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
#define	DI_SNAPSHOT_VERSION_0	0	/* reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
#define	DI_SNAPSHOT_VERSION	DI_SNAPSHOT_VERSION_0	/* current version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
#define	DI_PRIVDATA_VERSION_0	10	/* Start from 10 so caller must set */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
#define	DI_BIG_ENDIAN		0	/* reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
#define	DI_LITTLE_ENDIAN	1	/* reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
#define	DI_CACHE_MAGIC		0xdfcac6ed	/* magic # for cache */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
#define	DI_CACHE_PERMS		(0444)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
#define	DI_CACHE_SNAPSHOT_FLAGS	(DINFOFORCE|DINFOSUBTREE|DINFOMINOR|DINFOPROP)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
#define	DI_NODE(addr)		((struct di_node *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
#define	DI_MINOR(addr)		((struct di_minor *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
#define	DI_PROP(addr)		((struct di_prop *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
#define	DI_PATH(addr)		((struct di_path *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
#define	DI_PATHPROP(addr)	((struct di_path_prop *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
#define	DI_ALL(addr)		((struct di_all *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
#define	DI_DEVNM(addr)		((struct di_devnm *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
#define	DI_LINK(addr)		((struct di_link *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
#define	DI_LNODE(addr)		((struct di_lnode *)((void *)(addr)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
 * For compatibility only
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
#define	DINO(addr)		DI_NODE(addr)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
#define	DIMI(addr)		DI_MINOR(addr)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
#define	DIPROP(addr)		DI_PROP(addr)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
#define	DIPATH(addr)		DI_PATH(addr)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
#define	DIPATHPROP(addr)	DI_PATHPROP(addr)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
typedef int32_t di_off_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
 * devinfo driver snapshot data structure
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
struct di_all {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
	int	version;	/* snapshot version, reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
	int	cache_magic;	/* magic number for cached snapshot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
	int	pd_version;	/* private data format version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
	int	endianness;	/* reserved for future use */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
	int	generation;	/* reserved for future use */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
	uint32_t	cache_checksum;	/* snapshot checksum */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
	uint64_t	snapshot_time;	/* snapshot timestamp */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
	di_off_t	top_devinfo;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
	di_off_t	devnames;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
	di_off_t	ppdata_format;	/* parent priv data format array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
	di_off_t	dpdata_format;	/* driver priv data format array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
	int	n_ppdata;	/* size of ppdata_format array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
	int	n_dpdata;	/* size of pddata_format array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
	int	devcnt;		/* size of devnames array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
	uint_t	command;	/* same as in di_init() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
	uint_t	map_size;	/* size of the snapshot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
	char	root_path[1];	/* path to snapshot root */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
struct di_devnm {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
	di_off_t name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
	di_off_t global_prop;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
	di_off_t head;	/* head of per instance list */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
	int flags;	/* driver attachment info */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
	int instance;	/* next instance to assign */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
	uint_t ops;	/* bit-encoded driver ops */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
struct di_lnode;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
struct di_link {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
	di_off_t	self;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
	int		count;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
	int		spec_type;	/* block or char access type */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
	di_off_t	src_lnode;	/* src di_lnode */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
	di_off_t	tgt_lnode;	/* tgt di_lnode */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
	di_off_t	src_link_next;	/* next src di_link /w same di_lnode */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
	di_off_t	tgt_link_next;	/* next tgt di_link /w same di_lnode */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
	di_off_t	src_node_next;	/* next src di_link /w same di_node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
	di_off_t	tgt_node_next;	/* next tgt di_link /w same di_node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
	uint64_t 	user_private_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
struct di_lnode {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
	di_off_t	self;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
	 * public information describing a link endpoint
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
	major_t		dev_major;	/* dev_t can be 64-bit */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
	minor_t		dev_minor;	/* dev_t can be 64-bit */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
	di_off_t	node;		/* offset of di_node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
	 * di_link ptr to links comming into this node
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
	 * (this lnode is the target of these di_links)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
	di_off_t	link_in;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
	 * di_link ptr to links going out of this node
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
	 * (this lnode is the source of these di_links)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
	di_off_t	link_out;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
	 * di_lnode pointer to the next lnode associated with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
	 * same di_node
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
	di_off_t	node_next;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
	uint64_t 	user_private_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
struct di_node {	/* useful info to export for each tree node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
	 * offset to di_node structures
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
	di_off_t self;		/* make it self addressable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
	di_off_t parent;	/* offset of parent node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
	di_off_t child;		/* offset of child node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
	di_off_t sibling;	/* offset of sibling */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
	di_off_t next;		/* next node on per-instance list */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
	 * offset to char strings of current node
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
	di_off_t node_name;	/* offset of device node name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
	di_off_t address;	/* offset of address part of name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
	di_off_t bind_name;	/* offset of binding name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
	di_off_t compat_names;	/* offset of compatible names */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
	 * offset to property lists, private data, etc.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
	di_off_t minor_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
	di_off_t drv_prop;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
	di_off_t sys_prop;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
	di_off_t glob_prop;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
	di_off_t hw_prop;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
	di_off_t parent_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
	di_off_t driver_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
	di_off_t multipath_client;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
	di_off_t multipath_phci;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
	di_off_t devid;		/* registered device id */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
	di_off_t pm_info;	/* RESERVED FOR FUTURE USE */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
	 * misc values
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
	int compat_length;	/* size of compatible name list */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
	int drv_major;		/* for indexing into devnames array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
	 * value attributes of current node
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
	int instance;		/* instance number */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
	int nodeid;		/* node id */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
	ddi_node_class_t node_class;	/* node class */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
	int attributes;		/* node attributes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
	uint_t state;		/* hotplugging device state */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
	ddi_node_state_t node_state;	/* devinfo state */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
	di_off_t lnodes;	/* lnodes associated with this di_node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
	di_off_t tgt_links;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
	di_off_t src_links;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
	uint64_t	user_private_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
 * chain of ddi_minor_data structure
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
struct di_minor {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
	di_off_t	self;		/* make it self addressable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
	di_off_t	next;		/* next one in the chain */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
	di_off_t	name;		/* name of node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
	di_off_t	node_type;	/* block, byte, serial, network */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
	ddi_minor_type	type;		/* data type */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
	major_t		dev_major;	/* dev_t can be 64-bit */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
	minor_t		dev_minor;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
	int		spec_type;	/* block or char */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
	unsigned int	mdclass;	/* no longer used, may be removed */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
	di_off_t	node;		/* address of di_node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
	uint64_t 	user_private_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   277
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
	DI_PATH_STATE_UNKNOWN,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
	DI_PATH_STATE_OFFLINE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
	DI_PATH_STATE_STANDBY,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
	DI_PATH_STATE_ONLINE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
	DI_PATH_STATE_FAULT
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
} di_path_state_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
 * multipathing information structures
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
struct di_path {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
	di_off_t	self;		/* make it self addressable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
	di_off_t	path_c_link;	/* next pathinfo via client linkage */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
	di_off_t	path_p_link;	/* next pathinfo via phci linkage */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
	di_off_t	path_client;	/* reference to client node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
	di_off_t	path_phci;	/* reference to phci node */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
	di_off_t	path_prop;	/* property list */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
	di_off_t	path_addr;	/* path addressing information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
	di_path_state_t path_state;	/* path state */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
	uint_t		path_snap_state;	/* describes valid fields */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
 * Flags for snap_state
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
#define	DI_PATH_SNAP_NOCLIENT	0x01	/* client endpt not in snapshot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
#define	DI_PATH_SNAP_NOPHCI	0x02	/* phci endpt not in snapshot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
#define	DI_PATH_SNAP_ENDPTS	0x04	/* Endpoints have been postprocessed */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
#define	DI_PATH_SNAP_NOCLINK	0x10	/* client linkage not in snapshot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
#define	DI_PATH_SNAP_NOPLINK	0x20	/* phci linkage not in snapshot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
#define	DI_PATH_SNAP_LINKS	0x40	/* linkages have been postprocessed */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
 * path properties
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
struct di_path_prop {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   317
	di_off_t	self;		/* make it self addressable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   318
	di_off_t	prop_next;	/* next property linkage */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   319
	di_off_t	prop_name;	/* property name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   320
	di_off_t	prop_data;	/* property data */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   321
	int		prop_type;	/* property data type */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   322
	int		prop_len;	/* prop length in bytes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   323
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   324
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
 * Now the properties.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
struct di_prop {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
	di_off_t	self;		/* make it self addressable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
	di_off_t	next;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
	di_off_t	prop_name;	/* Property name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
	di_off_t	prop_data;	/* property data */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
	major_t		dev_major;	/* dev_t can be 64 bit */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   334
	minor_t		dev_minor;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
	int	prop_flags;	/* mark prop value types & more */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
	int	prop_len;	/* prop length in bytes (boolean if 0) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   337
	int	prop_list;	/* which list (DI_PROP_SYS_LIST), etc */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   338
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   339
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   340
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   341
 * Private data stuff for supporting prtconf.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   342
 * Allows one level of indirection of fixed sized obj or obj array.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   343
 * The array size may be an int member of the array.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   344
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   345
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   346
struct di_priv_format {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   347
	char drv_name[MAXPATHLEN];	/* name of parent drv for ppdata */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   348
	size_t bytes;			/* size in bytes of this struct */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   349
	struct {			/* ptrs to dereference */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   350
		int size;	/* size of object assoc. this ptr */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   351
		int offset;	/* location of pointer within struct */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   352
		int len_offset;	/* offset to var. containing the len */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   353
	} ptr[MAX_PTR_IN_PRV];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   354
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   355
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   356
struct di_priv_data {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   357
	int version;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   358
	int n_parent;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   359
	int n_driver;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   360
	struct di_priv_format *parent;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   361
	struct di_priv_format *driver;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   362
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   363
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   364
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   365
 * structure passed in from ioctl
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   366
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   367
struct dinfo_io {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   368
	char root_path[MAXPATHLEN];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   369
	struct di_priv_data priv;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   370
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   371
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   372
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   373
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   374
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   375
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   376
#endif	/* _SYS_DEVINFO_IMPL_H */