⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipmi.h

📁 Axis 221 camera embedded programing interface
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * ipmi.h * * MontaVista IPMI interface * * Author: MontaVista Software, Inc. *         Corey Minyard <minyard@mvista.com> *         source@mvista.com * * Copyright 2002 MontaVista Software Inc. * *  This program is free software; you can redistribute it and/or modify it *  under the terms of the GNU General Public License as published by the *  Free Software Foundation; either version 2 of the License, or (at your *  option) any later version. * * *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS *  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *  You should have received a copy of the GNU General Public License along *  with this program; if not, write to the Free Software Foundation, Inc., *  675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef __LINUX_IPMI_H#define __LINUX_IPMI_H#include <linux/ipmi_msgdefs.h>/* * This file describes an interface to an IPMI driver.  You have to * have a fairly good understanding of IPMI to use this, so go read * the specs first before actually trying to do anything. * * With that said, this driver provides a multi-user interface to the * IPMI driver, and it allows multiple IPMI physical interfaces below * the driver.  The physical interfaces bind as a lower layer on the * driver.  They appear as interfaces to the application using this * interface. * * Multi-user means that multiple applications may use the driver, * send commands, receive responses, etc.  The driver keeps track of * commands the user sends and tracks the responses.  The responses * will go back to the application that send the command.  If the * response doesn't come back in time, the driver will return a * timeout error response to the application.  Asynchronous events * from the BMC event queue will go to all users bound to the driver. * The incoming event queue in the BMC will automatically be flushed * if it becomes full and it is queried once a second to see if * anything is in it.  Incoming commands to the driver will get * delivered as commands. * * This driver provides two main interfaces: one for in-kernel * applications and another for userland applications.  The * capabilities are basically the same for both interface, although * the interfaces are somewhat different.  The stuff in the * #ifdef KERNEL below is the in-kernel interface.  The userland * interface is defined later in the file.  *//* * This is an overlay for all the address types, so it's easy to * determine the actual address type.  This is kind of like addresses * work for sockets. */#define IPMI_MAX_ADDR_SIZE 32struct ipmi_addr{	 /* Try to take these from the "Channel Medium Type" table	    in section 6.5 of the IPMI 1.5 manual. */	int   addr_type;	short channel;	char  data[IPMI_MAX_ADDR_SIZE];};/* * When the address is not used, the type will be set to this value. * The channel is the BMC's channel number for the channel (usually * 0), or IPMC_BMC_CHANNEL if communicating directly with the BMC. */#define IPMI_SYSTEM_INTERFACE_ADDR_TYPE	0x0cstruct ipmi_system_interface_addr{	int           addr_type;	short         channel;	unsigned char lun;};/* An IPMB Address. */#define IPMI_IPMB_ADDR_TYPE		0x01/* Used for broadcast get device id as described in section 17.9 of the   IPMI 1.5 manual. */ #define IPMI_IPMB_BROADCAST_ADDR_TYPE	0x41struct ipmi_ipmb_addr{	int           addr_type;	short         channel;	unsigned char slave_addr;	unsigned char lun;};/* * A LAN Address.  This is an address to/from a LAN interface bridged * by the BMC, not an address actually out on the LAN. * * A concious decision was made here to deviate slightly from the IPMI * spec.  We do not use rqSWID and rsSWID like it shows in the * message.  Instead, we use remote_SWID and local_SWID.  This means * that any message (a request or response) from another device will * always have exactly the same address.  If you didn't do this, * requests and responses from the same device would have different * addresses, and that's not too cool. * * In this address, the remote_SWID is always the SWID the remote * message came from, or the SWID we are sending the message to. * local_SWID is always our SWID.  Note that having our SWID in the * message is a little weird, but this is required. */#define IPMI_LAN_ADDR_TYPE		0x04struct ipmi_lan_addr{	int           addr_type;	short         channel;	unsigned char privilege;	unsigned char session_handle;	unsigned char remote_SWID;	unsigned char local_SWID;	unsigned char lun;};/* * Channel for talking directly with the BMC.  When using this * channel, This is for the system interface address type only.  FIXME * - is this right, or should we use -1? */#define IPMI_BMC_CHANNEL  0xf#define IPMI_NUM_CHANNELS 0x10/* * Used to signify an "all channel" bitmask.  This is more than the * actual number of channels because this is used in userland and * will cover us if the number of channels is extended. */#define IPMI_CHAN_ALL     (~0)/* * A raw IPMI message without any addressing.  This covers both * commands and responses.  The completion code is always the first * byte of data in the response (as the spec shows the messages laid * out). */struct ipmi_msg{	unsigned char  netfn;	unsigned char  cmd;	unsigned short data_len;	unsigned char  *data;};struct kernel_ipmi_msg{	unsigned char  netfn;	unsigned char  cmd;	unsigned short data_len;	unsigned char  *data;};/* * Various defines that are useful for IPMI applications. */#define IPMI_INVALID_CMD_COMPLETION_CODE	0xC1#define IPMI_TIMEOUT_COMPLETION_CODE		0xC3#define IPMI_UNKNOWN_ERR_COMPLETION_CODE	0xff/* * Receive types for messages coming from the receive interface.  This * is used for the receive in-kernel interface and in the receive * IOCTL. * * The "IPMI_RESPONSE_RESPNOSE_TYPE" is a little strange sounding, but * it allows you to get the message results when you send a response * message. */#define IPMI_RESPONSE_RECV_TYPE		1 /* A response to a command */#define IPMI_ASYNC_EVENT_RECV_TYPE	2 /* Something from the event queue */#define IPMI_CMD_RECV_TYPE		3 /* A command from somewhere else */#define IPMI_RESPONSE_RESPONSE_TYPE	4 /* The response for					      a sent response, giving any					      error status for sending the					      response.  When you send a					      response message, this will					      be returned. *//* Note that async events and received commands do not have a completion   code as the first byte of the incoming data, unlike a response. *//* * Modes for ipmi_set_maint_mode() and the userland IOCTL.  The AUTO * setting is the default and means it will be set on certain * commands.  Hard setting it on and off will override automatic * operation. */#define IPMI_MAINTENANCE_MODE_AUTO	0#define IPMI_MAINTENANCE_MODE_OFF	1#define IPMI_MAINTENANCE_MODE_ON	2/* * The userland interface *//* * The userland interface for the IPMI driver is a standard character * device, with each instance of an interface registered as a minor * number under the major character device. * * The read and write calls do not work, to get messages in and out * requires ioctl calls because of the complexity of the data.  select

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -