Lines Matching refs:as
36 * One option can be changed at boot time as follows:
73 * The transitions are invoked as follows:
76 * 3: userspace thread issues the APM_IOC_SUSPEND ioctl (as ack)
192 struct apm_user *as;
195 list_for_each_entry(as, &apm_user_list, list) {
196 if (as->reader)
197 queue_add_event(&as->queue, event);
205 struct apm_user *as = fp->private_data;
212 if (queue_empty(&as->queue) && fp->f_flags & O_NONBLOCK)
215 wait_event_interruptible(apm_waitqueue, !queue_empty(&as->queue));
217 while ((i >= sizeof(event)) && !queue_empty(&as->queue)) {
218 event = queue_get_event(&as->queue);
225 if (as->suspend_state == SUSPEND_PENDING &&
227 as->suspend_state = SUSPEND_READ;
242 struct apm_user *as = fp->private_data;
245 return queue_empty(&as->queue) ? 0 : EPOLLIN | EPOLLRDNORM;
261 struct apm_user *as = filp->private_data;
264 if (!as->suser || !as->writer)
271 as->suspend_result = -EINTR;
273 switch (as->suspend_state) {
278 * interpreted as an acknowledge.
280 as->suspend_state = SUSPEND_ACKED;
298 as->suspend_state != SUSPEND_ACKED))
302 as->suspend_result = -ETIMEDOUT;
306 as->suspend_state = SUSPEND_WAIT;
314 as->suspend_result = pm_suspend(PM_SUSPEND_MEM);
318 err = as->suspend_result;
319 as->suspend_state = SUSPEND_NONE;
329 struct apm_user *as = filp->private_data;
334 list_del(&as->list);
338 * We are now unhooked from the chain. As far as new
342 if (as->suspend_state == SUSPEND_PENDING ||
343 as->suspend_state == SUSPEND_READ)
349 kfree(as);
355 struct apm_user *as;
357 as = kzalloc(sizeof(*as), GFP_KERNEL);
358 if (as) {
366 as->suser = capable(CAP_SYS_ADMIN);
367 as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE;
368 as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ;
371 list_add(&as->list, &apm_user_list);
374 filp->private_data = as;
377 return as ? 0 : -ENOMEM;
513 struct apm_user *as;
533 list_for_each_entry(as, &apm_user_list, list) {
534 if (as->suspend_state != SUSPEND_WAIT && as->reader &&
535 as->writer && as->suser) {
536 as->suspend_state = SUSPEND_PENDING;
538 queue_add_event(&as->queue, apm_event);
570 list_for_each_entry(as, &apm_user_list, list) {
571 if (as->suspend_state == SUSPEND_PENDING ||
572 as->suspend_state == SUSPEND_READ) {
573 as->suspend_state = SUSPEND_ACKTO;
603 list_for_each_entry(as, &apm_user_list, list) {
604 if (as->suspend_state == SUSPEND_ACKED) {
611 as->suspend_result = 0;
612 as->suspend_state = SUSPEND_DONE;