1#- 2# Copyright (c) 2010 Spectra Logic Corporation 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions, and the following disclaimer, 10# without modification. 11# 2. Redistributions in binary form must reproduce at minimum a disclaimer 12# substantially similar to the "NO WARRANTY" disclaimer below 13# ("Disclaimer") and any redistribution must be conditioned upon 14# including a substantially similar Disclaimer requirement for further 15# binary redistribution. 16# 17# NO WARRANTY 18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 21# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22# HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 27# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28# POSSIBILITY OF SUCH DAMAGES. 29# 30# $FreeBSD$ 31# 32 33#include <sys/bus.h> 34#include <sys/lock.h> 35#include <sys/sx.h> 36#include <sys/taskqueue.h> 37 38#include <xen/xenstore/xenstorevar.h> 39#include <xen/xenbus/xenbusb.h> 40 41INTERFACE xenbusb; 42 43/** 44 * \brief Enumerate all devices of the given type on this bus. 45 * 46 * \param _dev NewBus device_t for this XenBus (front/back) bus instance. 47 * \param _type String indicating the device sub-tree (e.g. "vfb", "vif") 48 * to enumerate. 49 * 50 * \return On success, 0. Otherwise an errno value indicating the 51 * type of failure. 52 * 53 * Devices that are found should be entered into the NewBus hierarchy via 54 * xenbusb_add_device(). xenbusb_add_device() ignores duplicate detects 55 * and ignores duplicate devices, so it can be called unconditionally 56 * for any device found in the XenStore. 57 */ 58METHOD int enumerate_type { 59 device_t _dev; 60 const char *_type; 61}; 62 63/** 64 * \brief Determine and store the XenStore path for the other end of 65 * a split device whose local end is represented by ivars. 66 * 67 * If successful, the xd_otherend_path field of the child's instance 68 * variables must be updated. 69 * 70 * \param _dev NewBus device_t for this XenBus (front/back) bus instance. 71 * \param _ivars Instance variables from the XenBus child device for 72 * which to perform this function. 73 * 74 * \return On success, 0. Otherwise an errno value indicating the 75 * type of failure. 76 */ 77METHOD int get_otherend_node { 78 device_t _dev; 79 struct xenbus_device_ivars *_ivars; 80} 81 82/** 83 * \brief Handle a XenStore change detected in the peer tree of a child 84 * device of the bus. 85 * 86 * \param _bus NewBus device_t for this XenBus (front/back) bus instance. 87 * \param _child NewBus device_t for the child device whose peer XenStore 88 * tree has changed. 89 * \param _state The current state of the peer. 90 */ 91METHOD void otherend_changed { 92 device_t _bus; 93 device_t _child; 94 enum xenbus_state _state; 95} DEFAULT xenbusb_otherend_changed; 96 97/** 98 * \brief Handle a XenStore change detected in the local tree of a child 99 * device of the bus. 100 * 101 * \param _bus NewBus device_t for this XenBus (front/back) bus instance. 102 * \param _child NewBus device_t for the child device whose peer XenStore 103 * tree has changed. 104 * \param _path The tree relative sub-path to the modified node. The empty 105 * string indicates the root of the tree was destroyed. 106 */ 107METHOD void localend_changed { 108 device_t _bus; 109 device_t _child; 110 const char * _path; 111} DEFAULT xenbusb_localend_changed; 112