usr/src/cmd/devfsadm/devfsadm.h
author cth
Fri, 22 Feb 2008 09:02:16 -0800
changeset 6065 b05c5c670963
parent 4876 ecd69ba0713a
child 10097 e33d224110c9
permissions -rw-r--r--
6453345 devfs_getattr violates devfs locking rules 6527396 devfsadm -C taking hours after reconfiguration reboot 6661843 i_ddi_di_cache_invalidate() should only use taskq_dispatch on valid->invalid 6662461 reserved_links_exist() should be optimized
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
2587
93d8b810a71d 6425514 Invalid slot number message on FF2 could be hardware programming issue
pjha
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
93d8b810a71d 6425514 Invalid slot number message on FF2 could be hardware programming issue
pjha
parents: 0
diff changeset
     6
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
/*
6065
b05c5c670963 6453345 devfs_getattr violates devfs locking rules
cth
parents: 4876
diff changeset
    22
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
#ifndef _DEVFSADM_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
#define	_DEVFSADM_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
#include <sys/types.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#include <libdevinfo.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
#include <sys/devinfo_impl.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#include <regex.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
4876
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    36
#undef	DEBUG
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    37
#ifndef DEBUG
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    38
#define	NDEBUG 1
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    39
#else
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    40
#undef	NDEBUG
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    41
#endif
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    42
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    43
#include <assert.h>
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
    44
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
#define	DEVFSADM_SUCCESS 0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
#define	DEVFSADM_FAILURE -1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
#define	DEVFSADM_MULTIPLE -2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
#define	DEVFSADM_TRUE 0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
#define	DEVFSADM_FALSE -1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
#define	ILEVEL_0 0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
#define	ILEVEL_1 1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
#define	ILEVEL_2 2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
#define	ILEVEL_3 3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
#define	ILEVEL_4 4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
#define	ILEVEL_5 5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
#define	ILEVEL_6 6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
#define	ILEVEL_7 7
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
#define	ILEVEL_8 8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
#define	ILEVEL_9 9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
#define	DEVFSADM_V0 0
2846
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
    67
#define	DEVFSADM_V1 1
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
#define	DEVFSADM_CONTINUE 0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
#define	DEVFSADM_TERMINATE 1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
#define	INTEGER 0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
#define	CHARACTER 1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
#define	RM_HOT 0x01
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
#define	RM_PRE 0x02
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
#define	RM_POST 0x04
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
#define	RM_ALWAYS 0x08
2846
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
    79
#define	RM_NOINTERPOSE 0x10
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
#define	TYPE_EXACT 0x01
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
#define	TYPE_RE 0x02
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
#define	TYPE_PARTIAL 0x04
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
#define	TYPE_MASK 0x07
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
#define	DRV_EXACT 0x10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
#define	DRV_RE 0x20
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
#define	DRV_MASK 0x30
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
#define	CREATE_DEFER 0x100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
#define	CREATE_MASK 0x100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
/* command to start daemon */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
#define	DEVFSADMD_START_PATH	"/usr/lib/devfsadm/devfsadmd"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
#define	DEVFSADMD_START		"devfsadmd"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
/* devfsadm event service door */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
#define	DEVFSADM_SERVICE_DOOR	"/etc/sysevent/devfsadm_event_channel"
2621
4ea88858d952 PSARC/2003/246 Filesystem Driven Device Naming
llai1
parents: 2587
diff changeset
    97
#define	DEVNAME_LOOKUP_DOOR	".devname_lookup_door"
4ea88858d952 PSARC/2003/246 Filesystem Driven Device Naming
llai1
parents: 2587
diff changeset
    98
4ea88858d952 PSARC/2003/246 Filesystem Driven Device Naming
llai1
parents: 2587
diff changeset
    99
/* /dev device name binding rule locations */
4ea88858d952 PSARC/2003/246 Filesystem Driven Device Naming
llai1
parents: 2587
diff changeset
   100
