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 
203 /*****************************************************************************/
204 
205 
234 
235 /*****************************************************************************/
236 
266 ClRcT clBufferCreateAndAllocate (ClUint32T size, ClBufferHandleT *pMessageHandle);
267 
268 /*****************************************************************************/
269 
270 
297 
298 /*****************************************************************************/
299 
326 
327 /*****************************************************************************/
328 
356 ClRcT clBufferLengthGet (ClBufferHandleT messageHandle, ClUint32T *pMessageLength);
357 
358 /*****************************************************************************/
359 
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
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
967  ClUint8T** ppFlattenBuffer);
968 
969 /*****************************************************************************/
970 
971 
1007 ClRcT
1009  ClBufferHandleT* pKernelMessageHandle);
1010 
1011 
1012 /*****************************************************************************/
1013 
1014 
1015 
1051 ClRcT
1053  ClBufferHandleT userMessageHandle);
1054 /*****************************************************************************/
1055 
1085 ClRcT
1086 clBufferShrink(ClPoolShrinkOptionsT *pShrinkOptions);
1087 /*****************************************************************************/
1088 
1089 
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 
Typical defines found in any software project.
Header file of RBE related APIs.
ClRcT clBufferFinalize(void)
Cleans up the Buffer Management library.
ClRcT clBufferInitialize(const ClBufferPoolConfigT *pConfig)
Initializes the Buffer Management library.
ClRcT clBufferToBufferCopy(ClBufferHandleT sourceMessage, ClUint32T sourceMessageOffset, ClBufferHandleT destinationMessage, ClUint32T numberOfBytes)
Copies specific number of bytes from one message to another.
ClRcT clDbgBufferPrint(ClBufferHandleT buffer)
Dumps the buffer for debugging, etc.
ClRcT clBufferConcatenate(ClBufferHandleT destination, ClBufferHandleT *pSource)
Concatenates source message to destination message.
ClRcT clBufferKernelToUserCopy(ClBufferHandleT kernelMessageHandle, ClBufferHandleT userMessageHandle)
Copies message from kernel-space to user-space.
ClRcT clBufferWriteOffsetGet(ClBufferHandleT messageHandle, ClUint32T *pWriteOffset)
Returns current write offset of the message.
ClPtrT ClBufferHandleT
The type of the handle for the buffer messages.
Definition: clBufferApi.h:82
ClRcT clBufferLengthGet(ClBufferHandleT messageHandle, ClUint32T *pMessageLength)
Returns the length of the message.
ClRcT clBufferShrink(ClPoolShrinkOptionsT *pShrinkOptions)
Frees up the unused pools of all sizes.
ClRcT clBufferCreateAndAllocate(ClUint32T size, ClBufferHandleT *pMessageHandle)
Creates buffers for a requested size of a message.
ClRcT clBufferDuplicate(ClBufferHandleT messageHandle, ClBufferHandleT *pDuplicatedMessage)
Duplicates a message.
ClRcT clBufferLengthCalc(ClBufferHandleT bufferHandle)
Recompute the message length & set internal variable.
ClRcT clBufferReadOffsetSet(ClBufferHandleT messageHandle, ClInt32T newReadOffset, ClBufferSeekTypeT seekType)
Sets current read offset of the message.
ClRcT clBufferUserToKernelCopy(ClBufferHandleT userMessageHandle, ClBufferHandleT *pKernelMessageHandle)
Copies message from user-space to kernel-space.
ClRcT clBufferNBytesWrite(ClBufferHandleT messageHandle, ClUint8T *pByteBuffer, ClUint32T numberOfBytesToWrite)
Writes the specified number bytes of data from a message.
ClRcT clBufferTrailerTrim(ClBufferHandleT messageHandle, ClUint32T numberOfBytes)
Trims the tail of the message.
ClBufferMode
The config mode of the Buffer.
Definition: clBufferApi.h:92
ClRcT clBufferDelete(ClBufferHandleT *pMessageHandle)
Deletes the Buffers.
ClRcT clBufferClear(ClBufferHandleT messageHandle)
Deletes the content of the buffer message.
ClRcT clBufferChecksum16Compute(ClBufferHandleT messageHandle, ClUint32T startOffset, ClUint32T length, ClUint16T *pChecksum)
Computes a 16-bit checksum on a message.
ClRcT clBufferDataPrepend(ClBufferHandleT messageHandle, ClUint8T *pByteBuffer, ClUint32T numberOfBytesToWrite)
Prepends specified number of bytes at the begining of message.
ClRcT clBufferCreate(ClBufferHandleT *pMessageHandle)
Creates a new message.
ClRcT clBufferFlatten(ClBufferHandleT messageHandle, ClUint8T **ppFlattenBuffer)
Flattens message into a single buffer.
ClRcT clBufferWriteOffsetSet(ClBufferHandleT messageHandle, ClInt32T newWriteOffset, ClBufferSeekTypeT seekType)
Sets current write offset of the message.
enum ClBufferMode ClBufferModeT
The config mode of the Buffer.
ClRcT clBufferChecksum32Compute(ClBufferHandleT messageHandle, ClUint32T startOffset, ClUint32T length, ClUint32T *pChecksum)
Computes a 32-bit checksum on a message.
ClRcT clBufferReadOffsetGet(ClBufferHandleT messageHandle, ClUint32T *pReadOffset)
Returns current read offset of the message.
ClRcT clBufferHeaderTrim(ClBufferHandleT messageHandle, ClUint32T numberOfBytes)
Trims the start of the message.
ClRcT clBufferNBytesRead(ClBufferHandleT messageHandle, ClUint8T *pByteBuffer, ClUint32T *pNumberOfBytesToRead)
Reads the specified number of bytes of data from a message.
ClBufferSeekTypeT
Definition: clBufferApi.h:58
@ CL_BUFFER_PREALLOCATED_MODE
This mode makes buffer library uses Clovis implementation of Pool for allocating and deallocating mem...
Definition: clBufferApi.h:103
@ CL_BUFFER_NATIVE_MODE
In this mode the buffer library uses the malloc and free for allocating and deallocating memory for b...
Definition: clBufferApi.h:97
@ CL_BUFFER_SEEK_SET
This is to set the read or write offset pointer to a position mentioned from the BEGINING of the Buff...
Definition: clBufferApi.h:63
@ CL_BUFFER_SEEK_CUR
This is to set the read or write offset pointer to a position mentioned from the CURRENT position of ...
Definition: clBufferApi.h:68
@ CL_BUFFER_SEEK_END
This is to set the read or write offset pointer to a position mentioned from the END of the Buffer me...
Definition: clBufferApi.h:73
ClUint32T ClRcT
Clovis return code type.
Definition: clCommon.h:168
The type of the buffer configuration info.
Definition: clBufferApi.h:112
ClBufferModeT mode
Mode configured for Buffer fof fetching the memory.
Definition: clBufferApi.h:129
ClBoolT lazy
Mode of usage of pools.
Definition: clBufferApi.h:124
ClPoolConfigT * pPoolConfig
Pool configuration of all the pools used by buffer library.
Definition: clBufferApi.h:120
ClUint32T numPools
The Number pools used for buffer library.
Definition: clBufferApi.h:116

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