| KSENSOR_KIND(9F) | Kernel Functions for Drivers | KSENSOR_KIND(9F) |
ksensor_kind_current,
ksensor_kind_temperature,
ksensor_kind_voltage —
ksensor kind implementations
#include
<sys/sensors.h>
int
ksensor_kind_current(void
*driver, sensor_ioctl_kind_t *kind);
int
ksensor_kind_temperature(void
*driver, sensor_ioctl_kind_t *kind);
int
ksensor_kind_voltage(void
*driver, sensor_ioctl_kind_t *kind);
Volatile - This interface is still evolving in illumos. API and ABI stability is not guaranteed.
The
ksensor_kind_current(),
ksensor_kind_temperature(),
and
ksensor_kind_voltage()
functions are implementations of the ksensor
kso_kind(9E) entry point and
indicate that a sensor is a current
(SENSOR_KIND_CURRENT), temperature
(SENSOR_KIND_TEMPERATURE), or voltage
(SENSOR_KIND_VOLTAGE) sensor respectively.
While these functions can be called directly, it is expected that they will be used as part of a ksensor operations vector as described in ksensor_ops(9E), allowing the driver to avoid having to implement the entry point directly. If a driver does use this function, it must ensure that the return value is passed back to the framework as part of its kso_kind(9E) entry point.
The ksensor_kind_current(),
ksensor_kind_temperature(), and
ksensor_kind_voltage() functions can be called from
user, or
kernel
context.
Upon successful completion, the
ksensor_kind_current(),
ksensor_kind_temperature(), and
ksensor_kind_voltage() functions return
0 and update
kind with the corresponding information. Otherwise, a
non-zero error value is returned.
Example
1 Using ksensor_kind_temperature() as part
of the ksensor_ops(9E) entry
points.
#include <sys/sensors.h>
static int coretemp_read(void *, sensor_ioctl_scalar_t *);
static const ksensor_ops_t coretemp_temp_ops = {
.kso_kind = ksensor_kind_temperature,
.kso_scalar = coretemp_read
};
| May 10, 2024 | OmniOS |