Lines Matching refs:am
289 struct acpi_mutex *am; in AcpiOsCreateMutex() local
296 if ((am = malloc(sizeof(*am), M_ACPISEM, M_NOWAIT | M_ZERO)) == NULL) in AcpiOsCreateMutex()
299 snprintf(am->am_name, sizeof(am->am_name), "ACPI mutex (%p)", am); in AcpiOsCreateMutex()
300 mtx_init(&am->am_lock, am->am_name, NULL, MTX_DEF); in AcpiOsCreateMutex()
302 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "created %s\n", am->am_name)); in AcpiOsCreateMutex()
304 *OutHandle = (ACPI_MUTEX)am; in AcpiOsCreateMutex()
315 struct acpi_mutex *am = (struct acpi_mutex *)Handle; in AcpiOsDeleteMutex() local
319 if (am == NULL) { in AcpiOsDeleteMutex()
324 mtx_lock(&am->am_lock); in AcpiOsDeleteMutex()
326 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "delete %s\n", am->am_name)); in AcpiOsDeleteMutex()
328 if (am->am_waiters > 0) { in AcpiOsDeleteMutex()
330 "reset %s, owner %p\n", am->am_name, am->am_owner)); in AcpiOsDeleteMutex()
331 am->am_reset = 1; in AcpiOsDeleteMutex()
332 wakeup(am); in AcpiOsDeleteMutex()
333 while (am->am_waiters > 0) { in AcpiOsDeleteMutex()
334 if (mtx_sleep(&am->am_reset, &am->am_lock, in AcpiOsDeleteMutex()
338 am->am_name, am->am_waiters)); in AcpiOsDeleteMutex()
339 mtx_unlock(&am->am_lock); in AcpiOsDeleteMutex()
342 if (ACPIMTX_AVAIL(am)) in AcpiOsDeleteMutex()
345 am->am_name, am->am_waiters)); in AcpiOsDeleteMutex()
349 am->am_name, am->am_owner, am->am_waiters)); in AcpiOsDeleteMutex()
353 mtx_unlock(&am->am_lock); in AcpiOsDeleteMutex()
355 mtx_destroy(&am->am_lock); in AcpiOsDeleteMutex()
356 free(am, M_ACPISEM); in AcpiOsDeleteMutex()
362 struct acpi_mutex *am = (struct acpi_mutex *)Handle; in AcpiOsAcquireMutex() local
368 if (am == NULL) in AcpiOsAcquireMutex()
371 mtx_lock(&am->am_lock); in AcpiOsAcquireMutex()
373 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "acquire %s\n", am->am_name)); in AcpiOsAcquireMutex()
375 if (ACPIMTX_OWNED(am)) { in AcpiOsAcquireMutex()
376 am->am_nested++; in AcpiOsAcquireMutex()
379 am->am_name, am->am_nested)); in AcpiOsAcquireMutex()
380 mtx_unlock(&am->am_lock); in AcpiOsAcquireMutex()
386 if (!ACPIMTX_AVAIL(am)) in AcpiOsAcquireMutex()
390 while (!ACPIMTX_AVAIL(am)) { in AcpiOsAcquireMutex()
391 am->am_waiters++; in AcpiOsAcquireMutex()
392 error = mtx_sleep(am, &am->am_lock, PCATCH, "acmtx", 0); in AcpiOsAcquireMutex()
393 am->am_waiters--; in AcpiOsAcquireMutex()
394 if (error == EINTR || am->am_reset) { in AcpiOsAcquireMutex()
406 while (!ACPIMTX_AVAIL(am)) { in AcpiOsAcquireMutex()
412 mtx_unlock(&am->am_lock); in AcpiOsAcquireMutex()
414 mtx_lock(&am->am_lock); in AcpiOsAcquireMutex()
419 while (!ACPIMTX_AVAIL(am)) { in AcpiOsAcquireMutex()
421 am->am_waiters++; in AcpiOsAcquireMutex()
422 error = mtx_sleep(am, &am->am_lock, PCATCH, in AcpiOsAcquireMutex()
424 am->am_waiters--; in AcpiOsAcquireMutex()
425 if (error == EINTR || am->am_reset) { in AcpiOsAcquireMutex()
429 if (ACPIMTX_AVAIL(am)) in AcpiOsAcquireMutex()
440 am->am_owner = curthread; in AcpiOsAcquireMutex()
442 mtx_unlock(&am->am_lock); in AcpiOsAcquireMutex()
450 struct acpi_mutex *am = (struct acpi_mutex *)Handle; in AcpiOsReleaseMutex() local
454 if (am == NULL) { in AcpiOsReleaseMutex()
460 mtx_lock(&am->am_lock); in AcpiOsReleaseMutex()
462 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "release %s\n", am->am_name)); in AcpiOsReleaseMutex()
464 if (ACPIMTX_OWNED(am)) { in AcpiOsReleaseMutex()
465 if (am->am_nested > 0) { in AcpiOsReleaseMutex()
468 am->am_name, am->am_nested)); in AcpiOsReleaseMutex()
469 am->am_nested--; in AcpiOsReleaseMutex()
471 am->am_owner = NULL; in AcpiOsReleaseMutex()
473 if (ACPIMTX_AVAIL(am)) in AcpiOsReleaseMutex()
475 "release already available %s\n", am->am_name)); in AcpiOsReleaseMutex()
479 am->am_name, am->am_owner, am->am_nested)); in AcpiOsReleaseMutex()
481 if (am->am_waiters > 0 && ACPIMTX_AVAIL(am)) in AcpiOsReleaseMutex()
482 wakeup_one(am); in AcpiOsReleaseMutex()
484 mtx_unlock(&am->am_lock); in AcpiOsReleaseMutex()