tag | line | file | source code |
as | 520 | drivers/char/apm_bios.c | static int queue_empty(struct apm_bios_struct * as) |
as | 522 | drivers/char/apm_bios.c | return as->event_head == as->event_tail; |
as | 525 | drivers/char/apm_bios.c | static apm_event_t get_queued_event(struct apm_bios_struct * as) |
as | 527 | drivers/char/apm_bios.c | as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS; |
as | 528 | drivers/char/apm_bios.c | return as->events[as->event_tail]; |
as | 533 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 537 | drivers/char/apm_bios.c | for (as = user_list; as != NULL; as = as->next) { |
as | 538 | drivers/char/apm_bios.c | as->event_head = (as->event_head + 1) % APM_MAX_EVENTS; |
as | 539 | drivers/char/apm_bios.c | if (as->event_head == as->event_tail) |
as | 540 | drivers/char/apm_bios.c | as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS; |
as | 541 | drivers/char/apm_bios.c | as->events[as->event_head] = event; |
as | 542 | drivers/char/apm_bios.c | if (!as->suser) |
as | 547 | drivers/char/apm_bios.c | as->suspends_pending++; |
as | 553 | drivers/char/apm_bios.c | as->standbys_pending++; |
as | 753 | drivers/char/apm_bios.c | static int check_apm_bios_struct(struct apm_bios_struct *as, const char *func) |
as | 755 | drivers/char/apm_bios.c | if ((as == NULL) || (as->magic != APM_BIOS_MAGIC)) { |
as | 764 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 769 | drivers/char/apm_bios.c | as = fp->private_data; |
as | 770 | drivers/char/apm_bios.c | if (check_apm_bios_struct(as, "read")) |
as | 774 | drivers/char/apm_bios.c | if (queue_empty(as)) { |
as | 780 | drivers/char/apm_bios.c | if (queue_empty(as) |
as | 789 | drivers/char/apm_bios.c | while ((i >= sizeof(event)) && !queue_empty(as)) { |
as | 790 | drivers/char/apm_bios.c | event = get_queued_event(as); |
as | 805 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 807 | drivers/char/apm_bios.c | as = fp->private_data; |
as | 808 | drivers/char/apm_bios.c | if (check_apm_bios_struct(as, "select")) |
as | 812 | drivers/char/apm_bios.c | if (!queue_empty(as)) |
as | 821 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 823 | drivers/char/apm_bios.c | as = filp->private_data; |
as | 824 | drivers/char/apm_bios.c | if (check_apm_bios_struct(as, "ioctl")) |
as | 828 | drivers/char/apm_bios.c | if (as->standbys_pending > 0) { |
as | 829 | drivers/char/apm_bios.c | as->standbys_pending--; |
as | 836 | drivers/char/apm_bios.c | if (as->suspends_pending > 0) { |
as | 837 | drivers/char/apm_bios.c | as->suspends_pending--; |
as | 851 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 853 | drivers/char/apm_bios.c | as = filp->private_data; |
as | 855 | drivers/char/apm_bios.c | if (check_apm_bios_struct(as, "release")) |
as | 857 | drivers/char/apm_bios.c | if (as->standbys_pending > 0) { |
as | 858 | drivers/char/apm_bios.c | standbys_pending -= as->standbys_pending; |
as | 862 | drivers/char/apm_bios.c | if (as->suspends_pending > 0) { |
as | 863 | drivers/char/apm_bios.c | suspends_pending -= as->suspends_pending; |
as | 867 | drivers/char/apm_bios.c | if (user_list == as) |
as | 868 | drivers/char/apm_bios.c | user_list = as->next; |
as | 873 | drivers/char/apm_bios.c | (as1 != NULL) && (as1->next != as); |
as | 879 | drivers/char/apm_bios.c | as1->next = as->next; |
as | 881 | drivers/char/apm_bios.c | kfree_s(as, sizeof(*as)); |
as | 886 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 888 | drivers/char/apm_bios.c | as = (struct apm_bios_struct *)kmalloc(sizeof(*as), GFP_KERNEL); |
as | 889 | drivers/char/apm_bios.c | if (as == NULL) { |
as | 891 | drivers/char/apm_bios.c | sizeof(*as)); |
as | 894 | drivers/char/apm_bios.c | as->magic = APM_BIOS_MAGIC; |
as | 895 | drivers/char/apm_bios.c | as->event_tail = as->event_head = 0; |
as | 896 | drivers/char/apm_bios.c | as->suspends_pending = as->standbys_pending = 0; |
as | 897 | drivers/char/apm_bios.c | as->suser = suser(); |
as | 898 | drivers/char/apm_bios.c | as->next = user_list; |
as | 899 | drivers/char/apm_bios.c | user_list = as; |
as | 900 | drivers/char/apm_bios.c | filp->private_data = as; |