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_IMPL_H 28*10923SEvan.Yan@Sun.COM #define _LIBHOTPLUG_IMPL_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/param.h> 35*10923SEvan.Yan@Sun.COM #include <libhotplug.h> 36*10923SEvan.Yan@Sun.COM 37*10923SEvan.Yan@Sun.COM /* 38*10923SEvan.Yan@Sun.COM * Definition of a node in a hotplug information snapshot. 39*10923SEvan.Yan@Sun.COM */ 40*10923SEvan.Yan@Sun.COM struct hp_node { 41*10923SEvan.Yan@Sun.COM int hp_type; 42*10923SEvan.Yan@Sun.COM char *hp_name; 43*10923SEvan.Yan@Sun.COM char *hp_usage; 44*10923SEvan.Yan@Sun.COM char *hp_description; 45*10923SEvan.Yan@Sun.COM char *hp_basepath; 46*10923SEvan.Yan@Sun.COM int hp_state; 47*10923SEvan.Yan@Sun.COM time_t hp_last_change; 48*10923SEvan.Yan@Sun.COM hp_node_t hp_parent; 49*10923SEvan.Yan@Sun.COM hp_node_t hp_child; 50*10923SEvan.Yan@Sun.COM hp_node_t hp_sibling; 51*10923SEvan.Yan@Sun.COM }; 52*10923SEvan.Yan@Sun.COM 53*10923SEvan.Yan@Sun.COM /* 54*10923SEvan.Yan@Sun.COM * Definitions used for packing/unpacking snapshots. 55*10923SEvan.Yan@Sun.COM */ 56*10923SEvan.Yan@Sun.COM #define HP_INFO_BASE "hp_info.basepath" 57*10923SEvan.Yan@Sun.COM #define HP_INFO_NODE "hp_info.node" 58*10923SEvan.Yan@Sun.COM #define HP_INFO_BRANCH "hp_info.branch" 59*10923SEvan.Yan@Sun.COM #define HP_INFO_TYPE "hp_info.type" 60*10923SEvan.Yan@Sun.COM #define HP_INFO_NAME "hp_info.name" 61*10923SEvan.Yan@Sun.COM #define HP_INFO_USAGE "hp_info.usage" 62*10923SEvan.Yan@Sun.COM #define HP_INFO_STATE "hp_info.state" 63*10923SEvan.Yan@Sun.COM #define HP_INFO_DESC "hp_info.description" 64*10923SEvan.Yan@Sun.COM #define HP_INFO_TIME "hp_info.last_change" 65*10923SEvan.Yan@Sun.COM 66*10923SEvan.Yan@Sun.COM /* 67*10923SEvan.Yan@Sun.COM * Definitions for the door interface to hotplugd(1m). 68*10923SEvan.Yan@Sun.COM */ 69*10923SEvan.Yan@Sun.COM #define HOTPLUGD_PID "/var/run/hotplugd.pid" 70*10923SEvan.Yan@Sun.COM #define HOTPLUGD_DOOR "/var/run/hotplugd_door" 71*10923SEvan.Yan@Sun.COM 72*10923SEvan.Yan@Sun.COM typedef enum { 73*10923SEvan.Yan@Sun.COM HP_CMD_NONE = 0, 74*10923SEvan.Yan@Sun.COM HP_CMD_GETINFO, 75*10923SEvan.Yan@Sun.COM HP_CMD_CHANGESTATE, 76*10923SEvan.Yan@Sun.COM HP_CMD_SETPRIVATE, 77*10923SEvan.Yan@Sun.COM HP_CMD_GETPRIVATE 78*10923SEvan.Yan@Sun.COM } hp_cmd_t; 79*10923SEvan.Yan@Sun.COM 80*10923SEvan.Yan@Sun.COM #define HPD_CMD "hp_door.cmd" 81*10923SEvan.Yan@Sun.COM #define HPD_PATH "hp_door.path" 82*10923SEvan.Yan@Sun.COM #define HPD_CONNECTION "hp_door.connection" 83*10923SEvan.Yan@Sun.COM #define HPD_FLAGS "hp_door.flags" 84*10923SEvan.Yan@Sun.COM #define HPD_STATE "hp_door.state" 85*10923SEvan.Yan@Sun.COM #define HPD_OPTIONS "hp_door.options" 86*10923SEvan.Yan@Sun.COM #define HPD_INFO "hp_door.info" 87*10923SEvan.Yan@Sun.COM #define HPD_STATUS "hp_door.status" 88*10923SEvan.Yan@Sun.COM #define HPD_SEQNUM "hp_door.seqnum" 89*10923SEvan.Yan@Sun.COM 90*10923SEvan.Yan@Sun.COM /* 91*10923SEvan.Yan@Sun.COM * Definition of macros to validate flags. 92*10923SEvan.Yan@Sun.COM */ 93*10923SEvan.Yan@Sun.COM #define HP_INIT_FLAGS_VALID(f) ((f & ~(HPINFOUSAGE)) == 0) 94*10923SEvan.Yan@Sun.COM #define HP_SET_STATE_FLAGS_VALID(f) ((f & ~(HPFORCE | HPQUERY)) == 0) 95*10923SEvan.Yan@Sun.COM 96*10923SEvan.Yan@Sun.COM /* 97*10923SEvan.Yan@Sun.COM * Definition of global flag to enable debug. 98*10923SEvan.Yan@Sun.COM */ 99*10923SEvan.Yan@Sun.COM extern int libhotplug_debug; 100*10923SEvan.Yan@Sun.COM 101*10923SEvan.Yan@Sun.COM #ifdef __cplusplus 102*10923SEvan.Yan@Sun.COM } 103*10923SEvan.Yan@Sun.COM #endif 104*10923SEvan.Yan@Sun.COM 105*10923SEvan.Yan@Sun.COM #endif /* _LIBHOTPLUG_IMPL_H */ 106