Lines Matching refs:as

1164 static int queue_empty(struct apm_user *as)  in queue_empty()  argument
1166 return as->event_head == as->event_tail; in queue_empty()
1169 static apm_event_t get_queued_event(struct apm_user *as) in get_queued_event() argument
1171 if (++as->event_tail >= APM_MAX_EVENTS) in get_queued_event()
1172 as->event_tail = 0; in get_queued_event()
1173 return as->events[as->event_tail]; in get_queued_event()
1178 struct apm_user *as; in queue_event() local
1183 for (as = user_list; as != NULL; as = as->next) { in queue_event()
1184 if ((as == sender) || (!as->reader)) in queue_event()
1186 if (++as->event_head >= APM_MAX_EVENTS) in queue_event()
1187 as->event_head = 0; in queue_event()
1189 if (as->event_head == as->event_tail) { in queue_event()
1194 if (++as->event_tail >= APM_MAX_EVENTS) in queue_event()
1195 as->event_tail = 0; in queue_event()
1197 as->events[as->event_head] = event; in queue_event()
1198 if (!as->suser || !as->writer) in queue_event()
1203 as->suspends_pending++; in queue_event()
1209 as->standbys_pending++; in queue_event()
1239 struct apm_user *as; in suspend() local
1271 for (as = user_list; as != NULL; as = as->next) { in suspend()
1272 as->suspend_wait = 0; in suspend()
1273 as->suspend_result = err; in suspend()
1453 static int check_apm_user(struct apm_user *as, const char *func) in check_apm_user() argument
1455 if (as == NULL || as->magic != APM_BIOS_MAGIC) { in check_apm_user()
1464 struct apm_user *as; in do_read() local
1468 as = fp->private_data; in do_read()
1469 if (check_apm_user(as, "read")) in do_read()
1473 if ((queue_empty(as)) && (fp->f_flags & O_NONBLOCK)) in do_read()
1475 wait_event_interruptible(apm_waitqueue, !queue_empty(as)); in do_read()
1477 while ((i >= sizeof(event)) && !queue_empty(as)) { in do_read()
1478 event = get_queued_event(as); in do_read()
1487 as->suspends_read++; in do_read()
1492 as->standbys_read++; in do_read()
1507 struct apm_user *as; in do_poll() local
1509 as = fp->private_data; in do_poll()
1510 if (check_apm_user(as, "poll")) in do_poll()
1513 if (!queue_empty(as)) in do_poll()
1520 struct apm_user *as; in do_ioctl() local
1523 as = filp->private_data; in do_ioctl()
1524 if (check_apm_user(as, "ioctl")) in do_ioctl()
1526 if (!as->suser || !as->writer) in do_ioctl()
1531 if (as->standbys_read > 0) { in do_ioctl()
1532 as->standbys_read--; in do_ioctl()
1533 as->standbys_pending--; in do_ioctl()
1536 queue_event(APM_USER_STANDBY, as); in do_ioctl()
1543 if (as->suspends_read > 0) { in do_ioctl()
1544 as->suspends_read--; in do_ioctl()
1545 as->suspends_pending--; in do_ioctl()
1548 queue_event(APM_USER_SUSPEND, as); in do_ioctl()
1553 as->suspend_wait = 1; in do_ioctl()
1556 as->suspend_wait == 0); in do_ioctl()
1557 ret = as->suspend_result; in do_ioctl()
1568 struct apm_user *as; in do_release() local
1570 as = filp->private_data; in do_release()
1571 if (check_apm_user(as, "release")) in do_release()
1574 if (as->standbys_pending > 0) { in do_release()
1575 standbys_pending -= as->standbys_pending; in do_release()
1579 if (as->suspends_pending > 0) { in do_release()
1580 suspends_pending -= as->suspends_pending; in do_release()
1585 if (user_list == as) in do_release()
1586 user_list = as->next; in do_release()
1591 (as1 != NULL) && (as1->next != as); in do_release()
1597 as1->next = as->next; in do_release()
1600 kfree(as); in do_release()
1606 struct apm_user *as; in do_open() local
1608 as = kmalloc(sizeof(*as), GFP_KERNEL); in do_open()
1609 if (as == NULL) in do_open()
1612 as->magic = APM_BIOS_MAGIC; in do_open()
1613 as->event_tail = as->event_head = 0; in do_open()
1614 as->suspends_pending = as->standbys_pending = 0; in do_open()
1615 as->suspends_read = as->standbys_read = 0; in do_open()
1623 as->suser = capable(CAP_SYS_ADMIN); in do_open()
1624 as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE; in do_open()
1625 as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ; in do_open()
1627 as->next = user_list; in do_open()
1628 user_list = as; in do_open()
1630 filp->private_data = as; in do_open()