Exemplo n.º 1
0
int syslink_frameq_put(resmgr_context_t *ctp, io_devctl_t *msg, syslink_ocb_t *ocb){

			FrameQDrv_CmdArgs *cargs = (FrameQDrv_CmdArgs *) (_DEVCTL_DATA (msg->i));
			FrameQDrv_CmdArgs *out = (FrameQDrv_CmdArgs *) (_DEVCTL_DATA (msg->o));

			FrameQ_Frame            frame;
            FrameQ_FrameBufInfo     *frameBufInfo;
            Ptr                     virtPtr;
            Ptr                     addr;
			int						i;

            /* Convert frame address and frame buffer address in to knl virtual
             		 * format.
             		 */
            frame = Memory_translate (cargs->args.put.frame,
                                      Memory_XltFlags_Phys2Virt);

            GT_assert(curTrace,(frame != NULL));

            frameBufInfo = (FrameQ_FrameBufInfo *)&(frame->frameBufInfo[0]);

            for(i = 0; i < frame->numFrameBuffers; i++) {
                addr = (Ptr)frameBufInfo[i].bufPtr;
                virtPtr = Memory_translate(addr, Memory_XltFlags_Phys2Virt);
                GT_assert(curTrace,(virtPtr != NULL));
                frameBufInfo[i].bufPtr = (UInt32)virtPtr;
            }
            out->apiStatus = FrameQ_put (cargs->args.put.handle, frame);
            GT_assert (curTrace, (out->apiStatus >= 0));

			return (_RESMGR_PTR (ctp, &msg->o, sizeof (msg->o) + sizeof(FrameQDrv_CmdArgs)));

}
Exemplo n.º 2
0
int syslink_frameq_getv(resmgr_context_t *ctp, io_devctl_t *msg, syslink_ocb_t *ocb) {

			FrameQDrv_CmdArgs *cargs = (FrameQDrv_CmdArgs *) (_DEVCTL_DATA (msg->i));
			FrameQDrv_CmdArgs *out = (FrameQDrv_CmdArgs *) (_DEVCTL_DATA (msg->o));

			FrameQ_Frame        *framePtr = NULL;
            UInt32              *filledQueueId = NULL;
            FrameQ_FrameBufInfo *frameBufInfo;
            Ptr                 phyPtr;
            Ptr                 addr;
            UInt32              j;
			int					i;

			framePtr = (FrameQ_Frame*)(cargs+1);

			filledQueueId = (UInt32*)(framePtr + cargs->args.getv.numFrames);

            out->apiStatus = FrameQ_getv (cargs->args.getv.handle,
                                          framePtr,
                                          (Ptr)filledQueueId,
                                          &cargs->args.getv.numFrames);

			SETIOV(&ctp->iov[0], &msg->o, sizeof(msg->o) + sizeof(FrameQDrv_CmdArgs));

            if ((out->apiStatus >= 0) && (cargs->args.getv.numFrames > 0)) {

                      for (i = 0; i < cargs->args.getv.numFrames; i++) {
                            /* Convert Frame and frame buffer address in frame
                             			  * to physical address formatso that user space api
                             			  * convert this physical address in to user space
                             		 	  * virtual format.
                             			  */
                            frameBufInfo = (FrameQ_FrameBufInfo *)
                                                &(framePtr[i]->frameBufInfo[0]);

                            for(j = 0; j < framePtr[i]->numFrameBuffers; j++) {
                                addr = (Ptr)frameBufInfo[j].bufPtr;
                                phyPtr = Memory_translate(
                                                     addr,
                                                     Memory_XltFlags_Virt2Phys);
                                GT_assert(curTrace,(phyPtr != NULL));
                                frameBufInfo[j].bufPtr = (UInt32)phyPtr;
                            }

                            framePtr[i] = Memory_translate(
                                                     framePtr[i],
                                                     Memory_XltFlags_Virt2Phys);
                        }

						SETIOV(&ctp->iov[1], framePtr, sizeof (UInt32) * cargs->args.getv.numFrames);

                       	return _RESMGR_NPARTS(2);
                    }

			return _RESMGR_NPARTS(1);
}
Exemplo n.º 3
0
Int32 Vsys_allocBuf(UInt32 srRegId, UInt32 bufSize, UInt32 bufAlign, Vsys_AllocBufInfo *bufInfo)
{
    IHeap_Handle heapHndl;

    heapHndl = SharedRegion_getHeap(srRegId);
    OSA_assert(heapHndl != NULL);

    bufInfo->virtAddr = NULL;
    bufInfo->physAddr = NULL;
    bufInfo->srPtr    = 0;

    bufInfo->virtAddr = Memory_alloc(heapHndl, bufSize, bufAlign, NULL);

    if(bufInfo->virtAddr==NULL)
        return -1;

    bufInfo->physAddr = Memory_translate (bufInfo->virtAddr, Memory_XltFlags_Virt2Phys);

    if(bufInfo->physAddr==NULL)
        return -1;

    bufInfo->srPtr = SharedRegion_getSRPtr(bufInfo->virtAddr,srRegId);

    return 0;
}
Exemplo n.º 4
0
int syslink_frameq_putv(resmgr_context_t *ctp, io_devctl_t *msg, syslink_ocb_t *ocb) {

			FrameQDrv_CmdArgs *cargs = (FrameQDrv_CmdArgs *) (_DEVCTL_DATA (msg->i));
			FrameQDrv_CmdArgs *out = (FrameQDrv_CmdArgs *) (_DEVCTL_DATA (msg->o));

			FrameQ_Frame            *framePtr      = NULL;
            UInt32                  *filledQueueId = NULL;
            FrameQ_FrameBufInfo     *frameBufInfo;
            Ptr                     virtPtr;
            Ptr                     addr;
            UInt32                  j;
			int						i;

			framePtr = (FrameQ_Frame*)(cargs+1);

			filledQueueId = (UInt32*)(framePtr + cargs->args.putv.numFrames);

             for (i = 0; i < cargs->args.putv.numFrames; i++) {
                        /* Convert frame address and frame buffer address in to knl
                         			  * virtual format.
                         			  */
                        framePtr[i] = Memory_translate (framePtr[i],
                                                  Memory_XltFlags_Phys2Virt);
                        GT_assert(curTrace,(framePtr[i] != NULL));
                        frameBufInfo = (FrameQ_FrameBufInfo *)
                                                &(framePtr[i]->frameBufInfo[0]);
                        for(j = 0; j < framePtr[i]->numFrameBuffers; j++) {
                            addr = (Ptr)frameBufInfo[j].bufPtr;
                            virtPtr = Memory_translate(addr,
                                                   Memory_XltFlags_Phys2Virt);
                            GT_assert(curTrace,(virtPtr != NULL));
                            frameBufInfo[j].bufPtr = (UInt32)virtPtr;
                        }
             }

             out->apiStatus = FrameQ_putv (cargs->args.putv.handle,
                                          (FrameQ_Frame*)framePtr,
                                          (Ptr)filledQueueId,
                                          cargs->args.putv.numFrames);

             GT_assert (curTrace, (out->apiStatus >= 0));

			return (_RESMGR_PTR (ctp, &msg->o, sizeof (msg->o) + sizeof(FrameQDrv_CmdArgs)));

}
Exemplo n.º 5
0
Int32 AVSYNC_GetSharedDataStructure()
{
    Int32 status = 0;
    SystemVpss_AvSyncSharedObjPtr avsyncSharedObjPtr;

    status = System_linkControl( SYSTEM_LINK_ID_M3VPSS,
                        SYSTEM_M3VPSS_CMD_GET_AVSYNC_SHAREDOBJ_PTR,
                        &avsyncSharedObjPtr,  sizeof(avsyncSharedObjPtr), TRUE );

    pAvSyncInfo_obj = Memory_translate((Ptr)avsyncSharedObjPtr.pAvSyncSharedObjPtr, Memory_XltFlags_Phys2Virt);

    return status;
}
Exemplo n.º 6
0
int syslink_frameq_get(resmgr_context_t *ctp, io_devctl_t *msg, syslink_ocb_t *ocb) {

			FrameQDrv_CmdArgs *cargs = (FrameQDrv_CmdArgs *) (_DEVCTL_DATA (msg->i));
			FrameQDrv_CmdArgs *out = (FrameQDrv_CmdArgs *) (_DEVCTL_DATA (msg->o));

			FrameQ_Frame        frame;
            FrameQ_FrameBufInfo *frameBufInfo;
            Ptr                 phyPtr;
            Ptr                 addr;
            UInt32              j;

            out->apiStatus = FrameQ_get (cargs->args.get.handle, &frame);

            if (out->apiStatus >= 0) {
                /* Convert Frame and frame buffer address in frame to physical
                 		  * address formatso that user space api convert this physical
                 		  * address in to user space virtual format.
                		  */
                frameBufInfo = (FrameQ_FrameBufInfo *)
                                                      &(frame->frameBufInfo[0]);
                for(j = 0; j < frame->numFrameBuffers; j++) {
                    addr = (Ptr)frameBufInfo[j].bufPtr;
                    phyPtr = Memory_translate(addr, Memory_XltFlags_Virt2Phys);
                    GT_assert(curTrace,(phyPtr != NULL));
                    frameBufInfo[j].bufPtr = (UInt32)phyPtr;
                }

                out->args.get.frame = Memory_translate(
                                                    frame,
                                                    Memory_XltFlags_Virt2Phys);
            }
            else {
                out->args.get.frame = NULL;
            }

			return (_RESMGR_PTR (ctp, &msg->o, sizeof (msg->o) + sizeof(FrameQDrv_CmdArgs)));

}
/**
 * Handler for shared region set entry API.
 *
 * \param ctp	Thread's associated context information.
 * \param msg	The actual devctl() message.
 * \param ocb	OCB associated with client's session.
 *
 * \return POSIX errno value.
 *
 * \retval EOK		Success.
 * \retval ENOTSUP	Unsupported devctl().
 */
