![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: The following driver function for direct I/O produces sporadically the bugcheck error INVALID PAGE TABLE ENTRY FORMAT in the ioc$load_map function. I believe that the code conformes to the documention "OpenVMS Alpha Guide yo Upgrading Priviledged-Code Applications" . Thank you very much in advance for any hint. Yours sincerely Kar. H. Degenhardt /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Read data by DMA (function is defined with DIRECT_64 flag) --------------------------------------------------------------*/ int ck$dma_operation (IRP *irp, PCB *pcb, *ucb, CCB *ccb) CHAR_PQ qio_bufp; int buflen; ... /* get user buffer address and length */ qio_bufp = (CHAR_PQ)irp->irp$q_qio_p1; count = irp->irp$l_qio_p2; buflen = 4*count; ... /* Check write access to user buffer and lock buffer in memory */ status = exe_std$readlock(irp,pcb,ucb,ccb,(VOID_PQ)qio_bufp,buflen,0); if (! $VMS_STATUS_SUCCESS(status)) return (call_abortio(irp,pcb,ucb,status)); ... /* get crctx and set item count*/ crab = adp->adp$l_crab; status = ioc$alloc_crctx(crab,&crctx,0); if (! $VMS_STATUS_SUCCESS(status)) return (call_abortio(irp,pcb,ucb,status)); crctx->crctx$l_item_cnt = (buflen >> 13) + 2; /* get resources */ status = ioc$alloc_cnt_res(crab,crctx,0,0,0); if (! $VMS_STATUS_SUCCESS(status)) { status = ioc$dealloc_crctx(crctx); return (call_abortio(irp,pcb,ucb,status)); } /* load map registers */ status = ioc$load_map(adp,crctx,irp->irp$l_svapte, irp->irp$l_boff, (void **)&dma_base); if (! $VMS_STATUS_SUCCESS(status)) { status = ioc$dealloc_cnt_res(adp->adp$l_crab, crctx); status = ioc$dealloc_crctx(crctx); return (call_abortio(irp,pcb,ucb,status)); } ... return (call_qiodrvpkt(irp, ucb)); return (call_finishio(irp, ucb, status, 0)); The Answer is : Without a rather more detailed investigation involving a complete source example of the driver and an example of the crash, an answer is difficult. The OpenVMS Wizard would encourage contact with the Compaq Customer Support Center.
|