#define	DEVNAME_MASTER_MAP	"/etc/dev/devname_master"
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
4876
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   102
/* File of reserved devnames */
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   103
#define	ENUMERATE_RESERVED "/etc/dev/reserved_devnames"
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   104
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
/* flags for devfsadm_mklink */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
#define	DEV_SYNC 0x02	/* synchronous mklink */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
#define	INFO_MID		NULL		/* always prints */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
#define	VERBOSE_MID		"verbose"	/* prints with -v */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
#define	CHATTY_MID		"chatty" 	/* prints with -V chatty */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
typedef struct devfsadm_create {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
	char	*device_class;	/* eg "disk", "tape", "display" */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
	char	*node_type;	/* eg DDI_NT_TAPE, DDI_NT_BLOCK, etc */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
	char	*drv_name;	/* eg sd, ssd */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
	int	flags;		/* TYPE_{EXACT,RE,PARTIAL}, DRV_{EXACT,RE} */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
	int interpose_lvl;	/* eg ILEVEL_0.. ILEVEL_10 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
	int (*callback_fcn)(di_minor_t minor, di_node_t node);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
} devfsadm_create_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
typedef struct devfsadm_remove {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
	char 	*device_class;	/* eg "disk", "tape", "display" */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
	char    *dev_dirs_re;   /* dev dirs regex selector */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
	int	flags;		/* eg POST, PRE, HOT, ALWAYS */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
	int	interpose_lvl;	/* eg ILEVEL_0 .. ILEVEL_10 */
2846
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   126
	void	(*callback_fcn)(char *);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
} devfsadm_remove_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
2846
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   129
typedef struct devfsadm_remove_V1 {
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   130
	char 	*device_class;	/* eg "disk", "tape", "display" */
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   131
	char    *dev_dirs_re;   /* dev dirs regex selector */
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   132
	int	flags;		/* eg POST, PRE, HOT, ALWAYS */
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   133
	int	interpose_lvl;	/* eg ILEVEL_0 .. ILEVEL_10 */
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   134
	int	(*callback_fcn)(char *);
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   135
} devfsadm_remove_V1_t;
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   136
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
typedef struct _devfsadm_create_reg {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
	uint_t version;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
	uint_t count;	/* number of node type registration */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
			/* structures */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
	devfsadm_create_t *tblp;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
} _devfsadm_create_reg_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
typedef struct _devfsadm_remove_reg {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
	uint_t version;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
	uint_t count;   /* number of node type registration */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
			/* structures */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
	devfsadm_remove_t *tblp;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
} _devfsadm_remove_reg_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
2846
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   151
typedef struct _devfsadm_remove_reg_V1 {
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   152
	uint_t version;
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   153
	uint_t count;   /* number of node type registration */
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   154
			/* structures */
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   155
	devfsadm_remove_V1_t *tblp;
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   156
} _devfsadm_remove_reg_V1_t;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
 * "flags" in the devfs_enumerate structure can take the following values.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
 * These values specify the substring of devfs path to be used for
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
 * enumeration. Components (see MATCH_ADDR/MATCH_MINOR) may be specified
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
 * by using the "match_arg" member in the devfsadm_enumerate structure.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
#define	MATCH_ALL	0x001	/* Match entire devfs path */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
#define	MATCH_PARENT	0x002	/* Match upto last '/' in devfs path */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
#define	MATCH_ADDR	0x004	/* Match upto nth component of last address */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
#define	MATCH_MINOR	0x008	/* Match upto nth component of minor name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
#define	MATCH_CALLBACK	0x010	/* Use callback to derive match string */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
 * The following flags are private to devfsadm and the disks module.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
 * NOT to be used by other modules.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
#define	MATCH_NODE	0x020
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
#define	MATCH_MASK	0x03F
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
#define	MATCH_UNCACHED	0x040 /* retry flags for disks module */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
typedef struct devfsadm_enumerate {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
	char *re;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
	int subexp;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
	uint_t flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
	char *match_arg;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
	char *(*sel_fcn)(const char *path, void *cb_arg);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
	void *cb_arg;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
} devfsadm_enumerate_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
#define	DEVFSADM_CREATE_INIT_V0(tbl) \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
	_devfsadm_create_reg_t _devfsadm_create_reg = { \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
	DEVFSADM_V0, \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
	(sizeof (tbl) / sizeof (devfsadm_create_t)), \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
	((devfsadm_create_t *)(tbl)) }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
