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