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 35HEADER { 36struct xenbus_device_ivars; 37} 38 39INTERFACE xenbusb; 40 41/** 42 * \brief Enumerate all devices of the given type on this bus. 43 * 44 * \param _dev NewBus device_t for this XenBus (front/back) bus instance. 45 * \param _type String indicating the device sub-tree (e.g. "vfb", "vif") 46 * to enumerate. 47 * 48 * \return On success, 0. Otherwise an errno value indicating the 49 * type of failure. 50 * 51 * Devices that are found should be entered into the NewBus hierarchy via 52 * xenbusb_add_device(). xenbusb_add_device() ignores duplicate detects 53 * and ignores duplicate devices, so it can be called unconditionally 54 * for any device found in the XenStore. 55 */ 56METHOD int enumerate_type { 57 device_t _dev; 58 const char *_type; 59}; 60 61/** 62 * \brief Determine and store the XenStore path for the other end of 63 * a split device whose local end is represented by ivars. 64 * 65 * If successful, the xd_otherend_path field of the child's instance 66 * variables must be updated. 67 * 68 * \param _dev NewBus device_t for this XenBus (front/back) bus instance. 69 * \param _ivars Instance variables from the XenBus child device for 70 * which to perform this function. 71 * 72 * \return On success, 0. Otherwise an errno value indicating the 73 * type of failure. 74 */ 75METHOD int get_otherend_node { 76 device_t _dev; 77 struct xenbus_device_ivars *_ivars; 78} 79