#define	DEVFSADM_REMOVE_INIT_V0(tbl)\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
	_devfsadm_remove_reg_t _devfsadm_remove_reg = {\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
	DEVFSADM_V0, \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
	(sizeof (tbl) / sizeof (devfsadm_remove_t)), \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
	((devfsadm_remove_t *)(tbl)) }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
2846
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   198
#define	DEVFSADM_REMOVE_INIT_V1(tbl)\
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   199
	_devfsadm_remove_reg_V1_t _devfsadm_remove_reg = {\
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   200
	DEVFSADM_V1, \
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   201
	(sizeof (tbl) / sizeof (devfsadm_remove_V1_t)), \
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   202
	((devfsadm_remove_V1_t *)(tbl)) }
d2693e8a5243 6462748 devfsadm link removal does not provide full interpose support
vikram
parents: 2621
diff changeset
   203
4876
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   204
/* reserved devname support */
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   205
typedef struct devlink_re {
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   206
	char *d_re;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   207
	int d_subexp;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   208
	regex_t d_rcomp;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   209
	regmatch_t *d_pmatch;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   210
} devlink_re_t;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   211
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   212
typedef struct enumerate_file {
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   213
	char *er_file;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   214
	char *er_id;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   215
	struct enumerate_file *er_next;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   216
} enumerate_file_t;
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   217
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
int devfsadm_noupdate(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
const char *devfsadm_root_path(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
int devfsadm_link_valid(char *link);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
int devfsadm_mklink(char *link, di_node_t node, di_minor_t minor, int flags);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
int devfsadm_secondary_link(char *link, char *primary_link, int flags);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
void devfsadm_rm_link(char *file);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
void devfsadm_rm_all(char *file);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
void devfsadm_rm_stale_links(char *dir_re, char *valid_link, di_node_t node,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
		di_minor_t minor);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
void devfsadm_errprint(char *message, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
void devfsadm_print(char *mid, char *message, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
int devfsadm_enumerate_int(char *devfs_path, int index, char **buf,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
			    devfsadm_enumerate_t rules[], int nrules);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
int devfsadm_enumerate_char(char *devfs_path, int index, char **buf,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
			    devfsadm_enumerate_t rules[], int nrules);
2587
93d8b810a71d 6425514 Invalid slot number message on FF2 could be hardware programming issue
pjha
parents: 0
diff changeset
   233
char **devfsadm_lookup_dev_names(char *phys_path, char *re, int *lenp);
93d8b810a71d 6425514 Invalid slot number message on FF2 could be hardware programming issue
pjha
parents: 0
diff changeset
   234
void devfsadm_free_dev_names(char **dev_names, int len);
93d8b810a71d 6425514 Invalid slot number message on FF2 could be hardware programming issue
pjha
parents: 0
diff changeset
   235
4876
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   236
/* devlink cache related */
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   237
di_devlink_handle_t devfsadm_devlink_cache(void);
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   238
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
 * Private enumerate interface for disks and sgen modules
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
int disk_enumerate_int(char *devfs_path, int index, char **buf,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
			    devfsadm_enumerate_t rules[], int nrules);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
 * Private interfaces for ports module (port_link.c).
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
int devfsadm_enumerate_char_start(char *devfs_path, int index,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
    char **buf, devfsadm_enumerate_t rules[], int nrules, char *start);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
int devfsadm_read_link(char *link, char **devfs_path);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
char *s_strdup(const char *ptr);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
4876
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   252
/* Private interface between reserve subsystm and disks link generator */
6065
b05c5c670963 6453345 devfs_getattr violates devfs locking rules
cth
parents: 4876
diff changeset
   253
int devfsadm_have_reserved(void);
4876
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   254
int devfsadm_is_reserved(devlink_re_t re_array[], char *devlink);
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   255
int devfsadm_reserve_id_cache(devlink_re_t re_array[], enumerate_file_t *head);
ecd69ba0713a PSARC/2006/501 Nvidia ck804/mcp55 SATA HBA driver
mlf
parents: 2846
diff changeset
   256
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
#endif	/* _DEVFSADM_H */