Lines Matching defs:cirbufCB

36 UINT32 LOS_CirBufUsedSize(CirBuf *cirbufCB)
41 LOS_SpinLockSave(&cirbufCB->lock, &intSave);
42 size = cirbufCB->size - cirbufCB->remain;
43 LOS_SpinUnlockRestore(&cirbufCB->lock, intSave);
55 STATIC UINT32 OsCirBufWriteLinear(CirBuf *cirbufCB, const CHAR *buf, UINT32 size)
60 cpSize = (cirbufCB->remain < size) ? cirbufCB->remain : size;
66 err = memcpy_s(cirbufCB->fifo + cirbufCB->endIdx, cirbufCB->remain, buf, cpSize);
71 cirbufCB->remain -= cpSize;
72 cirbufCB->endIdx += cpSize;
77 STATIC UINT32 OsCirBufWriteLoop(CirBuf *cirbufCB, const CHAR *buf, UINT32 size)
82 right = cirbufCB->size - cirbufCB->endIdx;
85 err = memcpy_s(cirbufCB->fifo + cirbufCB->endIdx, right, buf, cpSize);
90 cirbufCB->remain -= cpSize;
91 cirbufCB->endIdx += cpSize;
92 if (cirbufCB->endIdx == cirbufCB->size) {
93 cirbufCB->endIdx = 0;
99 cpSize += OsCirBufWriteLinear(cirbufCB, buf + cpSize, size - cpSize);
105 UINT32 LOS_CirBufWrite(CirBuf *cirbufCB, const CHAR *buf, UINT32 size)
110 if ((cirbufCB == NULL) || (buf == NULL) || (size == 0) || (cirbufCB->status != CBUF_USED)) {
114 LOS_SpinLockSave(&cirbufCB->lock, &intSave);
116 if ((cirbufCB->fifo == NULL) || (cirbufCB->remain == 0)) {
120 if (cirbufCB->startIdx <= cirbufCB->endIdx) {
121 cpSize = OsCirBufWriteLoop(cirbufCB, buf, size);
123 cpSize = OsCirBufWriteLinear(cirbufCB, buf, size);
127 LOS_SpinUnlockRestore(&cirbufCB->lock, intSave);
131 STATIC UINT32 OsCirBufReadLinear(CirBuf *cirbufCB, CHAR *buf, UINT32 size)
136 remain = cirbufCB->endIdx - cirbufCB->startIdx;
143 err = memcpy_s(buf, size, cirbufCB->fifo + cirbufCB->startIdx, cpSize);
148 cirbufCB->remain += cpSize;
149 cirbufCB->startIdx += cpSize;
154 STATIC UINT32 OsCirBufReadLoop(CirBuf *cirbufCB, CHAR *buf, UINT32 size)
159 right = cirbufCB->size - cirbufCB->startIdx;
162 err = memcpy_s(buf, size, cirbufCB->fifo + cirbufCB->startIdx, cpSize);
167 cirbufCB->remain += cpSize;
168 cirbufCB->startIdx += cpSize;
169 if (cirbufCB->startIdx == cirbufCB->size) {
170 cirbufCB->startIdx = 0;
174 cpSize += OsCirBufReadLinear(cirbufCB, buf + cpSize, size - cpSize);
180 UINT32 LOS_CirBufRead(CirBuf *cirbufCB, CHAR *buf, UINT32 size)
185 if ((cirbufCB == NULL) || (buf == NULL) || (size == 0) || (cirbufCB->status != CBUF_USED)) {
189 LOS_SpinLockSave(&cirbufCB->lock, &intSave);
191 if ((cirbufCB->fifo == NULL) || (cirbufCB->remain == cirbufCB->size)) {
195 if (cirbufCB->startIdx >= cirbufCB->endIdx) {
196 cpSize = OsCirBufReadLoop(cirbufCB, buf, size);
198 cpSize = OsCirBufReadLinear(cirbufCB, buf, size);
202 LOS_SpinUnlockRestore(&cirbufCB->lock, intSave);
206 UINT32 LOS_CirBufInit(CirBuf *cirbufCB, CHAR *fifo, UINT32 size)
208 if ((cirbufCB == NULL) || (fifo == NULL)) {
212 (VOID)memset_s(cirbufCB, sizeof(CirBuf), 0, sizeof(CirBuf));
213 LOS_SpinInit(&cirbufCB->lock);
214 cirbufCB->size = size;
215 cirbufCB->remain = size;
216 cirbufCB->status = CBUF_USED;
217 cirbufCB->fifo = fifo;
222 VOID LOS_CirBufDeinit(CirBuf *cirbufCB)
224 (VOID)memset_s(cirbufCB, sizeof(CirBuf), 0, sizeof(CirBuf));