Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/acpi_support/atk0110.c
Show All 12 Lines | |||||
#ifdef AIBS_VERBOSE | #ifdef AIBS_VERBOSE | ||||
device_printf(sc->sc_dev, "%c%i: 0x%08jx %20s %5jd / %5jd\n", | device_printf(sc->sc_dev, "%c%i: 0x%08jx %20s %5jd / %5jd\n", | ||||
type_name[0], idx, | type_name[0], idx, | ||||
(uintmax_t)sensor->i, descr, (intmax_t)sensor->l, | (uintmax_t)sensor->i, descr, (intmax_t)sensor->l, | ||||
(intmax_t)sensor->h); | (intmax_t)sensor->h); | ||||
#endif | #endif | ||||
SYSCTL_ADD_PROC(device_get_sysctl_ctx(sc->sc_dev), | SYSCTL_ADD_PROC(device_get_sysctl_ctx(sc->sc_dev), | ||||
SYSCTL_CHILDREN(so), idx, sysctl_name, | SYSCTL_CHILDREN(so), idx, sysctl_name, | ||||
CTLTYPE_INT | CTLFLAG_RD, sc, (uintptr_t)sensor, | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, (uintptr_t)sensor, | ||||
sc->sc_ggrp_method ? aibs_sysctl_ggrp : aibs_sysctl, | sc->sc_ggrp_method ? aibs_sysctl_ggrp : aibs_sysctl, | ||||
sensor->t == AIBS_SENS_TYPE_TEMP ? "IK" : "I", descr); | sensor->t == AIBS_SENS_TYPE_TEMP ? "IK" : "I", descr); | ||||
} | } | ||||
static int | static int | ||||
aibs_attach_ggrp(struct aibs_softc *sc) | aibs_attach_ggrp(struct aibs_softc *sc) | ||||
{ | { | ||||
ACPI_STATUS s; | ACPI_STATUS s; | ||||
Show All 24 Lines | |||||
panic("add_sensor succeeded for unknown sensor type %d", | panic("add_sensor succeeded for unknown sensor type %d", | ||||
sensor->t); | sensor->t); | ||||
} | } | ||||
if (*so == NULL) { | if (*so == NULL) { | ||||
/* sysctl subtree for sensors of this type */ | /* sysctl subtree for sensors of this type */ | ||||
*so = SYSCTL_ADD_NODE(device_get_sysctl_ctx(sc->sc_dev), | *so = SYSCTL_ADD_NODE(device_get_sysctl_ctx(sc->sc_dev), | ||||
SYSCTL_CHILDREN(device_get_sysctl_tree(sc->sc_dev)), | SYSCTL_CHILDREN(device_get_sysctl_tree(sc->sc_dev)), | ||||
sensor->t, name, CTLFLAG_RD, NULL, NULL); | sensor->t, name, CTLFLAG_RD | CTLFLAG_MPSAFE, | ||||
NULL, NULL); | |||||
} | } | ||||
aibs_sensor_added(sc, *so, name, *s_idx, sensor, descr); | aibs_sensor_added(sc, *so, name, *s_idx, sensor, descr); | ||||
*s_idx += 1; | *s_idx += 1; | ||||
} | } | ||||
AcpiOsFree(buf.Pointer); | AcpiOsFree(buf.Pointer); | ||||
return (0); | return (0); | ||||
} | } | ||||
Show All 24 Lines | |||||
case AIBS_SENS_TYPE_FAN: | case AIBS_SENS_TYPE_FAN: | ||||
sc->sc_asens_fan = as; | sc->sc_asens_fan = as; | ||||
break; | break; | ||||
} | } | ||||
/* sysctl subtree for sensors of this type */ | /* sysctl subtree for sensors of this type */ | ||||
*so = SYSCTL_ADD_NODE(device_get_sysctl_ctx(sc->sc_dev), | *so = SYSCTL_ADD_NODE(device_get_sysctl_ctx(sc->sc_dev), | ||||
SYSCTL_CHILDREN(device_get_sysctl_tree(sc->sc_dev)), st, | SYSCTL_CHILDREN(device_get_sysctl_tree(sc->sc_dev)), st, | ||||
node, CTLFLAG_RD, NULL, NULL); | node, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, NULL); | ||||
for (i = 0, o++; i < n; i++, o++) { | for (i = 0, o++; i < n; i++, o++) { | ||||
const char *descr; | const char *descr; | ||||
err = aibs_add_sensor(sc, o, &as[i], &descr); | err = aibs_add_sensor(sc, o, &as[i], &descr); | ||||
if (err == 0) | if (err == 0) | ||||
aibs_sensor_added(sc, *so, node, i, &as[i], descr); | aibs_sensor_added(sc, *so, node, i, &as[i], descr); | ||||
} | } | ||||
Show All 12 Lines |