KSENSOR_KIND(9F) Kernel Functions for Drivers KSENSOR_KIND(9F)

ksensor_kind_current, ksensor_kind_temperature, ksensor_kind_voltageksensor 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);

This interface is still evolving in illumos. API and ABI stability is not guaranteed.

The (), (), and () 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 , or context.

Upon successful completion, the ksensor_kind_current(), ksensor_kind_temperature(), and ksensor_kind_voltage() functions return and update kind with the corresponding information. Otherwise, a non-zero error value is returned.

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
};

ksensor(9E), ksensor_ops(9E), kso_kind(9E)

May 10, 2024 OmniOS