summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/os
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/os')
-rw-r--r--usr/src/uts/common/os/cred.c9
-rw-r--r--usr/src/uts/common/os/ksensor.c40
-rw-r--r--usr/src/uts/common/os/softint.c46
3 files changed, 62 insertions, 33 deletions
diff --git a/usr/src/uts/common/os/cred.c b/usr/src/uts/common/os/cred.c
index 0bd6cfd44f..5e909667de 100644
--- a/usr/src/uts/common/os/cred.c
+++ b/usr/src/uts/common/os/cred.c
@@ -20,13 +20,14 @@
*/
/*
* Copyright (c) 2013, Ira Cooper. All rights reserved.
+ * Copyright 2020 Nexenta by DDN, Inc. All rights reserved.
*/
/*
* Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
/*
* University Copyright- Copyright (c) 1982, 1986, 1988
@@ -288,7 +289,7 @@ crget(void)
{
cred_t *cr = kmem_cache_alloc(cred_cache, KM_SLEEP);
- bcopy(kcred, cr, crsize);
+ bcopy(zone_kcred(), cr, crsize);
cr->cr_ref = 1;
zone_cred_hold(cr->cr_zone);
if (cr->cr_label)
@@ -377,7 +378,7 @@ crfree(cred_t *cr)
/*
* Copy a cred structure to a new one and free the old one.
* The new cred will have two references. One for the calling process,
- * and one for the thread.
+ * and one for the thread.
*/
cred_t *
crcopy(cred_t *cr)
@@ -404,7 +405,7 @@ crcopy(cred_t *cr)
/*
* Copy a cred structure to a new one and free the old one.
* The new cred will have two references. One for the calling process,
- * and one for the thread.
+ * and one for the thread.
* This variation on crcopy uses a pre-allocated structure for the
* "new" cred.
*/
diff --git a/usr/src/uts/common/os/ksensor.c b/usr/src/uts/common/os/ksensor.c
index c89cad4206..491fbcc7cd 100644
--- a/usr/src/uts/common/os/ksensor.c
+++ b/usr/src/uts/common/os/ksensor.c
@@ -544,14 +544,29 @@ ksensor_create(dev_info_t *dip, const ksensor_ops_t *ops, void *arg,
}
int
-ksensor_create_temp_pcidev(dev_info_t *dip, const ksensor_ops_t *ops,
- void *arg, const char *name, id_t *idp)
+ksensor_create_scalar_pcidev(dev_info_t *dip, uint_t kind,
+ const ksensor_ops_t *ops, void *arg, const char *name, id_t *idp)
{
char *pci_name, *type;
+ const char *class;
int *regs, ret;
uint_t nregs;
uint16_t bus, dev;
+ switch (kind) {
+ case SENSOR_KIND_TEMPERATURE:
+ class = "ddi_sensor:temperature:pci";
+ break;
+ case SENSOR_KIND_VOLTAGE:
+ class = "ddi_sensor:voltage:pci";
+ break;
+ case SENSOR_KIND_CURRENT:
+ class = "ddi_sensor:current:pci";
+ break;
+ default:
+ return (ENOTSUP);
+ }
+
if (ddi_prop_lookup_string(DDI_DEV_T_ANY, dip, 0, "device_type",
&type) != DDI_PROP_SUCCESS) {
return (EINVAL);
@@ -579,8 +594,7 @@ ksensor_create_temp_pcidev(dev_info_t *dip, const ksensor_ops_t *ops,
pci_name = kmem_asprintf("%x.%x:%s", bus, dev, name);
- ret = ksensor_create(dip, ops, arg, pci_name,
- "ddi_sensor:temperature:pci", idp);
+ ret = ksensor_create(dip, ops, arg, pci_name, class, idp);
strfree(pci_name);
return (ret);
}
@@ -750,7 +764,7 @@ ksensor_op_kind(id_t id, sensor_ioctl_kind_t *kind)
}
int
-ksensor_op_temperature(id_t id, sensor_ioctl_temperature_t *temp)
+ksensor_op_scalar(id_t id, sensor_ioctl_scalar_t *scalar)
{
int ret;
ksensor_t *sensor;
@@ -759,7 +773,7 @@ ksensor_op_temperature(id_t id, sensor_ioctl_temperature_t *temp)
return (ret);
}
- ret = sensor->ksensor_ops->kso_temp(sensor->ksensor_arg, temp);
+ ret = sensor->ksensor_ops->kso_scalar(sensor->ksensor_arg, scalar);
ksensor_release(sensor);
return (ret);
@@ -831,6 +845,20 @@ ksensor_kind_temperature(void *unused, sensor_ioctl_kind_t *k)
return (0);
}
+int
+ksensor_kind_current(void *unused, sensor_ioctl_kind_t *k)
+{
+ k->sik_kind = SENSOR_KIND_CURRENT;
+ return (0);
+}
+
+int
+ksensor_kind_voltage(void *unused, sensor_ioctl_kind_t *k)
+{
+ k->sik_kind = SENSOR_KIND_VOLTAGE;
+ return (0);
+}
+
void
ksensor_init(void)
{
diff --git a/usr/src/uts/common/os/softint.c b/usr/src/uts/common/os/softint.c
index ecdb038c79..8801340cf9 100644
--- a/usr/src/uts/common/os/softint.c
+++ b/usr/src/uts/common/os/softint.c
@@ -58,29 +58,29 @@
*
* Starting state is IDLE.
*
- * softint()
+ * softint()
*
*
* (c)
- * ____________________________________________________
- * | ^ ^
- * v (a) | (b) |
- * IDLE--------------------->PEND--------------------->DRAIN
- * ^ | |
- * | | |
- * | | |
- * | | |
- * | | |
- * | d d
- * | | |
- * | v v
- * | PEND DRAIN
- * | (e) & &
- * |<-----------------------STEAL STEAL
- * ^ |
- * | |
- * | (e) v
- * |_________________________<__________________________|
+ * ____________________________________________________
+ * | ^ ^
+ * v (a) | (b) |
+ * IDLE--------------------->PEND--------------------->DRAIN
+ * ^ | |
+ * | | |
+ * | | |
+ * | | |
+ * | | |
+ * | d d
+ * | | |
+ * | v v
+ * | PEND DRAIN
+ * | (e) & &
+ * |<-----------------------STEAL STEAL
+ * ^ |
+ * | |
+ * | (e) v
+ * |_________________________<__________________________|
*
*
*
@@ -146,9 +146,9 @@ uint_t softcall_pokemax = 10;
/*
* This ensures that softcall entries don't get stuck for long. It's expressed
- * in 10 milliseconds as 1 unit. When hires_tick is set or other clock frequency
- * is used, softcall_init() ensures that it's still expressed as 1 = 10 milli
- * seconds.
+ * in 10 milliseconds as 1 unit. Regardless of the value of hires_tick or
+ * clock frequency, softcall_init() ensures that it's still expressed as 1 =
+ * 10 milliseconds.
*/
unsigned int softcall_delay = 1;