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 |