taglinefilesource code
as560drivers/char/apm_bios.cstatic int queue_empty(struct apm_bios_struct * as)
as562drivers/char/apm_bios.creturn as->event_head == as->event_tail;
as565drivers/char/apm_bios.cstatic apm_event_t get_queued_event(struct apm_bios_struct * as)
as567drivers/char/apm_bios.cas->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS;
as568drivers/char/apm_bios.creturn as->events[as->event_tail];
as573drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as577drivers/char/apm_bios.cfor (as = user_list; as != NULL; as = as->next) {
as578drivers/char/apm_bios.cas->event_head = (as->event_head + 1) % APM_MAX_EVENTS;
as579drivers/char/apm_bios.cif (as->event_head == as->event_tail)
as580drivers/char/apm_bios.cas->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS;
as581drivers/char/apm_bios.cas->events[as->event_head] = event;
as582drivers/char/apm_bios.cif (!as->suser)
as587drivers/char/apm_bios.cas->suspends_pending++;
as593drivers/char/apm_bios.cas->standbys_pending++;
as798drivers/char/apm_bios.cstatic int check_apm_bios_struct(struct apm_bios_struct *as, const char *func)
as800drivers/char/apm_bios.cif ((as == NULL) || (as->magic != APM_BIOS_MAGIC)) {
as809drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as814drivers/char/apm_bios.cas = fp->private_data;
as815drivers/char/apm_bios.cif (check_apm_bios_struct(as, "read"))
as819drivers/char/apm_bios.cif (queue_empty(as)) {
as825drivers/char/apm_bios.cif (queue_empty(as)
as834drivers/char/apm_bios.cwhile ((i >= sizeof(event)) && !queue_empty(as)) {
as835drivers/char/apm_bios.cevent = get_queued_event(as);
as850drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as852drivers/char/apm_bios.cas = fp->private_data;
as853drivers/char/apm_bios.cif (check_apm_bios_struct(as, "select"))
as857drivers/char/apm_bios.cif (!queue_empty(as))
as866drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as868drivers/char/apm_bios.cas = filp->private_data;
as869drivers/char/apm_bios.cif (check_apm_bios_struct(as, "ioctl"))
as873drivers/char/apm_bios.cif (as->standbys_pending > 0) {
as874drivers/char/apm_bios.cas->standbys_pending--;
as881drivers/char/apm_bios.cif (as->suspends_pending > 0) {
as882drivers/char/apm_bios.cas->suspends_pending--;
as896drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as898drivers/char/apm_bios.cas = filp->private_data;
as900drivers/char/apm_bios.cif (check_apm_bios_struct(as, "release"))
as902drivers/char/apm_bios.cif (as->standbys_pending > 0) {
as903drivers/char/apm_bios.cstandbys_pending -= as->standbys_pending;
as907drivers/char/apm_bios.cif (as->suspends_pending > 0) {
as908drivers/char/apm_bios.csuspends_pending -= as->suspends_pending;
as912drivers/char/apm_bios.cif (user_list == as)
as913drivers/char/apm_bios.cuser_list = as->next;
as918drivers/char/apm_bios.c(as1 != NULL) && (as1->next != as);
as924drivers/char/apm_bios.cas1->next = as->next;
as926drivers/char/apm_bios.ckfree_s(as, sizeof(*as));
as931drivers/char/apm_bios.cstruct apm_bios_struct *  as;
as933drivers/char/apm_bios.cas = (struct apm_bios_struct *)kmalloc(sizeof(*as), GFP_KERNEL);
as934drivers/char/apm_bios.cif (as == NULL) {
as936drivers/char/apm_bios.csizeof(*as));
as939drivers/char/apm_bios.cas->magic = APM_BIOS_MAGIC;
as940drivers/char/apm_bios.cas->event_tail = as->event_head = 0;
as941drivers/char/apm_bios.cas->suspends_pending = as->standbys_pending = 0;
as942drivers/char/apm_bios.cas->suser = suser();
as943drivers/char/apm_bios.cas->next = user_list;
as944drivers/char/apm_bios.cuser_list = as;
as945drivers/char/apm_bios.cfilp->private_data = as;