taglinefilesource code
as520drivers/char/apm_bios.cstatic int queue_empty(struct apm_bios_struct * as)
as522drivers/char/apm_bios.creturn as->event_head == as->event_tail;
as525drivers/char/apm_bios.cstatic apm_event_t get_queued_event(struct apm_bios_struct * as)
as527drivers/char/apm_bios.cas->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS;
as528drivers/char/apm_bios.creturn as->events[as->event_tail];
as533drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as537drivers/char/apm_bios.cfor (as = user_list; as != NULL; as = as->next) {
as538drivers/char/apm_bios.cas->event_head = (as->event_head + 1) % APM_MAX_EVENTS;
as539drivers/char/apm_bios.cif (as->event_head == as->event_tail)
as540drivers/char/apm_bios.cas->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS;
as541drivers/char/apm_bios.cas->events[as->event_head] = event;
as542drivers/char/apm_bios.cif (!as->suser)
as547drivers/char/apm_bios.cas->suspends_pending++;
as553drivers/char/apm_bios.cas->standbys_pending++;
as753drivers/char/apm_bios.cstatic int check_apm_bios_struct(struct apm_bios_struct *as, const char *func)
as755drivers/char/apm_bios.cif ((as == NULL) || (as->magic != APM_BIOS_MAGIC)) {
as764drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as769drivers/char/apm_bios.cas = fp->private_data;
as770drivers/char/apm_bios.cif (check_apm_bios_struct(as, "read"))
as774drivers/char/apm_bios.cif (queue_empty(as)) {
as780drivers/char/apm_bios.cif (queue_empty(as)
as789drivers/char/apm_bios.cwhile ((i >= sizeof(event)) && !queue_empty(as)) {
as790drivers/char/apm_bios.cevent = get_queued_event(as);
as805drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as807drivers/char/apm_bios.cas = fp->private_data;
as808drivers/char/apm_bios.cif (check_apm_bios_struct(as, "select"))
as812drivers/char/apm_bios.cif (!queue_empty(as))
as821drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as823drivers/char/apm_bios.cas = filp->private_data;
as824drivers/char/apm_bios.cif (check_apm_bios_struct(as, "ioctl"))
as828drivers/char/apm_bios.cif (as->standbys_pending > 0) {
as829drivers/char/apm_bios.cas->standbys_pending--;
as836drivers/char/apm_bios.cif (as->suspends_pending > 0) {
as837drivers/char/apm_bios.cas->suspends_pending--;
as851drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as853drivers/char/apm_bios.cas = filp->private_data;
as855drivers/char/apm_bios.cif (check_apm_bios_struct(as, "release"))
as857drivers/char/apm_bios.cif (as->standbys_pending > 0) {
as858drivers/char/apm_bios.cstandbys_pending -= as->standbys_pending;
as862drivers/char/apm_bios.cif (as->suspends_pending > 0) {
as863drivers/char/apm_bios.csuspends_pending -= as->suspends_pending;
as867drivers/char/apm_bios.cif (user_list == as)
as868drivers/char/apm_bios.cuser_list = as->next;
as873drivers/char/apm_bios.c(as1 != NULL) && (as1->next != as);
as879drivers/char/apm_bios.cas1->next = as->next;
as881drivers/char/apm_bios.ckfree_s(as, sizeof(*as));
as886drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as888drivers/char/apm_bios.cas = (struct apm_bios_struct *)kmalloc(sizeof(*as), GFP_KERNEL);
as889drivers/char/apm_bios.cif (as == NULL) {
as891drivers/char/apm_bios.csizeof(*as));
as894drivers/char/apm_bios.cas->magic = APM_BIOS_MAGIC;
as895drivers/char/apm_bios.cas->event_tail = as->event_head = 0;
as896drivers/char/apm_bios.cas->suspends_pending = as->standbys_pending = 0;
as897drivers/char/apm_bios.cas->suser = suser();
as898drivers/char/apm_bios.cas->next = user_list;
as899drivers/char/apm_bios.cuser_list = as;
as900drivers/char/apm_bios.cfilp->private_data = as;