Lines Matching defs:am

272 	struct acpi_mutex	*am;
279 if ((am = malloc(sizeof(*am), M_ACPISEM, M_NOWAIT | M_ZERO)) == NULL)
282 snprintf(am->am_name, sizeof(am->am_name), "ACPI mutex (%p)", am);
283 mtx_init(&am->am_lock, am->am_name, NULL, MTX_DEF);
285 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "created %s\n", am->am_name));
287 *OutHandle = (ACPI_MUTEX)am;
298 struct acpi_mutex *am = (struct acpi_mutex *)Handle;
302 if (am == NULL) {
307 mtx_lock(&am->am_lock);
309 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "delete %s\n", am->am_name));
311 if (am->am_waiters > 0) {
313 "reset %s, owner %p\n", am->am_name, am->am_owner));
314 am->am_reset = 1;
315 wakeup(am);
316 while (am->am_waiters > 0) {
317 if (mtx_sleep(&am->am_reset, &am->am_lock,
321 am->am_name, am->am_waiters));
322 mtx_unlock(&am->am_lock);
325 if (ACPIMTX_AVAIL(am))
328 am->am_name, am->am_waiters));
332 am->am_name, am->am_owner, am->am_waiters));
336 mtx_unlock(&am->am_lock);
338 mtx_destroy(&am->am_lock);
339 free(am, M_ACPISEM);
345 struct acpi_mutex *am = (struct acpi_mutex *)Handle;
351 if (am == NULL)
354 mtx_lock(&am->am_lock);
356 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "acquire %s\n", am->am_name));
358 if (ACPIMTX_OWNED(am)) {
359 am->am_nested++;
362 am->am_name, am->am_nested));
363 mtx_unlock(&am->am_lock);
369 if (!ACPIMTX_AVAIL(am))
373 while (!ACPIMTX_AVAIL(am)) {
374 am->am_waiters++;
375 error = mtx_sleep(am, &am->am_lock, PCATCH, "acmtx", 0);
376 am->am_waiters--;
377 if (error == EINTR || am->am_reset) {
385 while (!ACPIMTX_AVAIL(am)) {
387 am->am_waiters++;
388 error = mtx_sleep(am, &am->am_lock, PCATCH,
390 am->am_waiters--;
391 if (error == EINTR || am->am_reset) {
395 if (ACPIMTX_AVAIL(am))
406 am->am_owner = curthread;
408 mtx_unlock(&am->am_lock);
416 struct acpi_mutex *am = (struct acpi_mutex *)Handle;
420 if (am == NULL) {
426 mtx_lock(&am->am_lock);
428 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "release %s\n", am->am_name));
430 if (ACPIMTX_OWNED(am)) {
431 if (am->am_nested > 0) {
434 am->am_name, am->am_nested));
435 am->am_nested--;
437 am->am_owner = NULL;
439 if (ACPIMTX_AVAIL(am))
441 "release already available %s\n", am->am_name));
445 am->am_name, am->am_owner, am->am_nested));
447 if (am->am_waiters > 0 && ACPIMTX_AVAIL(am))
448 wakeup_one(am);
450 mtx_unlock(&am->am_lock);