summaryrefslogtreecommitdiff
path: root/wl1271/platforms/os/common/src/tracebuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/platforms/os/common/src/tracebuf.c')
-rw-r--r--wl1271/platforms/os/common/src/tracebuf.c262
1 files changed, 0 insertions, 262 deletions
diff --git a/wl1271/platforms/os/common/src/tracebuf.c b/wl1271/platforms/os/common/src/tracebuf.c
deleted file mode 100644
index 5a0f156..0000000
--- a/wl1271/platforms/os/common/src/tracebuf.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * tracebuf.c
- *
- * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name Texas Instruments nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Benchmark tracing utility
- */
-
-#include "osApi.h"
-#include "tracebuf.h"
-#include "tracebuf_api.h"
-#include "report.h"
-
-typedef struct {
- unsigned long loc;/* trace entry identification */
- unsigned long ts;/* Timestamp */
- unsigned long p1; /* Parameter 1 */
- unsigned long p2; /* Parameter 2 */
- char msg[MAX_TB_MSG];
-} tb_entry_t;
-
-typedef struct {
- int pos;
- int count;
- int print_pos;
- int nusers;
- unsigned long self_delay;
- unsigned long options;
- tb_entry_t entry[1]; /* Array of entries */
-} tb_control_t;
-
-static tb_control_t *tb_control;
-
-static int tb_control_size(void)
-{
- return TI_FIELD_OFFSET(tb_control_t, entry) + sizeof(tb_entry_t)*TB_NUM_ENTRIES;
-}
-
-
-/* Initialization */
-int tb_init(unsigned long options)
-{
- if (tb_control)
- {
- ++tb_control->nusers;
- return 0;
- }
- tb_control = (tb_control_t *)TB_MALLOC(tb_control_size());
- if (!tb_control)
- return -1;
- memset(tb_control, 0, tb_control_size());
- tb_control->nusers = 1;
-
- /* Measure self-delay */
- tb_trace(0, 0, 0);
- tb_trace(0, 0, 0);
- tb_control->self_delay = tb_control->entry[1].ts - tb_control->entry[0].ts;
- tb_control->pos = tb_control->count = 0;
- tb_control->options = options;
- return 0;
-}
-
-/* De-initialization */
-void tb_destroy(void)
-{
- if (--tb_control->nusers)
- return;
- TB_FREE(tb_control );
-}
-
-static int tb_next(void)
-{
- int pos;
- if (!tb_control || tb_control->print_pos)
- return -1;
- pos = tb_control->pos;
- tb_control->pos = (pos+1) % TB_NUM_ENTRIES;
- ++tb_control->count;
-
- tb_control->entry[tb_control->pos].ts =
- tb_control->entry[tb_control->pos].loc=
- tb_control->entry[tb_control->pos].p1 =
- tb_control->entry[tb_control->pos].p2 = 0xffffffff;
-
- return pos;
-}
-static void tb_autoprint(void)
-{
- if ((tb_control->pos == 0) && (tb_control->count))
- {
- if (tb_control->options & TB_OPTION_PRINTONCE)
- {
- tb_printf();
- tb_reset_option(TB_OPTION_PRINTONCE);
- }
- else if (tb_control->options & TB_OPTION_AUTOPRINT)
- {
- tb_printf();
- }
- }
-}
-
-/* Add trace entry. not safe, but will do */
-int tb_trace(int loc, unsigned long p1, unsigned long p2)
-{
- int pos;
-
- if ((tb_control->options & TB_OPTION_STOP) || ((pos = tb_next()) < 0))
- {
- return -1;
- }
- tb_control->entry[pos].ts = os_timeStampUs(NULL);
- tb_control->entry[pos].loc= loc;
- tb_control->entry[pos].p1 = p1;
- tb_control->entry[pos].p2 = p2;
-
- return pos;
-}
-void tb_dump(void)
-{
- int j, pos;
-
- WLAN_OS_REPORT(("Trace Dump:\n"));
- WLAN_OS_REPORT(("===========\n\n"));
- if (tb_control->count < TB_NUM_ENTRIES)
- {
- pos = 0;
- }
- else
- {
- pos = (tb_control->pos + 1) % TB_NUM_ENTRIES;
- }
- for (j=0; (unsigned int)j < tb_min((unsigned int)TB_NUM_ENTRIES,(unsigned int)tb_control->count); j++)
- {
- WLAN_OS_REPORT(("%4i %08x %08x %08x %08x\n", j,
- (int)tb_control->entry[pos].ts,
- (int)tb_control->entry[pos].loc,
- (int)tb_control->entry[pos].p1,
- (int)tb_control->entry[pos].p2));
- pos = (pos+1) % TB_NUM_ENTRIES;
- }
-
-}
-
-int tb_sprintf(const char *format ,...)
-{
-
- va_list ap;
- int pos;
-
- if ((tb_control->options & TB_OPTION_STOP) || ((pos = tb_next()) < 0))
- {
- return -1;
- }
- tb_control->entry[pos].loc = TB_ID;
- va_start(ap,format);
- vsprintf(&tb_control->entry[pos].msg[0], format, ap);
- tb_autoprint();
- return pos;
-}
-
-void tb_printf(void)
-{
- int j, pos;
- unsigned long saved_options=tb_control->options;
-
- tb_set_option(TB_OPTION_STOP);
- WLAN_OS_REPORT(("Trace Dump:\n"));
- WLAN_OS_REPORT(("===========\n\n"));
- if (tb_control->count < TB_NUM_ENTRIES)
- {
- pos = 0;
- }
- else
- {
- pos = (tb_control->pos + 1) % TB_NUM_ENTRIES;
- }
- for (j=0; (unsigned int)j < tb_min((unsigned int)TB_NUM_ENTRIES,(unsigned int)tb_control->count); j++)
- {
- WLAN_OS_REPORT(("%4i id=0x%8x %s \n", j,
-tb_control->entry[pos].loc, tb_control->entry[pos].msg));
- pos = (pos+1) % TB_NUM_ENTRIES;
- }
- tb_control->options = saved_options;
-}
-void tb_set_option(unsigned long option)
-{
- tb_control->options |= option;
-}
-
-void tb_reset_option(unsigned long option)
-{
- tb_control->options &= ~option;
-}
-
-void tb_scan(void)
-{
-
- int j,k, Size, nAllocs=0, nFrees=0;
- unsigned long address, Allocs=0, Frees=0;
-
- for (j=0; j < TB_NUM_ENTRIES; j++)
- {
- Size = (int)tb_control->entry[j].p2;
- if (Size > 0) /* Alloc */
- {
- nAllocs += 1;
- Allocs += Size;
- address = tb_control->entry[j].p1;
- for (k=j+1; k < TB_NUM_ENTRIES; k++)
- {
- if (address == tb_control->entry[k].p1)
- {
- if (tb_control->entry[k].p2 != -Size)
- {
- TB_PRINTF("Bad free size at 0x%lx address = 0x%lx Size = %ld Allocated = %d\n",
- tb_control->entry[k].loc, tb_control->entry[k].p1, (long)tb_control->entry[k].p2, Size);
- }
- Frees += tb_control->entry[k].p2;
- nFrees += 1;
- break;
- }
- }
- if (k == TB_NUM_ENTRIES)
- {
- TB_PRINTF("Memory leak at 0x%lx address = 0x%lx Size = %d\n",
- tb_control->entry[j].loc, address, Size);
- }
- }
- }
- TB_PRINTF("tb_scan() Allocs = %ld nAllocs = %d Frees = %ld nFrees = %d\n", Allocs, nAllocs, Frees, nFrees);
-}
-