The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/envsys.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $NetBSD: envsys.h,v 1.39 2022/11/21 21:24:01 brad Exp $ */
    2 
    3 /*-
    4  * Copyright (c) 1999, 2007, 2014 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Tim Rightnour, Juan Romero Pardines and Bill Squier.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  *
   19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   29  * POSSIBILITY OF SUCH DAMAGE.
   30  */
   31 
   32 #ifndef _SYS_ENVSYS_H_
   33 #define _SYS_ENVSYS_H_
   34 
   35 #ifndef _KERNEL
   36 #include <stdbool.h>
   37 #endif
   38 
   39 #include <sys/ioccom.h>
   40 #include <sys/power.h>
   41 #include <sys/queue.h>
   42 
   43 /*
   44  * ENVironmental SYStem version 2 (aka ENVSYS 2)
   45  */
   46 
   47 #define ENVSYS_MAXSENSORS       512
   48 #define ENVSYS_DESCLEN          32
   49 
   50 /* sensor units */
   51 enum envsys_units {
   52         ENVSYS_STEMP            = 0,    /* Temperature (microkelvins) */
   53         ENVSYS_SFANRPM,                 /* Fan RPM */
   54         ENVSYS_SVOLTS_AC,               /* AC Volts */
   55         ENVSYS_SVOLTS_DC,               /* DC Volts */
   56         ENVSYS_SOHMS,                   /* Ohms */
   57         ENVSYS_SWATTS,                  /* Watts */
   58         ENVSYS_SAMPS,                   /* Ampere */
   59         ENVSYS_SWATTHOUR,               /* Watt hour */
   60         ENVSYS_SAMPHOUR,                /* Ampere hour */
   61         ENVSYS_INDICATOR,               /* Indicator */
   62         ENVSYS_INTEGER,                 /* Integer */
   63         ENVSYS_DRIVE,                   /* Drive */
   64         ENVSYS_BATTERY_CAPACITY,        /* Battery capacity */
   65         ENVSYS_BATTERY_CHARGE,          /* Battery charging/discharging */
   66         ENVSYS_SRELHUMIDITY,            /* relative humidity */
   67         ENVSYS_LUX,                     /* illuminance in lux */
   68         ENVSYS_PRESSURE,                /* pressure in hPa */
   69         ENVSYS_NSENSORS
   70 };
   71 
   72 /* sensor states */
   73 enum envsys_states {
   74         ENVSYS_SVALID           = 10,   /* sensor state is valid */
   75         ENVSYS_SINVALID,                /* sensor state is invalid */
   76         ENVSYS_SCRITICAL,               /* sensor state is critical */
   77         ENVSYS_SCRITUNDER,              /* sensor state is critical under */
   78         ENVSYS_SCRITOVER,               /* sensor state is critical over */
   79         ENVSYS_SWARNUNDER,              /* sensor state is warn under */
   80         ENVSYS_SWARNOVER                /* sensor state is warn over */
   81 };
   82 
   83 /* sensor drive states */
   84 enum envsys_drive_states {
   85         ENVSYS_DRIVE_EMPTY      = 1,    /* drive is empty */
   86         ENVSYS_DRIVE_READY,             /* drive is ready */
   87         ENVSYS_DRIVE_POWERUP,           /* drive is powered up */
   88         ENVSYS_DRIVE_ONLINE,            /* drive is online */
   89         ENVSYS_DRIVE_IDLE,              /* drive is idle */
   90         ENVSYS_DRIVE_ACTIVE,            /* drive is active */
   91         ENVSYS_DRIVE_REBUILD,           /* drive is rebuilding */
   92         ENVSYS_DRIVE_POWERDOWN,         /* drive is powered down */
   93         ENVSYS_DRIVE_FAIL,              /* drive failed */
   94         ENVSYS_DRIVE_PFAIL,             /* drive is degraded */
   95         ENVSYS_DRIVE_MIGRATING,         /* drive is migrating */
   96         ENVSYS_DRIVE_OFFLINE,           /* drive is offline */
   97         ENVSYS_DRIVE_BUILD,             /* drive is building */
   98         ENVSYS_DRIVE_CHECK              /* drive is checking its state */
   99 };
  100 
  101 /* sensor battery capacity states */
  102 enum envsys_battery_capacity_states {
  103         ENVSYS_BATTERY_CAPACITY_NORMAL  = 1,    /* normal cap in battery */
  104         ENVSYS_BATTERY_CAPACITY_WARNING,        /* warning cap in battery */
  105         ENVSYS_BATTERY_CAPACITY_CRITICAL,       /* critical cap in battery */
  106         ENVSYS_BATTERY_CAPACITY_HIGH,           /* high cap in battery */
  107         ENVSYS_BATTERY_CAPACITY_MAX,            /* maximum cap in battery */
  108         ENVSYS_BATTERY_CAPACITY_LOW             /* low cap in battery */
  109 };
  110 
  111 /* sensor indicator states */
  112 enum envsys_indicator_states {
  113         ENVSYS_INDICATOR_FALSE          = 0,
  114         ENVSYS_INDICATOR_TRUE           = 1
  115 };
  116 
  117 /*
  118  * IOCTLs
  119  */
  120 #define ENVSYS_GETDICTIONARY    _IOWR('E', 0, struct plistref)
  121 #define ENVSYS_SETDICTIONARY    _IOWR('E', 1, struct plistref)
  122 #define ENVSYS_REMOVEPROPS      _IOWR('E', 2, struct plistref)
  123 
  124 /*
  125  * Compatibility with old interface. Only ENVSYS_GTREDATA
  126  * and ENVSYS_GTREINFO ioctls are supported.
  127  */
  128 
  129 /* get sensor data */
  130 
  131 struct envsys_tre_data {
  132         unsigned int sensor;
  133         union {                         /* all data is given */
  134                 uint32_t data_us;       /* in microKelvins, */
  135                 int32_t data_s;         /* rpms, volts, amps, */
  136         } cur, min, max, avg;           /* ohms, watts, etc */
  137                                         /* see units below */
  138 
  139         uint32_t        warnflags;      /* warning flags */
  140         uint32_t        validflags;     /* sensor valid flags */
  141         unsigned int    units;          /* type of sensor */
  142 };
  143 typedef struct envsys_tre_data envsys_tre_data_t;
  144 
  145 /* flags for warnflags */
  146 #define ENVSYS_WARN_OK          0x00000000  /* All is well */
  147 #define ENVSYS_WARN_UNDER       0x00000001  /* an under condition */
  148 #define ENVSYS_WARN_CRITUNDER   0x00000002  /* a critical under condition */
  149 #define ENVSYS_WARN_OVER        0x00000004  /* an over condition */
  150 #define ENVSYS_WARN_CRITOVER    0x00000008  /* a critical over condition */
  151 
  152 /* drive status */
  153 #define ENVSYS_DRIVE_EMPTY      1
  154 #define ENVSYS_DRIVE_READY      2
  155 #define ENVSYS_DRIVE_POWERUP    3
  156 #define ENVSYS_DRIVE_ONLINE     4
  157 #define ENVSYS_DRIVE_IDLE       5
  158 #define ENVSYS_DRIVE_ACTIVE     6
  159 #define ENVSYS_DRIVE_REBUILD    7
  160 #define ENVSYS_DRIVE_POWERDOWN  8
  161 #define ENVSYS_DRIVE_FAIL       9
  162 #define ENVSYS_DRIVE_PFAIL      10
  163 
  164 #ifdef ENVSYSUNITNAMES
  165 static const char * const envsysunitnames[] = {
  166     "degC", "RPM", "VAC", "V", "Ohms", "W",
  167     "A", "Wh", "Ah", "bool", "integer", "drive", "%rH", "lux", "Unk"
  168 };
  169 static const char * const envsysdrivestatus[] = {
  170     "unknown", "empty", "ready", "powering up", "online", "idle", "active",
  171     "rebuilding", "powering down", "failed", "degraded"
  172 };
  173 #endif
  174 
  175 
  176 /* flags for validflags */
  177 #define ENVSYS_FVALID           0x00000001  /* sensor is valid */
  178 #define ENVSYS_FCURVALID        0x00000002  /* cur for this sens is valid */
  179 #define ENVSYS_FMINVALID        0x00000004  /* min for this sens is valid */
  180 #define ENVSYS_FMAXVALID        0x00000008  /* max for this sens is valid */
  181 #define ENVSYS_FAVGVALID        0x00000010  /* avg for this sens is valid */
  182 #define ENVSYS_FFRACVALID       0x00000020  /* display fraction of max */
  183 
  184 #define ENVSYS_GTREDATA         _IOWR('E', 2, envsys_tre_data_t)
  185 
  186 /* set and check sensor info */
  187 
  188 struct envsys_basic_info {
  189         unsigned int sensor;    /* sensor number */
  190         unsigned int units;     /* type of sensor */
  191         char    desc[33];       /* sensor description */
  192         unsigned int rfact;     /* for volts, (int)(factor x 10^4) */
  193         unsigned int rpms;      /* for fans, set nominal RPMs */
  194         uint32_t validflags;    /* sensor valid flags */
  195 };
  196 typedef struct envsys_basic_info envsys_basic_info_t;
  197 
  198 #define ENVSYS_GTREINFO         _IOWR('E', 4, envsys_basic_info_t)
  199 
  200 #endif /* _SYS_ENVSYS_H_ */

Cache object: 221e92ea47f7a7742ec69645490499a8


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.