tag | line | file | source code |
as | 560 | drivers/char/apm_bios.c | static int queue_empty(struct apm_bios_struct * as) |
as | 562 | drivers/char/apm_bios.c | return as->event_head == as->event_tail; |
as | 565 | drivers/char/apm_bios.c | static apm_event_t get_queued_event(struct apm_bios_struct * as) |
as | 567 | drivers/char/apm_bios.c | as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS; |
as | 568 | drivers/char/apm_bios.c | return as->events[as->event_tail]; |
as | 573 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 577 | drivers/char/apm_bios.c | for (as = user_list; as != NULL; as = as->next) { |
as | 578 | drivers/char/apm_bios.c | as->event_head = (as->event_head + 1) % APM_MAX_EVENTS; |
as | 579 | drivers/char/apm_bios.c | if (as->event_head == as->event_tail) |
as | 580 | drivers/char/apm_bios.c | as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS; |
as | 581 | drivers/char/apm_bios.c | as->events[as->event_head] = event; |
as | 582 | drivers/char/apm_bios.c | if (!as->suser) |
as | 587 | drivers/char/apm_bios.c | as->suspends_pending++; |
as | 593 | drivers/char/apm_bios.c | as->standbys_pending++; |
as | 798 | drivers/char/apm_bios.c | static int check_apm_bios_struct(struct apm_bios_struct *as, const char *func) |
as | 800 | drivers/char/apm_bios.c | if ((as == NULL) || (as->magic != APM_BIOS_MAGIC)) { |
as | 809 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 814 | drivers/char/apm_bios.c | as = fp->private_data; |
as | 815 | drivers/char/apm_bios.c | if (check_apm_bios_struct(as, "read")) |
as | 819 | drivers/char/apm_bios.c | if (queue_empty(as)) { |
as | 825 | drivers/char/apm_bios.c | if (queue_empty(as) |
as | 834 | drivers/char/apm_bios.c | while ((i >= sizeof(event)) && !queue_empty(as)) { |
as | 835 | drivers/char/apm_bios.c | event = get_queued_event(as); |
as | 850 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 852 | drivers/char/apm_bios.c | as = fp->private_data; |
as | 853 | drivers/char/apm_bios.c | if (check_apm_bios_struct(as, "select")) |
as | 857 | drivers/char/apm_bios.c | if (!queue_empty(as)) |
as | 866 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 868 | drivers/char/apm_bios.c | as = filp->private_data; |
as | 869 | drivers/char/apm_bios.c | if (check_apm_bios_struct(as, "ioctl")) |
as | 873 | drivers/char/apm_bios.c | if (as->standbys_pending > 0) { |
as | 874 | drivers/char/apm_bios.c | as->standbys_pending--; |
as | 881 | drivers/char/apm_bios.c | if (as->suspends_pending > 0) { |
as | 882 | drivers/char/apm_bios.c | as->suspends_pending--; |
as | 896 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 898 | drivers/char/apm_bios.c | as = filp->private_data; |
as | 900 | drivers/char/apm_bios.c | if (check_apm_bios_struct(as, "release")) |
as | 902 | drivers/char/apm_bios.c | if (as->standbys_pending > 0) { |
as | 903 | drivers/char/apm_bios.c | standbys_pending -= as->standbys_pending; |
as | 907 | drivers/char/apm_bios.c | if (as->suspends_pending > 0) { |
as | 908 | drivers/char/apm_bios.c | suspends_pending -= as->suspends_pending; |
as | 912 | drivers/char/apm_bios.c | if (user_list == as) |
as | 913 | drivers/char/apm_bios.c | user_list = as->next; |
as | 918 | drivers/char/apm_bios.c | (as1 != NULL) && (as1->next != as); |
as | 924 | drivers/char/apm_bios.c | as1->next = as->next; |
as | 926 | drivers/char/apm_bios.c | kfree_s(as, sizeof(*as)); |
as | 931 | drivers/char/apm_bios.c | struct apm_bios_struct * as; |
as | 933 | drivers/char/apm_bios.c | as = (struct apm_bios_struct *)kmalloc(sizeof(*as), GFP_KERNEL); |
as | 934 | drivers/char/apm_bios.c | if (as == NULL) { |
as | 936 | drivers/char/apm_bios.c | sizeof(*as)); |
as | 939 | drivers/char/apm_bios.c | as->magic = APM_BIOS_MAGIC; |
as | 940 | drivers/char/apm_bios.c | as->event_tail = as->event_head = 0; |
as | 941 | drivers/char/apm_bios.c | as->suspends_pending = as->standbys_pending = 0; |
as | 942 | drivers/char/apm_bios.c | as->suser = suser(); |
as | 943 | drivers/char/apm_bios.c | as->next = user_list; |
as | 944 | drivers/char/apm_bios.c | user_list = as; |
as | 945 | drivers/char/apm_bios.c | filp->private_data = as; |