ipmi_sensor.h

来自「支持IPMI协议的开源API包。可以开发服务器硬件状态监控程序。」· C头文件 代码 · 共 506 行 · 第 1/2 页

H
506
字号
/* * ipmi_sensor.h * * MontaVista IPMI interface for dealing with sensors * * 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_SENSOR_H#define _IPMI_SENSOR_H#include <OpenIPMI/ipmi_types.h>#include <OpenIPMI/ipmi_addr.h>#include <OpenIPMI/opq.h>/* The abstract type for sensors. */typedef struct ipmi_sensor_info_s ipmi_sensor_info_t;/* Allocate a repository for holding sensors for an MC. */int ipmi_sensors_alloc(ipmi_mc_t *mc, ipmi_sensor_info_t **new_sensors);/* Destroy a sensor repository and all the sensors in it. */int ipmi_sensors_destroy(ipmi_sensor_info_t *sensors);/* Return the number of sensors in the data structure. */unsigned int ipmi_sensors_get_count(ipmi_sensor_info_t *sensors);/* Get the waitq for the sensors repository.  This is used to   serialize SDR fetches. */opq_t *_ipmi_sensors_get_waitq(ipmi_sensor_info_t *sensors);/* * These are for OEM code to create their own sensors. *//* Allocate a sensor, it will not be associated with anything yet. */int ipmi_sensor_alloc_nonstandard(ipmi_sensor_t **new_sensor);typedef void (*ipmi_sensor_destroy_cb)(ipmi_sensor_t *sensor,				       void          *cb_data);/* Add a sensor for the given MC and put it into the given entity.   Note that sensor will NOT appear as owned by the "mc", the "mc" is   used for the OS handler and such.  The source_mc is used to show   which MC "owns" the creation of the sensor, and may be NULL if the   sensor is presumed to come from the "main" SDR repository.  A   handler can be supplied if the OEM code wants to be called when the   sensor is destroyed, or NULL can be supplied if none is needed. */#define NONSTANDARD_SENSOR_LUN 4int ipmi_sensor_add_nonstandard(    ipmi_mc_t              *mc,    ipmi_mc_t              *source_mc,    ipmi_sensor_t          *sensor,    unsigned int           num,    unsigned int           send_lun,    ipmi_entity_t          *ent,    ipmi_sensor_destroy_cb destroy_handler,    void                   *destroy_handler_cb_data);/* Extract the sensors from the given SDRs.  The SDRs should have come   from the source_mc, or if from the main SDR repository, source_mc   should be NULL. */int ipmi_sensor_handle_sdrs(ipmi_domain_t   *domain,			    ipmi_mc_t       *source_mc,			    ipmi_sdr_info_t *sdrs);/* Destroy the sensor from the internal data. */int ipmi_sensor_destroy(ipmi_sensor_t *sensor);/* Called by when an event occurs for the given sensor.  This may be use   by OEM code to deliver non-standard events to sensors. */int ipmi_sensor_event(ipmi_sensor_t *sensor, ipmi_event_t *event);/* Fetch boatloads of internal information about sensors. */int ipmi_sensor_get_owner(ipmi_sensor_t *sensor);int ipmi_sensor_get_channel(ipmi_sensor_t *sensor);int ipmi_sensor_get_entity_id(ipmi_sensor_t *sensor);int ipmi_sensor_get_entity_instance(ipmi_sensor_t *sensor);int ipmi_sensor_get_entity_instance_logical(ipmi_sensor_t *sensor);int ipmi_sensor_get_linearization(ipmi_sensor_t *sensor);int ipmi_sensor_get_raw_m(ipmi_sensor_t *sensor, int val);int ipmi_sensor_get_raw_tolerance(ipmi_sensor_t *sensor, int val);int ipmi_sensor_get_raw_b(ipmi_sensor_t *sensor, int val);int ipmi_sensor_get_raw_accuracy(ipmi_sensor_t *sensor, int val);int ipmi_sensor_get_raw_accuracy_exp(ipmi_sensor_t *sensor, int val);int ipmi_sensor_get_raw_r_exp(ipmi_sensor_t *sensor, int val);int ipmi_sensor_get_raw_b_exp(ipmi_sensor_t *sensor, int val);int ipmi_sensor_get_raw_nominal_reading(ipmi_sensor_t *sensor);int ipmi_sensor_get_raw_normal_max(ipmi_sensor_t *sensor);int ipmi_sensor_get_raw_normal_min(ipmi_sensor_t *sensor);int ipmi_sensor_get_raw_sensor_max(ipmi_sensor_t *sensor);int ipmi_sensor_get_raw_sensor_min(ipmi_sensor_t *sensor);int ipmi_sensor_get_default_threshold_raw(ipmi_sensor_t *sensor,					  int           threshold,					  int           *raw);int ipmi_sensor_get_default_threshold_cooked(ipmi_sensor_t *sensor,					     int           threshold,					     double        *cooked);/* Controls rounding on conversions from flow.  NORMAL does normal   rounding (ie 1.4->1, 1.5->2, 1.6->2, etc.).  DOWN sets the value to   the one just less than the value (ie, 1.x->1).  UP sets the value   to the one just above the value (ie 1.x->2 if x>0). */enum ipmi_round_e { ROUND_NORMAL, ROUND_DOWN, ROUND_UP };/* Conversion routines for converting between raw and floating-point   values. */int ipmi_sensor_convert_from_raw(ipmi_sensor_t     *sensor,				 int               val,				 double            *result);int ipmi_sensor_convert_to_raw(ipmi_sensor_t     *sensor,			       enum ipmi_round_e rounding,			       double            val,			       int               *result);int ipmi_sensor_get_positive_going_threshold_hysteresis(ipmi_sensor_t *sensor);int ipmi_sensor_get_negative_going_threshold_hysteresis(ipmi_sensor_t *sensor);int ipmi_get_default_sensor_thresholds(ipmi_sensor_t     *sensor,				       ipmi_thresholds_t *th);/* These calls allow OEM code to set up a sensor. */void ipmi_sensor_set_owner(ipmi_sensor_t *sensor, int owner);void ipmi_sensor_set_channel(ipmi_sensor_t *sensor, int channel);void ipmi_sensor_set_entity_id(ipmi_sensor_t *sensor, int entity_id);void ipmi_sensor_set_entity_instance(ipmi_sensor_t *sensor,				     int           entity_instance);void ipmi_sensor_set_entity_instance_logical(    ipmi_sensor_t *sensor,    int           entity_instance_logical);void ipmi_sensor_set_sensor_init_scanning(ipmi_sensor_t *sensor,					  int           sensor_init_scanning);void ipmi_sensor_set_sensor_init_events(ipmi_sensor_t *sensor,					int           sensor_init_events);void ipmi_sensor_set_sensor_init_thresholds(    ipmi_sensor_t *sensor,    int           sensor_init_thresholds);void ipmi_sensor_set_sensor_init_hysteresis(    ipmi_sensor_t *sensor,    int           sensor_init_hysteresis);void ipmi_sensor_set_sensor_init_type(ipmi_sensor_t *sensor,				      int           sensor_init_type);void ipmi_sensor_set_sensor_init_pu_events(    ipmi_sensor_t *sensor,    int           sensor_init_pu_events);void ipmi_sensor_set_sensor_init_pu_scanning(    ipmi_sensor_t *sensor,    int           sensor_init_pu_scanning);void ipmi_sensor_set_ignore_if_no_entity(ipmi_sensor_t *sensor,					 int           ignore_if_no_entity);void ipmi_sensor_set_supports_auto_rearm(ipmi_sensor_t *sensor,					 int supports_rearm);void ipmi_sensor_set_hysteresis_support(ipmi_sensor_t *sensor,					int           hysteresis_support);void ipmi_sensor_set_threshold_access(ipmi_sensor_t *sensor,				      int           threshold_access);void ipmi_sensor_set_event_support(ipmi_sensor_t *sensor, int event_support);void ipmi_sensor_set_sensor_type(ipmi_sensor_t *sensor, int sensor_type);void ipmi_sensor_set_event_reading_type(ipmi_sensor_t *sensor,					int           event_reading_type);void ipmi_sensor_set_analog_data_format(ipmi_sensor_t *sensor,					int           analog_data_format);void ipmi_sensor_set_rate_unit(ipmi_sensor_t *sensor, int rate_unit);void ipmi_sensor_set_modifier_unit_use(ipmi_sensor_t *sensor,				       int           modifier_unit_use);void ipmi_sensor_set_percentage(ipmi_sensor_t *sensor, int percentage);void ipmi_sensor_set_base_unit(ipmi_sensor_t *sensor, int base_unit);void ipmi_sensor_set_modifier_unit(ipmi_sensor_t *sensor, int modifier_unit);void ipmi_sensor_set_linearization(ipmi_sensor_t *sensor, int linearization);void ipmi_sensor_set_raw_m(ipmi_sensor_t *sensor, int idx, int val);void ipmi_sensor_set_raw_tolerance(ipmi_sensor_t *sensor, int idx, int val);void ipmi_sensor_set_raw_b(ipmi_sensor_t *sensor, int idx, int val);void ipmi_sensor_set_raw_accuracy(ipmi_sensor_t *sensor, int idx, int val);void ipmi_sensor_set_raw_accuracy_exp(ipmi_sensor_t *sensor, int idx, int val);void ipmi_sensor_set_raw_r_exp(ipmi_sensor_t *sensor, int idx, int val);void ipmi_sensor_set_raw_b_exp(ipmi_sensor_t *sensor, int idx, int val);void ipmi_sensor_set_normal_min_specified(ipmi_sensor_t *sensor,					  int           normal_min_specified);void ipmi_sensor_set_normal_max_specified(ipmi_sensor_t *sensor,					  int           normal_max_specified);void ipmi_sensor_set_nominal_reading_specified(    ipmi_sensor_t *sensor,    int            nominal_reading_specified);void ipmi_sensor_set_raw_nominal_reading(ipmi_sensor_t *sensor,					 int           raw_nominal_reading);void ipmi_sensor_set_raw_normal_max(ipmi_sensor_t *sensor, int raw_normal_max);void ipmi_sensor_set_raw_normal_min(ipmi_sensor_t *sensor, int raw_normal_min);void ipmi_sensor_set_raw_sensor_max(ipmi_sensor_t *sensor, int raw_sensor_max);void ipmi_sensor_set_raw_sensor_min(ipmi_sensor_t *sensor, int raw_sensor_min);int ipmi_sensor_set_raw_default_threshold(ipmi_sensor_t *sensor,					  int           threshold,					  int           val);void ipmi_sensor_set_positive_going_threshold_hysteresis(    ipmi_sensor_t *sensor,    int           positive_going_threshold_hysteresis);void ipmi_sensor_set_negative_going_threshold_hysteresis(    ipmi_sensor_t *sensor,    int           negative_going_threshold_hysteresis);void ipmi_sensor_set_oem1(ipmi_sensor_t *sensor, int oem1);/* This value is copied into an internal array, so no need to save or   manage. */void ipmi_sensor_set_id(ipmi_sensor_t *sensor, char *id,			enum ipmi_str_type_e type, int length);void ipmi_sensor_set_discrete_assertion_event_supported(    ipmi_sensor_t *sensor,    int           event,    int           val);void ipmi_sensor_set_discrete_deassertion_event_supported(    ipmi_sensor_t *sensor,    int           event,    int           val);void ipmi_sensor_discrete_set_event_readable(ipmi_sensor_t *sensor,					     int           event,					     int           val);void ipmi_sensor_set_threshold_assertion_event_supported(    ipmi_sensor_t               *sensor,    enum ipmi_thresh_e          event,    enum ipmi_event_value_dir_e dir,    int                         val);void ipmi_sensor_set_threshold_deassertion_event_supported(    ipmi_sensor_t               *sensor,    enum ipmi_thresh_e          event,    enum ipmi_event_value_dir_e dir,    int                         val);

⌨️ 快捷键说明

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