int syslink_sharedregion_setentry(resmgr_context_t *ctp, io_devctl_t *msg, syslink_ocb_t *ocb) {


	SharedRegionDrv_CmdArgs *		cargs = (SharedRegionDrv_CmdArgs *) (_DEVCTL_DATA (msg->i));
	SharedRegionDrv_CmdArgs *		out  = (SharedRegionDrv_CmdArgs *) (_DEVCTL_DATA (msg->o));

          SharedRegion_Entry *entry = (SharedRegion_Entry*)(cargs+1);

          entry->base = Memory_translate ((Ptr)cargs->args.setEntry.entry.base,
                                                    Memory_XltFlags_Phys2Virt);

            GT_assert (curTrace, (entry->base != (UInt32)NULL));
            out->apiStatus = SharedRegion_setEntry (cargs->args.setEntry.id,
                                            entry);
            GT_assert (curTrace, (out->apiStatus >= 0));

    if (out->apiStatus >= 0) {
        /* Add this call to the list to be cleaned-up */
        add_ocb_res(ocb, DCMD_SHAREDREGION_CLEARENTRY, (int)cargs->args.setEntry.id, NULL);
    }

	return (_RESMGR_PTR (ctp, &msg->o, sizeof (msg->o) + sizeof(SharedRegionDrv_CmdArgs)));
}