1.\" Copyright (c) 2000 2.\" Matthew Jacob <mjacob@FreeBSD.org>. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" 26.\" $FreeBSD$ 27.\" 28.Dd November 12, 2019 29.Dt SES 4 30.Os 31.Sh NAME 32.Nm ses 33.Nd SCSI Environmental Services driver 34.Sh SYNOPSIS 35.Cd device ses 36.Sh DESCRIPTION 37The 38.Nm 39driver provides support for all 40.Tn SCSI 41devices of the environmental services class that are attached to the system 42through a supported 43.Tn SCSI 44Host Adapter, as well as emulated support for SAF-TE (SCSI Accessible 45Fault Tolerant Enclosures). 46The environmental services class generally are enclosure devices that 47provide environmental information such as number of power supplies (and 48state), temperature, device slots, and so on. 49.Pp 50A 51.Tn SCSI 52Host 53adapter must also be separately configured into the system 54before a 55.Tn SCSI 56Environmental Services device can be configured. 57.Sh KERNEL CONFIGURATION 58It is only necessary to explicitly configure one 59.Nm 60device; data structures are dynamically allocated as devices are found 61on the 62.Tn SCSI 63bus. 64.Pp 65A separate option, 66.Va SES_ENABLE_PASSTHROUGH , 67may be specified to allow the 68.Nm 69driver to perform functions on devices of other classes that claim to 70also support 71.Nm 72functionality. 73.Sh IOCTLS 74The following 75.Xr ioctl 2 76calls apply to 77.Nm 78devices. 79They are defined in the header file 80.In cam/scsi/scsi_enc.h 81(\fIq.v.\fR). 82.Bl -tag -width ENCIOC_GETENCSTAT 83.It Dv ENCIOC_GETNELM 84Used to find out how many 85.Nm 86elements are driven by this particular device instance. 87.It Dv ENCIOC_GETELMMAP 88Read, from the kernel, an array of SES elements which contains 89the element identifier, which subenclosure it is in, and the 90.Nm 91type of the element. 92.It Dv ENCIOC_GETENCSTAT 93Get the overall enclosure status. 94.It Dv ENCIOC_SETENCSTAT 95Set the overall enclosure status. 96.It Dv ENCIOC_GETELMSTAT 97Get the status of a particular element. 98.It Dv ENCIOC_SETELMSTAT 99Set the status of a particular element. 100.It Dv ENCIOC_GETTEXT 101Get the associated help text for an element (not yet implemented). 102.Nm 103devices often have descriptive text for an element which can tell 104you things like location (e.g., "left power supply"). 105.It Dv ENCIOC_INIT 106Initialize the enclosure. 107.It Dv ENCIOC_GETELMDESC 108Get the element's descriptor string. 109.It Dv ENCIOC_GETELMDEVNAMES 110Get the device names, if any, associated with this element. 111.It Dv ENCIOC_GETSTRING 112Used to read the SES String In Diagnostic Page. 113The contents of this page are device-specific. 114.It Dv ENCIOC_SETSTRING 115Used to set the SES String Out Diagnostic Page. 116The contents of this page are device-specific. 117.It Dv ENCIOC_GETENCNAME 118Used to get the name of the enclosure. 119.It Dv ENCIOC_GETENCID 120Used to get the Enclosure Logical Identifier. 121.El 122.Sh EXAMPLE USAGE 123The files contained in 124.In /usr/share/examples/ses 125show simple mechanisms for how to use these interfaces, as well as a 126very stupid simple monitoring daemon. 127.Sh FILES 128.Bl -tag -width /dev/rsdXXXXX -compact 129.It Pa /dev/ses Ns Ar N 130The 131.Em Nth 132.Nm SES 133device. 134.El 135.Sh DIAGNOSTICS 136When the kernel is configured with 137.Tn DEBUG 138enabled, the first open to an SES device will spit out overall enclosure 139parameters to the console. 140.Sh SEE ALSO 141.Xr sesutil 8 142.Sh HISTORY 143The 144.Nm 145driver was originally written for the 146.Tn CAM 147.Tn SCSI 148subsystem by Matthew Jacob and first released in 149.Fx 4.3 . 150It was a functional equivalent of a similar 151driver available in Solaris, Release 7. 152It was largely rewritten by Alexander Motin, Justin Gibbs, and Will Andrews for 153.Fx 9.2 . 154