aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/gallium/auxiliary/util/u_debug_refcnt.c
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src/gallium/auxiliary/util/u_debug_refcnt.c')
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_debug_refcnt.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_refcnt.c b/mesalib/src/gallium/auxiliary/util/u_debug_refcnt.c
index b3e389408..a51b4c55f 100644
--- a/mesalib/src/gallium/auxiliary/util/u_debug_refcnt.c
+++ b/mesalib/src/gallium/auxiliary/util/u_debug_refcnt.c
@@ -24,11 +24,14 @@
*
**************************************************************************/
-#if defined(DEBUG) && (!defined(PIPE_OS_WINDOWS) || defined(PIPE_SUBSYSTEM_WINDOWS_USER))
+#if defined(DEBUG)
/* see http://www.mozilla.org/performance/refcnt-balancer.html for what do with the output
* on Linux, use tools/addr2line.sh to postprocess it before anything else
**/
+
+#include <stdio.h>
+
#include "util/u_debug.h"
#include "util/u_debug_refcnt.h"
#include "util/u_debug_stack.h"
@@ -36,11 +39,10 @@
#include "util/u_string.h"
#include "util/u_hash_table.h"
#include "os/os_thread.h"
-#include "os/os_stream.h"
int debug_refcnt_state;
-struct os_stream* stream;
+FILE* stream;
/* TODO: maybe move this serial machinery to a stand-alone module and expose it? */
pipe_static_mutex(serials_mutex);
@@ -115,9 +117,9 @@ static void dump_stack(const char* symbols[STACK_LEN])
for(i = 0; i < STACK_LEN; ++i)
{
if(symbols[i])
- os_stream_printf(stream, "%s\n", symbols[i]);
+ fprintf(stream, "%s\n", symbols[i]);
}
- os_stream_write(stream, "\n", 1);
+ fprintf(stream, "\n");
}
void debug_reference_slowpath(const struct pipe_reference* p, debug_reference_descriptor get_desc, int change)
@@ -129,7 +131,7 @@ void debug_reference_slowpath(const struct pipe_reference* p, debug_reference_de
{
const char* filename = debug_get_option("GALLIUM_REFCNT_LOG", NULL);
if(filename && filename[0])
- stream = os_file_stream_create(filename);
+ stream = fopen(filename, "wt");
if(stream)
debug_refcnt_state = 1;
@@ -161,31 +163,33 @@ void debug_reference_slowpath(const struct pipe_reference* p, debug_reference_de
if(!existing)
{
- os_stream_printf(stream, "<%s> %p %u Create\n", buf, p, serial);
+ fprintf(stream, "<%s> %p %u Create\n", buf, (void *) p, serial);
dump_stack(symbols);
/* this is there to provide a gradual change even if we don't see the initialization */
for(i = 1; i <= refcnt - change; ++i)
{
- os_stream_printf(stream, "<%s> %p %u AddRef %u\n", buf, p, serial, i);
+ fprintf(stream, "<%s> %p %u AddRef %u\n", buf, (void *) p,
+ serial, i);
dump_stack(symbols);
}
}
if(change)
{
- os_stream_printf(stream, "<%s> %p %u %s %u\n", buf, p, serial, change > 0 ? "AddRef" : "Release", refcnt);
+ fprintf(stream, "<%s> %p %u %s %u\n", buf, (void *) p, serial,
+ change > 0 ? "AddRef" : "Release", refcnt);
dump_stack(symbols);
}
if(!refcnt)
{
debug_serial_delete((void*)p);
- os_stream_printf(stream, "<%s> %p %u Destroy\n", buf, p, serial);
+ fprintf(stream, "<%s> %p %u Destroy\n", buf, (void *) p, serial);
dump_stack(symbols);
}
- os_stream_flush(stream);
+ fflush(stream);
}
}
#endif