diff options
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/acpica/acpi_machdep.c | 6 | ||||
-rw-r--r-- | sys/i386/bios/smapi.c | 2 | ||||
-rw-r--r-- | sys/i386/bios/smbios.c | 2 | ||||
-rw-r--r-- | sys/i386/bios/vpd.c | 2 |
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; |