Changeset 90974 in vbox for trunk/src/VBox/Runtime/common
- Timestamp:
- Aug 28, 2021 12:45:58 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 146613
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/log/log.cpp
r90969 r90974 279 279 static FNRTLOGPHASEMSG rtlogPhaseMsgNormal; 280 280 #endif 281 static void rtlogLoggerExFLocked(PRTLOGGERINTERNAL pLoggerInt, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...); 281 282 282 283 … … 2984 2985 * @returns IRPT status code. 2985 2986 * @param pLogger The logger instance (NULL for default logger). 2987 * @param pszBefore Text to log before the bulk text. Optional. 2986 2988 * @param pch Pointer to the block of bulk log text to write. 2987 2989 * @param cch Size of the block of bulk log text to write. 2988 */ 2989 RTDECL(int) RTLogBulkWrite(PRTLOGGER pLogger, const char *pch, size_t cch) 2990 * @param pszAfter Text to log after the bulk text. Optional. 2991 */ 2992 RTDECL(int) RTLogBulkWrite(PRTLOGGER pLogger, const char *pszBefore, const char *pch, size_t cch, const char *pszAfter) 2990 2993 { 2991 2994 PRTLOGGERINTERNAL pLoggerInt = (PRTLOGGERINTERNAL)pLogger; … … 2998 3001 if (RT_SUCCESS(rc)) 2999 3002 { 3000 /* 3001 * Do the copying. 3002 */ 3003 while (cch > 0) 3004 { 3005 PRTLOGBUFFERDESC const pBufDesc = pLoggerInt->pBufDesc; 3006 char * const pchBuf = pBufDesc->pchBuf; 3007 uint32_t const cbBuf = pBufDesc->cbBuf; 3008 uint32_t offBuf = pBufDesc->offBuf; 3009 if (cch + 1 < cbBuf - offBuf) 3003 if (cch > 0) 3004 { 3005 /* 3006 * Heading/marker. 3007 */ 3008 if (pszBefore) 3009 rtlogLoggerExFLocked(pLoggerInt, RTLOGGRPFLAGS_LEVEL_1, UINT32_MAX, "%s", pszBefore); 3010 3011 /* 3012 * Do the copying. 3013 */ 3014 do 3010 3015 { 3011 memcpy(&pchBuf[offBuf], pch, cch); 3012 offBuf += (uint32_t)cch; 3013 pchBuf[offBuf] = '\0'; 3014 pBufDesc->offBuf = offBuf; 3015 if (pBufDesc->pAux) 3016 pBufDesc->pAux->offBuf = offBuf; 3017 if (!(pLoggerInt->fDestFlags & RTLOGFLAGS_BUFFERED)) 3018 rtlogFlush(pLoggerInt, false /*fNeedSpace*/); 3019 break; 3020 } 3021 3022 /* Not enough space. */ 3023 if (offBuf + 1 < cbBuf) 3024 { 3025 uint32_t cbToCopy = cbBuf - offBuf - 1; 3026 memcpy(&pchBuf[offBuf], pch, cbToCopy); 3027 offBuf += cbToCopy; 3028 pchBuf[offBuf] = '\0'; 3029 pBufDesc->offBuf = offBuf; 3030 if (pBufDesc->pAux) 3031 pBufDesc->pAux->offBuf = offBuf; 3032 pch += cbToCopy; 3033 cch -= cbToCopy; 3034 } 3035 3036 rtlogFlush(pLoggerInt, false /*fNeedSpace*/); 3016 PRTLOGBUFFERDESC const pBufDesc = pLoggerInt->pBufDesc; 3017 char * const pchBuf = pBufDesc->pchBuf; 3018 uint32_t const cbBuf = pBufDesc->cbBuf; 3019 uint32_t offBuf = pBufDesc->offBuf; 3020 if (cch + 1 < cbBuf - offBuf) 3021 { 3022 memcpy(&pchBuf[offBuf], pch, cch); 3023 offBuf += (uint32_t)cch; 3024 pchBuf[offBuf] = '\0'; 3025 pBufDesc->offBuf = offBuf; 3026 if (pBufDesc->pAux) 3027 pBufDesc->pAux->offBuf = offBuf; 3028 if (!(pLoggerInt->fDestFlags & RTLOGFLAGS_BUFFERED)) 3029 rtlogFlush(pLoggerInt, false /*fNeedSpace*/); 3030 break; 3031 } 3032 3033 /* Not enough space. */ 3034 if (offBuf + 1 < cbBuf) 3035 { 3036 uint32_t cbToCopy = cbBuf - offBuf - 1; 3037 memcpy(&pchBuf[offBuf], pch, cbToCopy); 3038 offBuf += cbToCopy; 3039 pchBuf[offBuf] = '\0'; 3040 pBufDesc->offBuf = offBuf; 3041 if (pBufDesc->pAux) 3042 pBufDesc->pAux->offBuf = offBuf; 3043 pch += cbToCopy; 3044 cch -= cbToCopy; 3045 } 3046 3047 rtlogFlush(pLoggerInt, false /*fNeedSpace*/); 3048 } while (cch > 0); 3049 3050 /* 3051 * Footer/marker. 3052 */ 3053 if (pszAfter) 3054 rtlogLoggerExFLocked(pLoggerInt, RTLOGGRPFLAGS_LEVEL_1, UINT32_MAX, "%s", pszAfter); 3037 3055 } 3038 3056 … … 3109 3127 PRTLOGBUFFERDESC pBufDesc = pLoggerInt->pBufDesc; 3110 3128 uint32_t cchToFlush = pBufDesc->offBuf; 3111 char * constpchToFlush = pBufDesc->pchBuf;3129 char * pchToFlush = pBufDesc->pchBuf; 3112 3130 uint32_t const cbBuf = pBufDesc->cbBuf; 3113 3131 Assert(pBufDesc->u32Magic == RTLOGBUFFERDESC_MAGIC); … … 3199 3217 pLoggerInt->idxBufDesc = (uint8_t)idxBufDesc; 3200 3218 pLoggerInt->pBufDesc = pBufDesc = &pLoggerInt->paBufDescs[idxBufDesc]; 3219 pchToFlush = pBufDesc->pchBuf; 3201 3220 } 3202 3221 }
Note:
See TracChangeset
for help on using the changeset viewer.