Lines Matching refs:as

1171 static int queue_empty(struct apm_user *as)  in queue_empty()  argument
1173 return as->event_head == as->event_tail; in queue_empty()
1176 static apm_event_t get_queued_event(struct apm_user *as) in get_queued_event() argument
1178 if (++as->event_tail >= APM_MAX_EVENTS) in get_queued_event()
1179 as->event_tail = 0; in get_queued_event()
1180 return as->events[as->event_tail]; in get_queued_event()
1185 struct apm_user *as; in queue_event() local
1190 for (as = user_list; as != NULL; as = as->next) { in queue_event()
1191 if ((as == sender) || (!as->reader)) in queue_event()
1193 if (++as->event_head >= APM_MAX_EVENTS) in queue_event()
1194 as->event_head = 0; in queue_event()
1196 if (as->event_head == as->event_tail) { in queue_event()
1201 if (++as->event_tail >= APM_MAX_EVENTS) in queue_event()
1202 as->event_tail = 0; in queue_event()
1204 as->events[as->event_head] = event; in queue_event()
1205 if (!as->suser || !as->writer) in queue_event()
1210 as->suspends_pending++; in queue_event()
1216 as->standbys_pending++; in queue_event()
1246 struct apm_user *as; in suspend() local
1278 for (as = user_list; as != NULL; as = as->next) { in suspend()
1279 as->suspend_wait = 0; in suspend()
1280 as->suspend_result = err; in suspend()
1460 static int check_apm_user(struct apm_user *as, const char *func) in check_apm_user() argument
1462 if (as == NULL || as->magic != APM_BIOS_MAGIC) { in check_apm_user()
1471 struct apm_user *as; in do_read() local
1475 as = fp->private_data; in do_read()
1476 if (check_apm_user(as, "read")) in do_read()
1480 if ((queue_empty(as)) && (fp->f_flags & O_NONBLOCK)) in do_read()
1482 wait_event_interruptible(apm_waitqueue, !queue_empty(as)); in do_read()
1484 while ((i >= sizeof(event)) && !queue_empty(as)) { in do_read()
1485 event = get_queued_event(as); in do_read()
1494 as->suspends_read++; in do_read()
1499 as->standbys_read++; in do_read()
1514 struct apm_user *as; in do_poll() local
1516 as = fp->private_data; in do_poll()
1517 if (check_apm_user(as, "poll")) in do_poll()
1520 if (!queue_empty(as)) in do_poll()
1527 struct apm_user *as; in do_ioctl() local
1530 as = filp->private_data; in do_ioctl()
1531 if (check_apm_user(as, "ioctl")) in do_ioctl()
1533 if (!as->suser || !as->writer) in do_ioctl()
1538 if (as->standbys_read > 0) { in do_ioctl()
1539 as->standbys_read--; in do_ioctl()
1540 as->standbys_pending--; in do_ioctl()
1543 queue_event(APM_USER_STANDBY, as); in do_ioctl()
1550 if (as->suspends_read > 0) { in do_ioctl()
1551 as->suspends_read--; in do_ioctl()
1552 as->suspends_pending--; in do_ioctl()
1555 queue_event(APM_USER_SUSPEND, as); in do_ioctl()
1560 as->suspend_wait = 1; in do_ioctl()
1563 as->suspend_wait == 0); in do_ioctl()
1564 ret = as->suspend_result; in do_ioctl()
1575 struct apm_user *as; in do_release() local
1577 as = filp->private_data; in do_release()
1578 if (check_apm_user(as, "release")) in do_release()
1581 if (as->standbys_pending > 0) { in do_release()
1582 standbys_pending -= as->standbys_pending; in do_release()
1586 if (as->suspends_pending > 0) { in do_release()
1587 suspends_pending -= as->suspends_pending; in do_release()
1592 if (user_list == as) in do_release()
1593 user_list = as->next; in do_release()
1598 (as1 != NULL) && (as1->next != as); in do_release()
1604 as1->next = as->next; in do_release()
1607 kfree(as); in do_release()
1613 struct apm_user *as; in do_open() local
1615 as = kmalloc(sizeof(*as), GFP_KERNEL); in do_open()
1616 if (as == NULL) in do_open()
1619 as->magic = APM_BIOS_MAGIC; in do_open()
1620 as->event_tail = as->event_head = 0; in do_open()
1621 as->suspends_pending = as->standbys_pending = 0; in do_open()
1622 as->suspends_read = as->standbys_read = 0; in do_open()
1630 as->suser = capable(CAP_SYS_ADMIN); in do_open()
1631 as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE; in do_open()
1632 as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ; in do_open()
1634 as->next = user_list; in do_open()
1635 user_list = as; in do_open()
1637 filp->private_data = as; in do_open()