VirtualBox

source: vbox/trunk/src/VBox/Runtime/common/log/tracedefault.cpp@ 37396

最後變更 在這個檔案從37396是 37396,由 vboxsync 提交於 14 年 前

iprt/trace.h: Mostly done, but untested and undocumented.

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 1.4 KB
 
1
2/*******************************************************************************
3* Header Files *
4*******************************************************************************/
5#include "internal/iprt.h"
6#include <iprt/trace.h>
7
8#include <iprt/asm.h>
9#include <iprt/err.h>
10#include <iprt/thread.h>
11
12
13/*******************************************************************************
14* Global Variables *
15*******************************************************************************/
16/** The default trace buffer handle. */
17static RTTRACEBUF g_hDefaultTraceBuf = NIL_RTTRACEBUF;
18
19
20
21RTDECL(int) RTTraceSetDefaultBuf(RTTRACEBUF hTraceBuf)
22{
23 /* Retain the new buffer. */
24 if (hTraceBuf != NIL_RTTRACEBUF)
25 {
26 uint32_t cRefs = RTTraceBufRetain(hTraceBuf);
27 if (cRefs >= _1M)
28 return VERR_INVALID_HANDLE;
29 }
30
31 RTTRACEBUF hOldTraceBuf;
32 ASMAtomicXchgHandle(&g_hDefaultTraceBuf, hTraceBuf, &hOldTraceBuf);
33
34 if ( hOldTraceBuf != NIL_RTTRACEBUF
35 && hOldTraceBuf != hTraceBuf)
36 {
37 /* Race prevention kludge. */
38 RTThreadSleep(33);
39 RTTraceBufRelease(hOldTraceBuf);
40 }
41
42 return VINF_SUCCESS;
43}
44
45
46RTDECL(RTTRACEBUF) RTTraceGetDefaultBuf(void)
47{
48 return g_hDefaultTraceBuf;
49}
50
51
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette