summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/acpica/acpi_machdep.c6
-rw-r--r--sys/i386/bios/smapi.c2
-rw-r--r--sys/i386/bios/smbios.c2
-rw-r--r--sys/i386/bios/vpd.c2
4 files changed, 12 insertions, 0 deletions
diff --git a/sys/i386/acpica/acpi_machdep.c b/sys/i386/acpica/acpi_machdep.c
index e26cce9..4568671 100644
--- a/sys/i386/acpica/acpi_machdep.c
+++ b/sys/i386/acpica/acpi_machdep.c
@@ -164,6 +164,7 @@ acpi_capm_get_info(apm_info_t aip)
else
aip->ai_acline = acline; /* on/off */
+ newbus_slock();
if (acpi_battery_get_battinfo(NULL, &batt) != 0) {
aip->ai_batt_stat = APM_UNKNOWN;
aip->ai_batt_life = APM_UNKNOWN;
@@ -175,6 +176,7 @@ acpi_capm_get_info(apm_info_t aip)
aip->ai_batt_time = (batt.min == -1) ? -1 : batt.min * 60;
aip->ai_batteries = acpi_battery_get_units();
}
+ newbus_sunlock();
return (0);
}
@@ -190,6 +192,7 @@ acpi_capm_get_pwstatus(apm_pwstatus_t app)
(app->ap_device < PMDV_BATT0 || app->ap_device > PMDV_BATT_ALL))
return (1);
+ newbus_slock();
if (app->ap_device == PMDV_ALLDEV)
error = acpi_battery_get_battinfo(NULL, &batt);
else {
@@ -200,6 +203,7 @@ acpi_capm_get_pwstatus(apm_pwstatus_t app)
else
error = ENXIO;
}
+ newbus_sunlock();
if (error)
return (1);
@@ -283,7 +287,9 @@ apmopen(struct cdev *dev, int flag, int fmt, struct thread *td)
struct acpi_softc *acpi_sc;
struct apm_clone_data *clone;
+ newbus_slock();
acpi_sc = devclass_get_softc(devclass_find("acpi"), 0);
+ newbus_sunlock();
clone = apm_create_clone(dev, acpi_sc);
dev->si_drv1 = clone;
diff --git a/sys/i386/bios/smapi.c b/sys/i386/bios/smapi.c
index e572664..74cf612 100644
--- a/sys/i386/bios/smapi.c
+++ b/sys/i386/bios/smapi.c
@@ -288,10 +288,12 @@ smapi_modevent (module_t mod, int what, void *arg)
case MOD_LOAD:
break;
case MOD_UNLOAD:
+ newbus_xlock();
devclass_get_devices(smapi_devclass, &devs, &count);
for (i = 0; i < count; i++) {
device_delete_child(device_get_parent(devs[i]), devs[i]);
}
+ newbus_xunlock();
break;
default:
break;
diff --git a/sys/i386/bios/smbios.c b/sys/i386/bios/smbios.c
index f38d985..37a3b2c 100644
--- a/sys/i386/bios/smbios.c
+++ b/sys/i386/bios/smbios.c
@@ -230,10 +230,12 @@ smbios_modevent (mod, what, arg)
case MOD_LOAD:
break;
case MOD_UNLOAD:
+ newbus_xlock();
devclass_get_devices(smbios_devclass, &devs, &count);
for (i = 0; i < count; i++) {
device_delete_child(device_get_parent(devs[i]), devs[i]);
}
+ newbus_xunlock();
break;
default:
break;
diff --git a/sys/i386/bios/vpd.c b/sys/i386/bios/vpd.c
index 246b76d..f816121 100644
--- a/sys/i386/bios/vpd.c
+++ b/sys/i386/bios/vpd.c
@@ -248,10 +248,12 @@ vpd_modevent (mod, what, arg)
case MOD_LOAD:
break;
case MOD_UNLOAD:
+ newbus_xlock();
devclass_get_devices(vpd_devclass, &devs, &count);
for (i = 0; i < count; i++) {
device_delete_child(device_get_parent(devs[i]), devs[i]);
}
+ newbus_xunlock();
break;
default:
break;
OpenPOWER on IntegriCloud