1*26947304SEvan Yan /* 2*26947304SEvan Yan * CDDL HEADER START 3*26947304SEvan Yan * 4*26947304SEvan Yan * The contents of this file are subject to the terms of the 5*26947304SEvan Yan * Common Development and Distribution License (the "License"). 6*26947304SEvan Yan * You may not use this file except in compliance with the License. 7*26947304SEvan Yan * 8*26947304SEvan Yan * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*26947304SEvan Yan * or http://www.opensolaris.org/os/licensing. 10*26947304SEvan Yan * See the License for the specific language governing permissions 11*26947304SEvan Yan * and limitations under the License. 12*26947304SEvan Yan * 13*26947304SEvan Yan * When distributing Covered Code, include this CDDL HEADER in each 14*26947304SEvan Yan * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*26947304SEvan Yan * If applicable, add the following below this CDDL HEADER, with the 16*26947304SEvan Yan * fields enclosed by brackets "[]" replaced with your own identifying 17*26947304SEvan Yan * information: Portions Copyright [yyyy] [name of copyright owner] 18*26947304SEvan Yan * 19*26947304SEvan Yan * CDDL HEADER END 20*26947304SEvan Yan */ 21*26947304SEvan Yan 22*26947304SEvan Yan /* 23*26947304SEvan Yan * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24*26947304SEvan Yan * Use is subject to license terms. 25*26947304SEvan Yan */ 26*26947304SEvan Yan 27*26947304SEvan Yan #ifndef _LIBHOTPLUG_H 28*26947304SEvan Yan #define _LIBHOTPLUG_H 29*26947304SEvan Yan 30*26947304SEvan Yan #ifdef __cplusplus 31*26947304SEvan Yan extern "C" { 32*26947304SEvan Yan #endif 33*26947304SEvan Yan 34*26947304SEvan Yan #include <sys/types.h> 35*26947304SEvan Yan 36*26947304SEvan Yan /* 37*26947304SEvan Yan * Define node types in hotplug snapshot. 38*26947304SEvan Yan */ 39*26947304SEvan Yan #define HP_NODE_NONE 0 40*26947304SEvan Yan #define HP_NODE_DEVICE 1 41*26947304SEvan Yan #define HP_NODE_CONNECTOR 2 42*26947304SEvan Yan #define HP_NODE_PORT 3 43*26947304SEvan Yan #define HP_NODE_USAGE 4 44*26947304SEvan Yan 45*26947304SEvan Yan /* 46*26947304SEvan Yan * Define flags for hp_init(). 47*26947304SEvan Yan */ 48*26947304SEvan Yan #define HPINFOUSAGE 0x1 49*26947304SEvan Yan #define HPINFOSEARCH 0x2 /* private flag */ 50*26947304SEvan Yan 51*26947304SEvan Yan /* 52*26947304SEvan Yan * Define flags for hp_set_state(). 53*26947304SEvan Yan */ 54*26947304SEvan Yan #define HPFORCE 0x1 55*26947304SEvan Yan #define HPQUERY 0x2 56*26947304SEvan Yan 57*26947304SEvan Yan /* 58*26947304SEvan Yan * Define private flags. 59*26947304SEvan Yan */ 60*26947304SEvan Yan 61*26947304SEvan Yan /* 62*26947304SEvan Yan * Define return values for hp_traverse() callbacks. 63*26947304SEvan Yan */ 64*26947304SEvan Yan #define HP_WALK_CONTINUE 0 65*26947304SEvan Yan #define HP_WALK_PRUNECHILD 1 66*26947304SEvan Yan #define HP_WALK_PRUNESIBLING 2 67*26947304SEvan Yan #define HP_WALK_TERMINATE 3 68*26947304SEvan Yan 69*26947304SEvan Yan /* 70*26947304SEvan Yan * Define opaque handle to hotplug nodes. 71*26947304SEvan Yan */ 72*26947304SEvan Yan typedef struct hp_node *hp_node_t; 73*26947304SEvan Yan 74*26947304SEvan Yan /* 75*26947304SEvan Yan * Interface prototypes. 76*26947304SEvan Yan */ 77*26947304SEvan Yan hp_node_t hp_init(const char *path, const char *connection, uint_t flags); 78*26947304SEvan Yan void hp_fini(hp_node_t root); 79*26947304SEvan Yan int hp_traverse(hp_node_t root, void *arg, 80*26947304SEvan Yan int (*hp_callback)(hp_node_t, void *arg)); 81*26947304SEvan Yan int hp_type(hp_node_t node); 82*26947304SEvan Yan char *hp_name(hp_node_t node); 83*26947304SEvan Yan char *hp_usage(hp_node_t node); 84*26947304SEvan Yan int hp_state(hp_node_t node); 85*26947304SEvan Yan char *hp_description(hp_node_t node); 86*26947304SEvan Yan time_t hp_last_change(hp_node_t node); 87*26947304SEvan Yan hp_node_t hp_parent(hp_node_t node); 88*26947304SEvan Yan hp_node_t hp_child(hp_node_t node); 89*26947304SEvan Yan hp_node_t hp_sibling(hp_node_t node); 90*26947304SEvan Yan int hp_path(hp_node_t node, char *path, char *connection); 91*26947304SEvan Yan int hp_set_state(hp_node_t node, uint_t flags, int state, 92*26947304SEvan Yan hp_node_t *resultsp); 93*26947304SEvan Yan int hp_set_private(hp_node_t node, const char *options, 94*26947304SEvan Yan char **resultsp); 95*26947304SEvan Yan int hp_get_private(hp_node_t node, const char *options, 96*26947304SEvan Yan char **resultsp); 97*26947304SEvan Yan int hp_pack(hp_node_t root, char **bufp, size_t *lenp); 98*26947304SEvan Yan int hp_unpack(char *packed_buf, size_t packed_len, hp_node_t *retp); 99*26947304SEvan Yan 100*26947304SEvan Yan #ifdef __cplusplus 101*26947304SEvan Yan } 102*26947304SEvan Yan #endif 103*26947304SEvan Yan 104*26947304SEvan Yan #endif /* _LIBHOTPLUG_H */ 105