OpenClovis Logo

clBufferApi.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2002-2012 OpenClovis Solutions Inc. All Rights Reserved.
3  *
4  * This file is available under a commercial license from the
5  * copyright holder or the GNU General Public License Version 2.0.
6  *
7  * The source code for this program is not published or otherwise
8  * divested of its trade secrets, irrespective of what has been
9  * deposited with the U.S. Copyright office.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * General Public License for more details.
15  *
16  * For more information, see the file COPYING provided with this
17  * material.
18  */
19 /*******************************************************************************
20  * ModuleName : buffer
21  * File : clBufferApi.h
22  *******************************************************************************/
23 
24 /*******************************************************************************
25  * Description :
26  * This file contains essential definitions for the buffer management
27  * library.
28  *
29  *
30  *****************************************************************************/
31 
44 #ifndef _CL_BUFFER_API_H_
45 #define _CL_BUFFER_API_H_
46 
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50 
51 #include <clCommon.h>
52 #include <clRuleApi.h>
53 #include <clMemStats.h>
54 #include <clPoolIpi.h>
55 
56 /*****************************************************************************/
57 
58 typedef enum {
74  /* Add any new seek types before this.*/
75  CL_BUFFER_SEEK_MAX
77 
78 
82 typedef ClPtrT ClBufferHandleT;
83 
84 struct iovec;
85 
91 typedef enum ClBufferMode
92 {
98 
104 
105 
106  CL_BUFFER_MAX_MODE,
108 
112 typedef struct {
116  ClUint32T numPools;
120  ClPoolConfigT *pPoolConfig;
124  ClBoolT lazy;
130 
132 
133 
134 /*****************************************************************************/
135 
136 
137 
138 /************************* BUFF MGMT APIs ************************************/
139 
140 
172 /*****************************************************************************/
173 
174 
202 ClRcT clBufferFinalize (void);
203 /*****************************************************************************/
204 
205 
233 ClRcT clBufferCreate (ClBufferHandleT *pMessageHandle);
234 
235 /*****************************************************************************/
236 
266 ClRcT clBufferCreateAndAllocate (ClUint32T size, ClBufferHandleT *pMessageHandle);
267 
268 /*****************************************************************************/
269 
270 
296 ClRcT clBufferDelete (ClBufferHandleT *pMessageHandle);
297 
298 /*****************************************************************************/
299 
325 ClRcT clBufferClear (ClBufferHandleT messageHandle);
326 
327 /*****************************************************************************/
328 
356 ClRcT clBufferLengthGet (ClBufferHandleT messageHandle, ClUint32T *pMessageLength);
357 
358 /*****************************************************************************/
359 
380 ClRcT clBufferLengthCalc (ClBufferHandleT bufferHandle);
381 
382 
415 ClRcT clBufferNBytesRead (ClBufferHandleT messageHandle, ClUint8T *pByteBuffer, ClUint32T* pNumberOfBytesToRead);
416 
417 /*****************************************************************************/
418 
419 
453 ClRcT clBufferNBytesWrite (ClBufferHandleT messageHandle, ClUint8T *pByteBuffer, ClUint32T numberOfBytesToWrite);
454 
455 /*****************************************************************************/
456 
457 
488 ClRcT clBufferChecksum16Compute(ClBufferHandleT messageHandle,ClUint32T startOffset,ClUint32T length, ClUint16T* pChecksum);
489 /****************************************************************************/
490 
491 
522 ClRcT
523 clBufferChecksum32Compute(ClBufferHandleT messageHandle, ClUint32T startOffset, ClUint32T length, ClUint32T* pChecksum);
524 
525 /*****************************************************************************/
526 
527 
560 ClRcT
561 clBufferDataPrepend (ClBufferHandleT messageHandle, ClUint8T *pByteBuffer, ClUint32T numberOfBytesToWrite);
562 
563 /*****************************************************************************/
564 
565 
566 
598 ClRcT
599 clBufferConcatenate (ClBufferHandleT destination, ClBufferHandleT *pSource);
600 
601 /*****************************************************************************/
602 
603 
635 ClRcT
636 clBufferReadOffsetGet (ClBufferHandleT messageHandle, ClUint32T *pReadOffset);
637 
638 /*****************************************************************************/
639 
640 
672 ClRcT
673 clBufferWriteOffsetGet (ClBufferHandleT messageHandle, ClUint32T *pWriteOffset);
674 
675 /*****************************************************************************/
676 
677 
718 ClRcT
719 clBufferReadOffsetSet (ClBufferHandleT messageHandle, ClInt32T newReadOffset, ClBufferSeekTypeT seekType);
720 
721 /*****************************************************************************/
722 
723 
765 ClRcT
766 clBufferWriteOffsetSet (ClBufferHandleT messageHandle, ClInt32T newWriteOffset, ClBufferSeekTypeT seekType);
767 
768 /*****************************************************************************/
769 
799 ClRcT
800 clBufferHeaderTrim (ClBufferHandleT messageHandle, ClUint32T numberOfBytes);
801 
802 /*****************************************************************************/
803 
804 
836 ClRcT
837 clBufferTrailerTrim (ClBufferHandleT messageHandle, ClUint32T numberOfBytes);
838 
839 /*****************************************************************************/
840 
841 
842 
878 ClRcT
879 clBufferToBufferCopy(ClBufferHandleT sourceMessage, ClUint32T sourceMessageOffset,
880  ClBufferHandleT destinationMessage, ClUint32T numberOfBytes);
881 
882 /*****************************************************************************/
883 
884 
919 ClRcT
920 clBufferDuplicate (ClBufferHandleT messageHandle, ClBufferHandleT *pDuplicatedMessage);
921 
922 /*
923  * Same as duplicate but just shares the chain with the source and copies only the first chain,
924  * so any metadata prepended would be local. However a write to the cloned buffer would result in a COW
925  * or copy on write of the cloned destination buffer from the parent.
926 */
927 ClRcT
928 clBufferClone (ClBufferHandleT source, ClBufferHandleT *pClone);
929 
930 /*
931  * Stich a heap allocated chunk to the buffer chain without duplication.
932  */
933 ClRcT
934 clBufferAppendHeap (ClBufferHandleT source, ClUint8T *buffer, ClUint32T size);
935 
936 /*****************************************************************************/
937 
965 ClRcT
966 clBufferFlatten(ClBufferHandleT messageHandle,
967  ClUint8T** ppFlattenBuffer);
968 
969 /*****************************************************************************/
970 
971 
1007 ClRcT
1008 clBufferUserToKernelCopy(ClBufferHandleT userMessageHandle,
1009  ClBufferHandleT* pKernelMessageHandle);
1010 
1011 
1012 /*****************************************************************************/
1013 
1014 
1015 
1051 ClRcT
1052 clBufferKernelToUserCopy(ClBufferHandleT kernelMessageHandle,
1053  ClBufferHandleT userMessageHandle);
1054 /*****************************************************************************/
1055 
1085 ClRcT
1086 clBufferShrink(ClPoolShrinkOptionsT *pShrinkOptions);
1087 /*****************************************************************************/
1088 
1089 
1092  ClRcT clDbgBufferPrint(ClBufferHandleT buffer);
1093 
1094 
1095 ClRcT clBufferStatsGet(ClMemStatsT *pBufferStats);
1096 
1097 /*****************************************************************************/
1098 
1099 ClRcT clBufferPoolStatsGet(ClUint32T numPools,ClUint32T *pPoolSize,ClPoolStatsT *pBufferPoolStats);
1100 
1101 /*****************************************************************************/
1102 
1103 ClRcT clBufferVectorize(ClBufferHandleT buffer,struct iovec **ppIOVector,ClInt32T *pNumVectors);
1104 
1105 /*****************************************************************************/
1106  /*The below definitions are deprecated and should no longer be used*/
1107 
1108 typedef ClBufferHandleT ClBufferMessageHandleT CL_DEPRECATED;
1109 
1110 ClRcT
1111 clBufferMessageCreate(ClBufferHandleT *pMessageHandle) CL_DEPRECATED;
1112 
1113 ClRcT
1114 clBufferMessageCreateAndAllocate(ClUint32T size, ClBufferHandleT *pMessageHandle) CL_DEPRECATED;
1115 
1116 
1117 ClRcT
1118 clBufferMessageDelete(ClBufferHandleT *pMessageHandle) CL_DEPRECATED;
1119 
1120 ClRcT
1121 clBufferMessageClear(ClBufferHandleT messageHandle) CL_DEPRECATED;
1122 
1123 ClRcT
1124 clBufferMessageLengthGet(ClBufferHandleT messageHandle, ClUint32T *pMessageLength) CL_DEPRECATED;
1125 
1126 ClRcT
1127 clBufferMessageNBytesRead(ClBufferHandleT messageHandle,
1128  ClUint8T *pByteBuffer,
1129  ClUint32T* pNumberOfBytesToRead) CL_DEPRECATED;
1130 
1131 ClRcT
1132 clBufferMessageNBytesWrite(ClBufferHandleT messageHandle,
1133  ClUint8T *pByteBuffer,
1134  ClUint32T numberOfBytesToWrite) CL_DEPRECATED;
1135 
1136 ClRcT
1137 clBufferMessageDataPrepend(ClBufferHandleT messageHandle,
1138  ClUint8T *pByteBuffer,
1139  ClUint32T numberOfBytesToWrite) CL_DEPRECATED;
1140 
1141 ClRcT
1142 clBufferMessageConcatenate(ClBufferHandleT destination, ClBufferHandleT *pSource) CL_DEPRECATED;
1143 
1144 ClRcT
1145 clBufferMessageReadOffsetGet(ClBufferHandleT messageHandle,
1146  ClUint32T *pReadOffset) CL_DEPRECATED;
1147 
1148 ClRcT
1149 clBufferMessageWriteOffsetGet(ClBufferHandleT messageHandle,
1150  ClUint32T *pWriteOffset) CL_DEPRECATED;
1151 
1152 ClRcT
1153 clBufferMessageReadOffsetSet(ClBufferHandleT messageHandle,
1154  ClInt32T newReadOffset,
1155  ClBufferSeekTypeT seekType) CL_DEPRECATED;
1156 
1157 ClRcT
1158 clBufferMessageWriteOffsetSet(ClBufferHandleT messageHandle,
1159  ClInt32T newWriteOffset,
1160  ClBufferSeekTypeT seekType) CL_DEPRECATED;
1161 
1162 ClRcT
1163 clBufferMessageHeaderTrim(ClBufferHandleT messageHandle,
1164  ClUint32T numberOfBytes) CL_DEPRECATED;
1165 
1166 ClRcT
1167 clBufferMessageTrailerTrim(ClBufferHandleT messageHandle,
1168  ClUint32T numberOfBytes) CL_DEPRECATED;
1169 
1170 ClRcT
1171 clBufferMessageToMessageCopy(ClBufferHandleT source,
1172  ClUint32T sourceOffset,
1173  ClBufferHandleT destination,
1174  ClUint32T numberOfBytes) CL_DEPRECATED;
1175 
1176 ClRcT
1177 clBufferMessageDuplicate(ClBufferHandleT source,
1178  ClBufferHandleT *pDuplicate) CL_DEPRECATED;
1179 #ifdef __cplusplus
1180 }
1181 #endif
1182 
1183 #endif /* _CL_BUFFER_API_H_ */
1184 
1185 

Generated on Tue Jan 10 10:29:15 PST 2012 for OpenClovis SDK using Doxygen