xref: /openbsd-src/share/man/man9/sensor_attach.9 (revision 5dfee2283fd7fd95d715914acc2abb87f60de8b3)
1*5dfee228Sschwarze.\"	$OpenBSD: sensor_attach.9,v 1.13 2015/09/14 15:14:55 schwarze Exp $
2a01a9410Sderaadt.\"
3a01a9410Sderaadt.\" Copyright (c) 2006 Michael Knudsen <mk@openbsd.org>
4a01a9410Sderaadt.\" Copyright (c) 2006 Constantine A. Murenin <cnst+openbsd@bugmail.mojo.ru>
5a01a9410Sderaadt.\" All rights reserved.
6a01a9410Sderaadt.\"
7a01a9410Sderaadt.\" Redistribution and use in source and binary forms, with or without
8a01a9410Sderaadt.\" modification, are permitted provided that the following conditions
9a01a9410Sderaadt.\" are met:
10a01a9410Sderaadt.\"
11a01a9410Sderaadt.\" 1. Redistributions of source code must retain the above copyright
12a01a9410Sderaadt.\"    notice, this list of conditions and the following disclaimer.
13a01a9410Sderaadt.\" 2. The name of the author may not be used to endorse or promote products
14a01a9410Sderaadt.\"    derived from this software without specific prior written permission.
15a01a9410Sderaadt.\"
16a01a9410Sderaadt.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
17a01a9410Sderaadt.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
18a01a9410Sderaadt.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
19a01a9410Sderaadt.\" THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20a01a9410Sderaadt.\" EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21a01a9410Sderaadt.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22a01a9410Sderaadt.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23a01a9410Sderaadt.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24a01a9410Sderaadt.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25a01a9410Sderaadt.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26a01a9410Sderaadt.\"
27*5dfee228Sschwarze.Dd $Mdocdate: September 14 2015 $
28dc2c3c7eSderaadt.Dt SENSOR_ATTACH 9
29a01a9410Sderaadt.Os
30a01a9410Sderaadt.Sh NAME
31a01a9410Sderaadt.Nm sensor_attach ,
32a01a9410Sderaadt.Nm sensor_detach ,
33a01a9410Sderaadt.Nm sensor_find ,
34a01a9410Sderaadt.Nm sensordev_install ,
35a01a9410Sderaadt.Nm sensordev_deinstall ,
36a01a9410Sderaadt.Nm sensordev_get ,
37a01a9410Sderaadt.Nm sensor_task_register ,
38a01a9410Sderaadt.Nm sensor_task_unregister
39a01a9410Sderaadt.Nd sensors framework
40a01a9410Sderaadt.Sh SYNOPSIS
41dddd2645Sschwarze.In sys/sensors.h
42a01a9410Sderaadt.Ft void
43*5dfee228Sschwarze.Fn sensordev_install "struct ksensordev *sensdev"
44a01a9410Sderaadt.Ft void
45*5dfee228Sschwarze.Fn sensordev_deinstall "struct ksensordev *sensdev"
46991c0036Scnst.Ft struct ksensordev *
47*5dfee228Sschwarze.Fn sensordev_get "int devnum"
48a01a9410Sderaadt.Pp
49a01a9410Sderaadt.Ft void
50*5dfee228Sschwarze.Fn sensor_attach "struct ksensordev *sensdev" "struct ksensor *sens"
51a01a9410Sderaadt.Ft void
52*5dfee228Sschwarze.Fn sensor_detach "struct ksensordev *sensdev" "struct ksensor *sens"
53991c0036Scnst.Ft struct ksensor *
54*5dfee228Sschwarze.Fn sensor_find "int devnum" "enum sensor_type stype" "int numt"
55a01a9410Sderaadt.Pp
562f4ab089Sdlg.Ft struct sensor_task *
57*5dfee228Sschwarze.Fn sensor_task_register "void *arg" "void (*func)(void *)" "int period"
58a01a9410Sderaadt.Ft void
59*5dfee228Sschwarze.Fn sensor_task_unregister "struct sensor_task *st"
60a01a9410Sderaadt.Sh DESCRIPTION
61a01a9410SderaadtThe
62a01a9410Sderaadtsensors
63a01a9410Sderaadtframework API provides a mechanism for manipulation of hardware sensors
64a01a9410Sderaadtthat are available under the
65a01a9410Sderaadt.Va hw.sensors
66a01a9410Sderaadt.Xr sysctl 8
67a01a9410Sderaadttree.
68a01a9410Sderaadt.Pp
69a01a9410Sderaadt.Fn sensor_attach
70b411c5edSjmcadds the sensor specified by the
71369bef3aSschwarze.Fa sens
72b411c5edSjmcargument to the sensor device specified by the
73369bef3aSschwarze.Fa sensdev
74a01a9410Sderaadtargument.
75a01a9410Sderaadt.Fn sensor_detach
76a01a9410Sderaadtcan be used to remove sensors previously added by
77a01a9410Sderaadt.Fn sensor_attach .
78a01a9410Sderaadt.Pp
79a01a9410Sderaadt.Fn sensordev_install
80b411c5edSjmcregisters the sensor device specified by the
81369bef3aSschwarze.Fa sensdev
82a01a9410Sderaadtargument so that all sensors that are attached to the device become
83a01a9410Sderaadtaccessible via the sysctl interface.
84a01a9410Sderaadt.Fn sensordev_deinstall
85a01a9410Sderaadtcan be used to remove sensor devices previously registered by
86a01a9410Sderaadt.Fn sensordev_install .
87a01a9410Sderaadt.Pp
88a01a9410Sderaadt.Fn sensordev_get
89a01a9410Sderaadttakes ordinal number
90369bef3aSschwarze.Fa devnum
91b411c5edSjmcspecifying a sensor device and
92a01a9410Sderaadtreturns a pointer to the corresponding
93275cbf62Sderaadt.Vt struct ksensordev ,
94a01a9410Sderaadtor
95a01a9410Sderaadt.Dv NULL
96a01a9410Sderaadtif no such sensor device exists.
97a01a9410Sderaadt.Pp
98a01a9410Sderaadt.Fn sensor_find
99a01a9410Sderaadttakes ordinal number
100369bef3aSschwarze.Fa devnum
101b411c5edSjmcspecifying a sensor device, sensor type
102369bef3aSschwarze.Fa stype
103a01a9410Sderaadtand ordinal number of sensor of such type
104369bef3aSschwarze.Fa numt ,
105a01a9410Sderaadtand returns a pointer to the corresponding
106275cbf62Sderaadt.Vt struct ksensor ,
107a01a9410Sderaadtor
108a01a9410Sderaadt.Dv NULL
109a01a9410Sderaadtif no such sensor exists.
110a01a9410Sderaadt.Fn sensor_find
111a01a9410Sderaadtwill always return
112a01a9410Sderaadt.Dv NULL
113a01a9410Sderaadtif the corresponding sensor devices are not registered by
114a01a9410Sderaadt.Fn sensordev_install .
115a01a9410Sderaadt.Pp
116a01a9410SderaadtDrivers are responsible for retrieving, interpreting, and normalising
117a01a9410Sderaadtsensor values and updating the sensor struct periodically.
118a01a9410SderaadtIf the driver needs process context, for example to sleep, it can
119a01a9410Sderaadtregister a task with the sensor framework.
120a01a9410Sderaadt.Pp
121a01a9410Sderaadt.Fn sensor_task_register
122a01a9410Sderaadtis used to register a periodic task to update sensors.
123a01a9410SderaadtThe
124a01a9410Sderaadt.Fa func
125a01a9410Sderaadtargument is a pointer to the function to run with an interval of
126a01a9410Sderaadt.Fa period
127a01a9410Sderaadtseconds.
128a01a9410SderaadtThe
129a01a9410Sderaadt.Fa arg
130a01a9410Sderaadtparameter is the argument given to the
131a01a9410Sderaadt.Fa func
132a01a9410Sderaadtfunction.
133a01a9410Sderaadt.Fn sensor_task_unregister
134dc5e9e21Scnstensures that the task specified by the
1352f4ab089Sdlg.Fa st
136dc5e9e21Scnstargument is no longer running, and then removes it from the queue.
137a01a9410Sderaadt.Pp
138a01a9410SderaadtAll the functions in the sensor framework must be called during
139a01a9410Sderaadt.Xr autoconf 9
140a01a9410Sderaadtor from a process context.
141a01a9410SderaadtAdditionally,
142a01a9410Sderaadt.Fn sensor_task_unregister
143dc5e9e21Scnstmust not be called from the sensor task that it is about to remove.
144a01a9410Sderaadt.Sh SEE ALSO
145a01a9410Sderaadt.Xr sysctl 8 ,
146a01a9410Sderaadt.Xr autoconf 9
147a01a9410Sderaadt.Sh HISTORY
148a01a9410SderaadtThe sensor framework was written by
149f0641c22Sschwarze.An Alexander Yurchenko Aq Mt grange@openbsd.org
150a01a9410Sderaadtand first appeared in
151a01a9410Sderaadt.Ox 3.4 .
152f0641c22Sschwarze.An David Gwynne Aq Mt dlg@openbsd.org
153a01a9410Sderaadtlater extended it for
154a01a9410Sderaadt.Ox 3.8 .
155f0641c22Sschwarze.An Constantine A. Murenin Aq Mt cnst+openbsd@bugmail.mojo.ru
156a01a9410Sderaadtextended it even further by introducing the concept of sensor devices in
157a01a9410Sderaadt.Ox 4.1 .
158