• Home
  • Raw
  • Download

Lines Matching refs:e

30 static void cleanup_entity(divas_um_idi_entity_t *e);
34 static int process_idi_request(divas_um_idi_entity_t *e,
36 static int process_idi_rc(divas_um_idi_entity_t *e, byte rc);
37 static int process_idi_ind(divas_um_idi_entity_t *e, byte ind);
38 static int write_return_code(divas_um_idi_entity_t *e, byte rc);
173 divas_um_idi_entity_t *e; in cleanup_adapter() local
176 e = list_entry(tmp, divas_um_idi_entity_t, link); in cleanup_adapter()
178 cleanup_entity(e); in cleanup_adapter()
179 if (e->os_context) { in cleanup_adapter()
180 diva_os_wakeup_read(e->os_context); in cleanup_adapter()
181 diva_os_wakeup_close(e->os_context); in cleanup_adapter()
190 static void cleanup_entity(divas_um_idi_entity_t *e) in cleanup_entity() argument
192 e->os_ref = NULL; in cleanup_entity()
193 e->status = 0; in cleanup_entity()
194 e->adapter = NULL; in cleanup_entity()
195 e->e.Id = 0; in cleanup_entity()
196 e->rc_count = 0; in cleanup_entity()
198 e->status |= DIVA_UM_IDI_REMOVED; in cleanup_entity()
199 e->status |= DIVA_UM_IDI_REMOVE_PENDING; in cleanup_entity()
201 diva_data_q_finit(&e->data); in cleanup_entity()
202 diva_data_q_finit(&e->rc); in cleanup_entity()
211 divas_um_idi_entity_t *e; in divas_um_idi_create_entity() local
215 if ((e = (divas_um_idi_entity_t *) diva_os_malloc(0, sizeof(*e)))) { in divas_um_idi_create_entity()
216 memset(e, 0x00, sizeof(*e)); in divas_um_idi_create_entity()
218 (e->os_context = in divas_um_idi_create_entity()
220 DBG_LOG(("E(%08x) no memory for os context", e)); in divas_um_idi_create_entity()
221 diva_os_free(0, e); in divas_um_idi_create_entity()
224 memset(e->os_context, 0x00, diva_os_get_context_size()); in divas_um_idi_create_entity()
226 if ((diva_data_q_init(&e->data, 2048 + 512, 16))) { in divas_um_idi_create_entity()
227 diva_os_free(0, e->os_context); in divas_um_idi_create_entity()
228 diva_os_free(0, e); in divas_um_idi_create_entity()
231 if ((diva_data_q_init(&e->rc, sizeof(diva_um_idi_ind_hdr_t), 2))) { in divas_um_idi_create_entity()
232 diva_data_q_finit(&e->data); in divas_um_idi_create_entity()
233 diva_os_free(0, e->os_context); in divas_um_idi_create_entity()
234 diva_os_free(0, e); in divas_um_idi_create_entity()
250 cleanup_entity(e); in divas_um_idi_create_entity()
251 diva_os_free(0, e->os_context); in divas_um_idi_create_entity()
252 diva_os_free(0, e); in divas_um_idi_create_entity()
257 e->os_ref = file; /* link to os handle */ in divas_um_idi_create_entity()
258 e->adapter = a; /* link to adapter */ in divas_um_idi_create_entity()
260 list_add_tail(&e->link, &a->entity_q); /* link from adapter */ in divas_um_idi_create_entity()
264 DBG_LOG(("A(%ld), create E(%08x)", adapter_nr, e)); in divas_um_idi_create_entity()
267 return (e); in divas_um_idi_create_entity()
275 divas_um_idi_entity_t *e; in divas_um_idi_delete_entity() local
279 if (!(e = (divas_um_idi_entity_t *) entity)) in divas_um_idi_delete_entity()
283 if ((a = e->adapter)) { in divas_um_idi_delete_entity()
284 list_del(&e->link); in divas_um_idi_delete_entity()
289 cleanup_entity(e); in divas_um_idi_delete_entity()
290 diva_os_free(0, e->os_context); in divas_um_idi_delete_entity()
291 memset(e, 0x00, sizeof(*e)); in divas_um_idi_delete_entity()
293 DBG_LOG(("A(%d) remove E:%08x", adapter_nr, e)); in divas_um_idi_delete_entity()
294 diva_os_free(0, e); in divas_um_idi_delete_entity()
307 divas_um_idi_entity_t *e; in diva_um_idi_read() local
316 e = (divas_um_idi_entity_t *) entity; in diva_um_idi_read()
317 if (!e || (!(a = e->adapter)) || in diva_um_idi_read()
318 (e->status & DIVA_UM_IDI_REMOVE_PENDING) || in diva_um_idi_read()
319 (e->status & DIVA_UM_IDI_REMOVED) || in diva_um_idi_read()
322 DBG_ERR(("E(%08x) read failed - adapter removed", e)) in diva_um_idi_read()
326 DBG_TRC(("A(%d) E(%08x) read(%d)", a->adapter_nr, e, max_length)); in diva_um_idi_read()
331 data = diva_data_q_get_segment4read(&e->rc); in diva_um_idi_read()
332 q = &e->rc; in diva_um_idi_read()
338 if (!(e->status & DIVA_UM_IDI_RC_PENDING)) { in diva_um_idi_read()
339 DBG_TRC(("A(%d) E(%08x) read data", a->adapter_nr, e)); in diva_um_idi_read()
340 data = diva_data_q_get_segment4read(&e->data); in diva_um_idi_read()
341 q = &e->data; in diva_um_idi_read()
344 e->status &= ~DIVA_UM_IDI_RC_PENDING; in diva_um_idi_read()
345 DBG_TRC(("A(%d) E(%08x) read rc", a->adapter_nr, e)); in diva_um_idi_read()
355 a->adapter_nr, e, ret)); in diva_um_idi_read()
374 DBG_TRC(("A(%d) E(%08x) read=%d", a->adapter_nr, e, ret)); in diva_um_idi_read()
387 divas_um_idi_entity_t *e; in diva_um_idi_write() local
396 e = (divas_um_idi_entity_t *) entity; in diva_um_idi_write()
397 if (!e || (!(a = e->adapter)) || in diva_um_idi_write()
398 (e->status & DIVA_UM_IDI_REMOVE_PENDING) || in diva_um_idi_write()
399 (e->status & DIVA_UM_IDI_REMOVED) || in diva_um_idi_write()
402 DBG_ERR(("E(%08x) write failed - adapter removed", e)) in diva_um_idi_write()
406 DBG_TRC(("A(%d) E(%08x) write(%d)", a->adapter_nr, e, length)); in diva_um_idi_write()
408 if ((length < sizeof(*req)) || (length > sizeof(e->buffer))) { in diva_um_idi_write()
413 if (e->status & DIVA_UM_IDI_RC_PENDING) { in diva_um_idi_write()
414 DBG_ERR(("A: A(%d) E(%08x) rc pending", a->adapter_nr, e)); in diva_um_idi_write()
423 if ((ret = (*cp_fn) (os_handle, e->buffer, src, length)) < 0) { in diva_um_idi_write()
425 e, ret)); in diva_um_idi_write()
430 req = (diva_um_idi_req_hdr_t *)&e->buffer[0]; in diva_um_idi_write()
436 diva_data_q_get_segment4write(&e->data))) { in diva_um_idi_write()
449 diva_data_q_ack_segment4write(&e->data, in diva_um_idi_write()
454 diva_os_wakeup_read(e->os_context); in diva_um_idi_write()
465 switch (process_idi_request(e, req)) { in diva_um_idi_write()
471 diva_os_wakeup_read(e->os_context); in diva_um_idi_write()
484 DBG_TRC(("A(%d) E(%08x) write=%d", a->adapter_nr, e, ret)); in diva_um_idi_write()
494 divas_um_idi_entity_t *e = DIVAS_CONTAINING_RECORD(entity, in diva_um_idi_xdi_callback() local
496 e); in diva_um_idi_xdi_callback()
502 if (e->e.complete == 255) { in diva_um_idi_xdi_callback()
503 if (!(e->status & DIVA_UM_IDI_REMOVE_PENDING)) { in diva_um_idi_xdi_callback()
504 diva_um_idi_stop_wdog(e); in diva_um_idi_xdi_callback()
506 if ((call_wakeup = process_idi_rc(e, e->e.Rc))) { in diva_um_idi_xdi_callback()
507 if (e->rc_count) { in diva_um_idi_xdi_callback()
508 e->rc_count--; in diva_um_idi_xdi_callback()
511 e->e.Rc = 0; in diva_um_idi_xdi_callback()
515 diva_os_wakeup_read(e->os_context); in diva_um_idi_xdi_callback()
516 diva_os_wakeup_close(e->os_context); in diva_um_idi_xdi_callback()
519 if (e->status & DIVA_UM_IDI_REMOVE_PENDING) { in diva_um_idi_xdi_callback()
520 e->e.RNum = 0; in diva_um_idi_xdi_callback()
521 e->e.RNR = 2; in diva_um_idi_xdi_callback()
523 call_wakeup = process_idi_ind(e, e->e.Ind); in diva_um_idi_xdi_callback()
525 e->e.Ind = 0; in diva_um_idi_xdi_callback()
528 diva_os_wakeup_read(e->os_context); in diva_um_idi_xdi_callback()
533 static int process_idi_request(divas_um_idi_entity_t *e, in process_idi_request() argument
540 if (!e->e.Id || !e->e.callback) { /* not assigned */ in process_idi_request()
543 e->adapter->adapter_nr, e)); in process_idi_request()
548 e->e.Id = MAN_ID; in process_idi_request()
550 e->adapter->adapter_nr, e)); in process_idi_request()
554 e->e.Id = DSIG_ID; in process_idi_request()
556 e->adapter->adapter_nr, e)); in process_idi_request()
560 e->e.Id = NL_ID; in process_idi_request()
562 e->adapter->adapter_nr, e)); in process_idi_request()
567 e->adapter->adapter_nr, e, in process_idi_request()
572 e->e.XNum = 1; in process_idi_request()
573 e->e.RNum = 1; in process_idi_request()
574 e->e.callback = diva_um_idi_xdi_callback; in process_idi_request()
575 e->e.X = &e->XData; in process_idi_request()
576 e->e.R = &e->RData; in process_idi_request()
579 e->status |= DIVA_UM_IDI_RC_PENDING; in process_idi_request()
580 e->e.Req = Req; in process_idi_request()
581 e->e.ReqCh = (byte) req->ReqCh; in process_idi_request()
582 e->e.X->PLength = (word) req->data_length; in process_idi_request()
583 e->e.X->P = (byte *)&req[1]; /* Our buffer is safe */ in process_idi_request()
586 e->adapter->adapter_nr, e, e->e.Id, e->e.Req, in process_idi_request()
587 e->e.ReqCh, e->e.X->PLength)); in process_idi_request()
589 e->rc_count++; in process_idi_request()
591 if (e->adapter && e->adapter->d.request) { in process_idi_request()
592 diva_um_idi_start_wdog(e); in process_idi_request()
593 (*(e->adapter->d.request)) (&e->e); in process_idi_request()
597 if (e->e.Rc == OUT_OF_RESOURCES) { in process_idi_request()
603 e->adapter->adapter_nr, e)); in process_idi_request()
605 e->e.Id = 0; in process_idi_request()
606 e->e.ReqCh = 0; in process_idi_request()
607 e->e.RcCh = 0; in process_idi_request()
608 e->e.Ind = 0; in process_idi_request()
609 e->e.IndCh = 0; in process_idi_request()
610 e->e.XNum = 0; in process_idi_request()
611 e->e.RNum = 0; in process_idi_request()
612 e->e.callback = NULL; in process_idi_request()
613 e->e.X = NULL; in process_idi_request()
614 e->e.R = NULL; in process_idi_request()
615 write_return_code(e, ASSIGN_RC | OUT_OF_RESOURCES); in process_idi_request()
618 e->status |= DIVA_UM_IDI_ASSIGN_PENDING; in process_idi_request()
625 static int process_idi_rc(divas_um_idi_entity_t *e, byte rc) in process_idi_rc() argument
628 e->adapter->adapter_nr, e, e->e.Id, rc, e->e.RcCh)); in process_idi_rc()
630 if (e->status & DIVA_UM_IDI_ASSIGN_PENDING) { in process_idi_rc()
631 e->status &= ~DIVA_UM_IDI_ASSIGN_PENDING; in process_idi_rc()
634 e->adapter->adapter_nr, e)); in process_idi_rc()
635 e->e.callback = NULL; in process_idi_rc()
636 e->e.Id = 0; in process_idi_rc()
637 e->e.Req = 0; in process_idi_rc()
638 e->e.ReqCh = 0; in process_idi_rc()
639 e->e.Rc = 0; in process_idi_rc()
640 e->e.RcCh = 0; in process_idi_rc()
641 e->e.Ind = 0; in process_idi_rc()
642 e->e.IndCh = 0; in process_idi_rc()
643 e->e.X = NULL; in process_idi_rc()
644 e->e.R = NULL; in process_idi_rc()
645 e->e.XNum = 0; in process_idi_rc()
646 e->e.RNum = 0; in process_idi_rc()
649 if ((e->e.Req == REMOVE) && e->e.Id && (rc == 0xff)) { in process_idi_rc()
651 e->adapter->adapter_nr, e)); in process_idi_rc()
654 if ((e->e.Req == REMOVE) && (!e->e.Id)) { /* REMOVE COMPLETE */ in process_idi_rc()
655 e->e.callback = NULL; in process_idi_rc()
656 e->e.Id = 0; in process_idi_rc()
657 e->e.Req = 0; in process_idi_rc()
658 e->e.ReqCh = 0; in process_idi_rc()
659 e->e.Rc = 0; in process_idi_rc()
660 e->e.RcCh = 0; in process_idi_rc()
661 e->e.Ind = 0; in process_idi_rc()
662 e->e.IndCh = 0; in process_idi_rc()
663 e->e.X = NULL; in process_idi_rc()
664 e->e.R = NULL; in process_idi_rc()
665 e->e.XNum = 0; in process_idi_rc()
666 e->e.RNum = 0; in process_idi_rc()
667 e->rc_count = 0; in process_idi_rc()
669 if ((e->e.Req == REMOVE) && (rc != 0xff)) { /* REMOVE FAILED */ in process_idi_rc()
671 e->adapter->adapter_nr, e)); in process_idi_rc()
673 write_return_code(e, rc); in process_idi_rc()
678 static int process_idi_ind(divas_um_idi_entity_t *e, byte ind) in process_idi_ind() argument
682 if (e->e.complete != 0x02) { in process_idi_ind()
685 diva_data_q_get_segment4write(&e->data); in process_idi_ind()
687 e->e.RNum = 1; in process_idi_ind()
688 e->e.R->P = (byte *)&pind[1]; in process_idi_ind()
689 e->e.R->PLength = in process_idi_ind()
690 (word) (diva_data_q_get_max_length(&e->data) - in process_idi_ind()
693 e->adapter->adapter_nr, e, e->e.Id, ind, in process_idi_ind()
694 e->e.IndCh, e->e.RLength, in process_idi_ind()
695 e->e.R->PLength)); in process_idi_ind()
699 e->adapter->adapter_nr, e, e->e.Id, ind, in process_idi_ind()
700 e->e.IndCh)); in process_idi_ind()
701 e->e.RNum = 0; in process_idi_ind()
702 e->e.RNR = 1; in process_idi_ind()
707 (diva_um_idi_ind_hdr_t *) (e->e.R->P); in process_idi_ind()
710 e->adapter->adapter_nr, e, e->e.Id, ind, in process_idi_ind()
711 e->e.IndCh, e->e.R->PLength)); in process_idi_ind()
716 pind->hdr.ind.IndCh = e->e.IndCh; in process_idi_ind()
717 pind->data_length = e->e.R->PLength; in process_idi_ind()
718 diva_data_q_ack_segment4write(&e->data, in process_idi_ind()
720 e->e.R->PLength)); in process_idi_ind()
724 if ((e->status & DIVA_UM_IDI_RC_PENDING) && !e->rc.count) { in process_idi_ind()
734 static int write_return_code(divas_um_idi_entity_t *e, byte rc) in write_return_code() argument
739 (diva_um_idi_ind_hdr_t *) diva_data_q_get_segment4write(&e->rc))) in write_return_code()
742 e->adapter->adapter_nr, e, rc)); in write_return_code()
743 e->status &= ~DIVA_UM_IDI_RC_PENDING; in write_return_code()
749 prc->hdr.rc.RcCh = e->e.RcCh; in write_return_code()
751 diva_data_q_ack_segment4write(&e->rc, sizeof(*prc)); in write_return_code()
762 divas_um_idi_entity_t *e; in diva_user_mode_idi_ind_ready() local
770 e = (divas_um_idi_entity_t *) entity; in diva_user_mode_idi_ind_ready()
771 a = e->adapter; in diva_user_mode_idi_ind_ready()
780 if (e->status & DIVA_UM_IDI_REMOVED) { in diva_user_mode_idi_ind_ready()
789 ret = e->rc.count + e->data.count; in diva_user_mode_idi_ind_ready()
791 if ((e->status & DIVA_UM_IDI_RC_PENDING) && !e->rc.count) { in diva_user_mode_idi_ind_ready()
807 divas_um_idi_entity_t *e; in divas_um_idi_entity_assigned() local
815 e = (divas_um_idi_entity_t *) entity; in divas_um_idi_entity_assigned()
816 if (!e || (!(a = e->adapter)) || in divas_um_idi_entity_assigned()
817 (e->status & DIVA_UM_IDI_REMOVED) || in divas_um_idi_entity_assigned()
823 e->status |= DIVA_UM_IDI_REMOVE_PENDING; in divas_um_idi_entity_assigned()
825 ret = (e->e.Id || e->rc_count in divas_um_idi_entity_assigned()
826 || (e->status & DIVA_UM_IDI_ASSIGN_PENDING)); in divas_um_idi_entity_assigned()
828 DBG_TRC(("Id:%02x, rc_count:%d, status:%08x", e->e.Id, e->rc_count, in divas_um_idi_entity_assigned()
829 e->status)) in divas_um_idi_entity_assigned()
838 divas_um_idi_entity_t *e; in divas_um_idi_entity_start_remove() local
844 e = (divas_um_idi_entity_t *) entity; in divas_um_idi_entity_start_remove()
845 if (!e || (!(a = e->adapter)) || in divas_um_idi_entity_start_remove()
846 (e->status & DIVA_UM_IDI_REMOVED) || in divas_um_idi_entity_start_remove()
852 if (e->rc_count) { in divas_um_idi_entity_start_remove()
860 if (!e->e.Id) { in divas_um_idi_entity_start_remove()
871 e->e.Req = REMOVE; in divas_um_idi_entity_start_remove()
872 e->e.ReqCh = 0; in divas_um_idi_entity_start_remove()
874 e->rc_count++; in divas_um_idi_entity_start_remove()
877 e->adapter->adapter_nr, e, e->e.Id, e->e.Req, in divas_um_idi_entity_start_remove()
878 e->e.ReqCh, e->e.X->PLength)); in divas_um_idi_entity_start_remove()
881 (*(a->d.request)) (&e->e); in divas_um_idi_entity_start_remove()