SysLink API Reference  2.21.03.11
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
FrameQBufMgr.h
Go to the documentation of this file.
1 
10 /*
11  * ============================================================================
12  *
13  * Copyright (c) 2008-2012, Texas Instruments Incorporated
14  *
15  * Redistribution and use in source and binary forms, with or without
16  * modification, are permitted provided that the following conditions
17  * are met:
18  *
19  * * Redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer.
21  *
22  * * Redistributions in binary form must reproduce the above copyright
23  * notice, this list of conditions and the following disclaimer in the
24  * documentation and/or other materials provided with the distribution.
25  *
26  * * Neither the name of Texas Instruments Incorporated nor the names of
27  * its contributors may be used to endorse or promote products derived
28  * from this software without specific prior written permission.
29  *
30  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
31  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
32  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
33  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
34  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
35  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
36  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
37  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
38  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
39  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
40  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41  * Contact information for paper mail:
42  * Texas Instruments
43  * Post Office Box 655303
44  * Dallas, Texas 75265
45  * Contact information:
46  * http://www-k.ext.ti.com/sc/technical-support/product-information-centers.htm?
47  * DCMP=TIHomeTracking&HQS=Other+OT+home_d_contact
48  * ============================================================================
49  *
50  */
51 
52 
53 
54 #ifndef FRAMEQBUFMGR_H
55 #define FRAMEQBUFMGR_H
56 
57 
58 /* Module headers */
59 #include <ti/syslink/FrameQDefs.h>
60 #include <ti/syslink/SysLink.h>
61 #include <ti/ipc/Notify.h>
62 
63 #if defined (__cplusplus)
64 extern "C" {
65 #endif
66 
70 #define FrameQBufMgr_S_ALREADYDESTROYED 2
71 
75 #define FrameQBufMgr_S_ALREADYSETUP 1
76 
80 #define FrameQBufMgr_S_SUCCESS 0
81 
85 #define FrameQBufMgr_E_FAIL -1
86 
90 #define FrameQBufMgr_E_INVALIDARG -2
91 
95 #define FrameQBufMgr_E_NOTFOUND -3
96 
100 #define FrameQBufMgr_E_INST_EXISTS -4
101 
105 #define FrameQBufMgr_E_ALLOC_BUF -5
106 
110 #define FrameQBufMgr_E_ALLOC_MEMORY -6
111 
115 #define FrameQBufMgr_E_CREATE_NAMESERVER -7
116 
120 #define FrameQBufMgr_E_FAIL_CLIENTN0TIFYMGR_CREATE -8
121 
125 #define FrameQBufMgr_E_CLIENTN0TIFYMGR_OPEN -9
126 
130 #define FrameQBufMgr_E_CREATE_GATEMP -10
131 
135 #define FrameQBufMgr_E_OPEN_GATEMP -11
136 
140 #define FrameQBufMgr_E_MAX_CLIENTS -12
141 
145 #define FrameQBufMgr_E_ACCESSDENIED -13
146 
150 #define FrameQBufMgr_E_NOTIMPLEMENTED -14
151 
155 #define FrameQBufMgr_E_INVALIDSTATE -15
156 
160 #define FrameQBufMgr_E_OSFAILURE -16
161 
165 #define FrameQBufMgr_E_MAXINSTANCES -17
166 
170 #define FrameQBufMgr_E_INVALID_INTERFACE -18
171 
175 #define FrameQBufMgr_E_OPEN_NAMESERVER -19
176 
180 #define FrameQBufMgr_E_INSUFFICIENT_HDRBUFS -20
181 
185 #define FrameQBufMgr_E_ALLOC_FRAME -21
186 
191 #define FrameQBufMgr_E_ALLOC_ALLFRAMES -22
192 
196 #define FrameQBufMgr_E_INVALID_MEMMGRTYPE -23
197 
202 #define FrameQBufMgr_E_INVALID_HDRINTERFACETYPE -24
203 
208 #define FrameQBufMgr_E_INVALID_BUFINTERFACETYPE -25
209 
213 #define FrameQBufMgr_E_NAMESERVERADD -33
214 
218 typedef struct FrameQBufMgr_Object* FrameQBufMgr_Handle;
219 
220 
221 /* =============================================================================
222  * macros & defines
223  * =============================================================================
224  */
225 #define FrameQBufMgr_FrameBufInfo Frame_FrameBufInfo
226 
230 #define FrameQBufMgr_FrameHeader Frame_FrameHeader
231 
236 
240 #define FrameQBufMgr_MAXNAMELEN (32u)
241 
245 #define FrameQBufMgr_MAXINSTANCES (64u)
246 
250 #define FrameQBufMgr_MAX_POOLS (64u)
251 
256 #define FrameQBufMgr_MAX_FRAMEBUFS (8)
257 
262 #define FrameQBufMgr_POOL_MAXFRAMES (32)
263 
268 #define FrameQBufMgr_POOL_MAXHDRS (64)
269 
274 #define FrameQBufMgr_POOL_DYNAMIC_MAXFRAMES (1)
275 
280 #define FrameQBufMgr_POOL_DYNAMIC_MAXHDRS (1)
281 
285 #define FrameQBufMgr_NOTIFY_RESERVED_EVENTNO (0u)
286 
287 
293 #define FrameQBufMgr_MAX_FRAMESINVAPI (FrameQ_MAX_FRAMESINVAPI)
294 
295 /* =============================================================================
296  * Structures & Enums
297  * =============================================================================
298  */
299 
338 
350 
367 
379 
391 
406 
411 typedef struct FrameQBufMgr_Config_Tag {
412  UInt32 eventNo;
417  /* If set to true FrameQBufMgr instances will use dafault gate set in
418  * FrameQ.
419  * If default gate is not set in FrameQBufMgr, it uses GateMP's default
420  * gate. Set it to zero if FrameQ needs to create gate for a
421  * instance (remoteProtect and localProtect flags should be valid in
422  * params in this case).
423  */
425 
446 
452  String name;
458  Ptr sharedAddr;
461 
469 typedef struct FrameQBufMgr_Params {
478 
483  UInt32 size;
487  UInt32 height;
489  UInt32 width;
491  UInt32 align;
494 
499 
504  SysLink_NotifyType notifyType;
512  Ptr cbContext;
518 
519 /* =============================================================================
520  * APIs
521  * =============================================================================
522  */
523 
544 
545 
550 
551 
566 FrameQBufMgr_Handle FrameQBufMgr_create(Ptr params);
567 
568 
584 Int32 FrameQBufMgr_delete(FrameQBufMgr_Handle *pHandle);
585 
586 
626 Int32 FrameQBufMgr_open(FrameQBufMgr_Handle *handlePtr, Ptr openParams);
627 
628 
666 Int32
667 FrameQBufMgr_openByAddr (FrameQBufMgr_Handle * handlePtr,
668  Ptr openParams);
669 
685 Int32
686 FrameQBufMgr_close (FrameQBufMgr_Handle *pHandle);
687 
709 Int32
710 FrameQBufMgr_alloc (FrameQBufMgr_Handle handle,
711  FrameQBufMgr_Frame *frame);
712 
739 Int32
740 FrameQBufMgr_allocv (FrameQBufMgr_Handle handle,
741  FrameQBufMgr_Frame framePtr[],
742  UInt32 freeQId[],
743  UInt8 * numFrames);
744 
761 Int32
762 FrameQBufMgr_free (FrameQBufMgr_Handle handle,
763  FrameQBufMgr_Frame frame);
764 
784 Int32
785 FrameQBufMgr_freev (FrameQBufMgr_Handle handle,
786  FrameQBufMgr_Frame framePtr[],
787  UInt32 numFrames);
788 
789 
798 Ptr
799 FrameQBufMgr_add (FrameQBufMgr_Handle handle,
800  UInt8 freeQId);
801 
809 Int32
810 FrameQBufMgr_remove (FrameQBufMgr_Handle handle,
811  UInt8 freeQId,
812  FrameQBufMgr_Frame framePtr);
813 
838 Int32
839 FrameQBufMgr_dup (FrameQBufMgr_Handle handle,
840  FrameQBufMgr_Frame framePtr,
841  FrameQBufMgr_Frame dupedFramePtr[],
842  UInt32 numDupedFrames);
843 
870 Int32
871 FrameQBufMgr_dupv (FrameQBufMgr_Handle handle,
872  FrameQBufMgr_Frame framePtr[],
873  FrameQBufMgr_Frame **dupedFramePtr,
874  UInt32 numDupedFrames,
875  UInt32 numFrames);
876 
897 Int32
898 FrameQBufMgr_registerNotifier (FrameQBufMgr_Handle handle,
899  FrameQBufMgr_NotifyParams *notifyParams);
900 
919 Int32
920 FrameQBufMgr_unregisterNotifier (FrameQBufMgr_Handle handle);
921 
937 Int32
938 FrameQBufMgr_writeBack(FrameQBufMgr_Handle handle, FrameQBufMgr_Frame framePtr);
939 
958 Int32
959 FrameQBufMgr_writeBackBuf(FrameQBufMgr_Handle handle,
960  Ptr buf,
961  UInt32 flags);
962 
978 Int32
979 FrameQBufMgr_invalidate(FrameQBufMgr_Handle handle,
980  FrameQBufMgr_Frame framePtr);
981 
1000 Int32
1001 FrameQBufMgr_invalidateFrameBuf(FrameQBufMgr_Handle handle,
1002  Ptr frameBuf,
1003  UInt32 size,
1004  UInt8 bufIndexInFrame);
1005 
1024 Int32
1025 FrameQBufMgr_writeBackFrameBuf(FrameQBufMgr_Handle handle,
1026  Ptr frameBuf,
1027  UInt32 size,
1028  UInt8 bufIndexInFrame);
1042 Int32
1043 FrameQBufMgr_invalidateHeaderBuf(FrameQBufMgr_Handle handle,
1044  Ptr headerBuf);
1045 
1059 Int32
1060 FrameQBufMgr_writeBackHeaderBuf(FrameQBufMgr_Handle handle,
1061  Ptr headerBuf);
1062 
1087 Int32
1088 FrameQBufMgr_translateAddr (FrameQBufMgr_Handle handle,
1089  Ptr * dstAddr,
1090  FrameQBufMgr_AddrType dstAddrType,
1091  Ptr srcAddr,
1092  FrameQBufMgr_AddrType srcAddrType,
1093  FrameQBufMgr_BufType bufType);
1094 
1105 
1114 UInt32
1115 FrameQBufMgr_getId (FrameQBufMgr_Handle handle);
1116 
1126 Ptr
1128 
1138 Bool
1139 FrameQBufMgr_isCacheEnabledForHeaderBuf(FrameQBufMgr_Handle handle);
1140 
1151 Bool
1152 FrameQBufMgr_isCacheEnabledForFrameBuf(FrameQBufMgr_Handle handle,
1153  UInt8 framebufIndex);
1154 
1164 Int32
1165 FrameQBufMgr_getNumFreeFrames (FrameQBufMgr_Handle handle, UInt32* numFreeFrames);
1166 
1177 Int32
1178 FrameQBufMgr_control (FrameQBufMgr_Handle handle,
1179  Int32 cmd,
1180  Ptr arg);
1181 
1191 
1200 /* API that returns the kernel space handle of the instance */
1201 Ptr FrameQBufMgr_getKnlHandle(FrameQBufMgr_Handle handle);
1202 
1203 
1204 #if defined (__cplusplus)
1205 }
1206 #endif /* defined (__cplusplus) */
1207 
1208 
1209 #endif /*FRAMEQBUFMGR_H*/
Copyright 2014, Texas Instruments Incorporated