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

📄 ipmi_sel.h

📁 支持IPMI协议的开源API包。可以开发服务器硬件状态监控程序。
💻 H
字号:
/* * ipmi_sel.h * * MontaVista IPMI interface for the system event log * * Author: MontaVista Software, Inc. *         Corey Minyard <minyard@mvista.com> *         source@mvista.com * * Copyright 2002,2003 MontaVista Software Inc. * *  This program is free software; you can redistribute it and/or *  modify it under the terms of the GNU Lesser 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 Lesser General Public *  License along with this program; if not, write to the Free *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef _IPMI_SEL_H#define _IPMI_SEL_H#include <OpenIPMI/ipmi_types.h>/* Opaque type representing a remote SEL repository. */typedef struct ipmi_sel_info_s ipmi_sel_info_t;/* Create a local representation of a remote SEL repository.  When   created, it will not automatically fetch the remote SELs, you need   to do that.  If "sensor" is true, then this will fetch the "sensor"   SELs using GET DEVICE SEL.  If not, it will use GET SEL for   fetching SELs. */int ipmi_sel_alloc(ipmi_mc_t       *mc,		   unsigned int    lun,		   ipmi_sel_info_t **new_sel);/* Destroy an SEL.  Note that if the SEL is currently fetching events,   the destroy cannot complete immediatly, it will be marked for   destruction later.  You can supply a callback that, if not NULL,   will be called when the sel is destroyed. */typedef void (*ipmi_sel_destroyed_t)(ipmi_sel_info_t *sel, void *cb_data);int ipmi_sel_destroy(ipmi_sel_info_t      *sel,		     ipmi_sel_destroyed_t handler,		     void                 *cb_data);/* Add a new event to the SEL. */int ipmi_sel_event_add(ipmi_sel_info_t *sel,		       ipmi_event_t    *new_event);/* Fetch the remote SELs, but do not wait until the fetch is complete,   return immediately.  When the fetch is complete, call the given   handler. */typedef void (*ipmi_sels_fetched_t)(ipmi_sel_info_t *sel,				    int             err,				    int             changed,				    unsigned int    count,				    void            *cb_data);int ipmi_sel_get(ipmi_sel_info_t     *sel,		 ipmi_sels_fetched_t handler,		 void                *cb_data);/* Get the number of undeleted entries in the SEL. */int ipmi_get_sel_count(ipmi_sel_info_t *sel,		       unsigned int    *count);/* Get the number of entries that are used in the real SEL.  This   takes into account events that have been deleted locally but have   not yet been deleted from the real SEL. */int ipmi_get_sel_entries_used(ipmi_sel_info_t *sel,			      unsigned int    *count);ipmi_event_t *ipmi_sel_get_first_event(ipmi_sel_info_t *sel);ipmi_event_t *ipmi_sel_get_last_event(ipmi_sel_info_t *sel);ipmi_event_t *ipmi_sel_get_next_event(ipmi_sel_info_t *sel, ipmi_event_t *p);ipmi_event_t *ipmi_sel_get_prev_event(ipmi_sel_info_t *sel, ipmi_event_t *n);ipmi_event_t *ipmi_sel_get_event_by_recid(ipmi_sel_info_t *sel,					  unsigned int    record_id);/* This callback will be called when a new event is added to the SEL. */typedef void (*ipmi_sel_new_event_handler_cb)(ipmi_sel_info_t *sel,					      ipmi_mc_t       *mc,					      ipmi_event_t    *event,					      void            *cb_data);int ipmi_sel_set_new_event_handler(ipmi_sel_info_t               *sel,				   ipmi_sel_new_event_handler_cb handler,				   void                          *cb_data);/* Fetch all the sels.  The array size should point to a value that   holds the number of elements in the passed in array.  The   array_size will be set to the actual number of elements put into   the array.  If the number of SELs is larger than the supplied   array_size, this will return E2BIG and do nothing. */int ipmi_get_all_sels(ipmi_sel_info_t *sel,		      int             *array_size,		      ipmi_event_t    **array);typedef void (*ipmi_sel_op_done_cb_t)(ipmi_sel_info_t *sel,				      void            *cb_data,				      int             err);/* Delete an event log entry. */int ipmi_sel_del_event(ipmi_sel_info_t       *sel,		       ipmi_event_t          *event,		       ipmi_sel_op_done_cb_t handler,		       void                  *cb_data);int ipmi_sel_del_event_by_recid(ipmi_sel_info_t       *sel,				unsigned int          record_id,				ipmi_sel_op_done_cb_t handler,				void                  *cb_data);/* Get various information from the IPMI SEL info commands. */int ipmi_sel_get_major_version(ipmi_sel_info_t *sel, int *val);int ipmi_sel_get_minor_version(ipmi_sel_info_t *sel, int *val);int ipmi_sel_get_num_entries(ipmi_sel_info_t *sel, int *val);int ipmi_sel_get_free_bytes(ipmi_sel_info_t *sel, int *val);int ipmi_sel_get_overflow(ipmi_sel_info_t *sel, int *val);int ipmi_sel_get_supports_delete_sel(ipmi_sel_info_t *sel, int *val);int ipmi_sel_get_supports_partial_add_sel(ipmi_sel_info_t *sel, int *val);int ipmi_sel_get_supports_reserve_sel(ipmi_sel_info_t *sel, int *val);int ipmi_sel_get_supports_get_sel_allocation(ipmi_sel_info_t *sel,					     int             *val);int ipmi_sel_get_last_addition_timestamp(ipmi_sel_info_t *sel, int *val);/* Add a event to the internal representation of the system event log.   This will return EEXIST if the event already exists. */int ipmi_sel_event_add(ipmi_sel_info_t *sel,		       ipmi_event_t    *new_event);/* Add an event to the remote SEL.  This will not immediately add it   to the internal SEL.  The record id of the added record is returned   in the callback (if there is no error). */typedef void (*ipmi_sel_add_op_done_cb_t)(ipmi_sel_info_t *sel,					  void            *cb_data,					  int             err,					  unsigned int    record_id);int ipmi_sel_add_event_to_sel(ipmi_sel_info_t          *sel,			      ipmi_event_t             *event_to_add,			      ipmi_sel_add_op_done_cb_t done,			      void                     *cb_data);#endif /* _IPMI_SEL_H */

⌨️ 快捷键说明

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