My fork of the HTTPServer (working)

Dependents:   DGWWebServer LAN2

Committer:
screamer
Date:
Tue Nov 20 12:18:53 2012 +0000
Revision:
1:284f2df30cf9
Parent:
0:7a64fbb4069d
local changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:7a64fbb4069d 1 /**
screamer 0:7a64fbb4069d 2 * @file
screamer 0:7a64fbb4069d 3 * Statistics module
screamer 0:7a64fbb4069d 4 *
screamer 0:7a64fbb4069d 5 */
screamer 0:7a64fbb4069d 6
screamer 0:7a64fbb4069d 7 /*
screamer 0:7a64fbb4069d 8 * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
screamer 0:7a64fbb4069d 9 * All rights reserved.
screamer 0:7a64fbb4069d 10 *
screamer 0:7a64fbb4069d 11 * Redistribution and use in source and binary forms, with or without modification,
screamer 0:7a64fbb4069d 12 * are permitted provided that the following conditions are met:
screamer 0:7a64fbb4069d 13 *
screamer 0:7a64fbb4069d 14 * 1. Redistributions of source code must retain the above copyright notice,
screamer 0:7a64fbb4069d 15 * this list of conditions and the following disclaimer.
screamer 0:7a64fbb4069d 16 * 2. Redistributions in binary form must reproduce the above copyright notice,
screamer 0:7a64fbb4069d 17 * this list of conditions and the following disclaimer in the documentation
screamer 0:7a64fbb4069d 18 * and/or other materials provided with the distribution.
screamer 0:7a64fbb4069d 19 * 3. The name of the author may not be used to endorse or promote products
screamer 0:7a64fbb4069d 20 * derived from this software without specific prior written permission.
screamer 0:7a64fbb4069d 21 *
screamer 0:7a64fbb4069d 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
screamer 0:7a64fbb4069d 23 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
screamer 0:7a64fbb4069d 24 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
screamer 0:7a64fbb4069d 25 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
screamer 0:7a64fbb4069d 26 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
screamer 0:7a64fbb4069d 27 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
screamer 0:7a64fbb4069d 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
screamer 0:7a64fbb4069d 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
screamer 0:7a64fbb4069d 30 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
screamer 0:7a64fbb4069d 31 * OF SUCH DAMAGE.
screamer 0:7a64fbb4069d 32 *
screamer 0:7a64fbb4069d 33 * This file is part of the lwIP TCP/IP stack.
screamer 0:7a64fbb4069d 34 *
screamer 0:7a64fbb4069d 35 * Author: Adam Dunkels <adam@sics.se>
screamer 0:7a64fbb4069d 36 *
screamer 0:7a64fbb4069d 37 */
screamer 0:7a64fbb4069d 38
screamer 0:7a64fbb4069d 39 #include "lwip/opt.h"
screamer 0:7a64fbb4069d 40
screamer 0:7a64fbb4069d 41 #if LWIP_STATS /* don't build if not configured for use in lwipopts.h */
screamer 0:7a64fbb4069d 42
screamer 0:7a64fbb4069d 43 #include "lwip/def.h"
screamer 0:7a64fbb4069d 44 #include "lwip/stats.h"
screamer 0:7a64fbb4069d 45 #include "lwip/mem.h"
screamer 0:7a64fbb4069d 46
screamer 0:7a64fbb4069d 47 #include <string.h>
screamer 0:7a64fbb4069d 48
screamer 0:7a64fbb4069d 49 struct stats_ lwip_stats;
screamer 0:7a64fbb4069d 50
screamer 0:7a64fbb4069d 51 #if LWIP_STATS_DISPLAY
screamer 0:7a64fbb4069d 52 void
screamer 0:7a64fbb4069d 53 stats_display_proto(struct stats_proto *proto, char *name)
screamer 0:7a64fbb4069d 54 {
screamer 0:7a64fbb4069d 55 LWIP_PLATFORM_DIAG(("\n%s\n\t", name));
screamer 0:7a64fbb4069d 56 LWIP_PLATFORM_DIAG(("xmit: %"STAT_COUNTER_F"\n\t", proto->xmit));
screamer 0:7a64fbb4069d 57 LWIP_PLATFORM_DIAG(("recv: %"STAT_COUNTER_F"\n\t", proto->recv));
screamer 0:7a64fbb4069d 58 LWIP_PLATFORM_DIAG(("fw: %"STAT_COUNTER_F"\n\t", proto->fw));
screamer 0:7a64fbb4069d 59 LWIP_PLATFORM_DIAG(("drop: %"STAT_COUNTER_F"\n\t", proto->drop));
screamer 0:7a64fbb4069d 60 LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", proto->chkerr));
screamer 0:7a64fbb4069d 61 LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", proto->lenerr));
screamer 0:7a64fbb4069d 62 LWIP_PLATFORM_DIAG(("memerr: %"STAT_COUNTER_F"\n\t", proto->memerr));
screamer 0:7a64fbb4069d 63 LWIP_PLATFORM_DIAG(("rterr: %"STAT_COUNTER_F"\n\t", proto->rterr));
screamer 0:7a64fbb4069d 64 LWIP_PLATFORM_DIAG(("proterr: %"STAT_COUNTER_F"\n\t", proto->proterr));
screamer 0:7a64fbb4069d 65 LWIP_PLATFORM_DIAG(("opterr: %"STAT_COUNTER_F"\n\t", proto->opterr));
screamer 0:7a64fbb4069d 66 LWIP_PLATFORM_DIAG(("err: %"STAT_COUNTER_F"\n\t", proto->err));
screamer 0:7a64fbb4069d 67 LWIP_PLATFORM_DIAG(("cachehit: %"STAT_COUNTER_F"\n", proto->cachehit));
screamer 0:7a64fbb4069d 68 }
screamer 0:7a64fbb4069d 69
screamer 0:7a64fbb4069d 70 #if IGMP_STATS
screamer 0:7a64fbb4069d 71 void
screamer 0:7a64fbb4069d 72 stats_display_igmp(struct stats_igmp *igmp)
screamer 0:7a64fbb4069d 73 {
screamer 0:7a64fbb4069d 74 LWIP_PLATFORM_DIAG(("\nIGMP\n\t"));
screamer 0:7a64fbb4069d 75 LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", igmp->lenerr));
screamer 0:7a64fbb4069d 76 LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", igmp->chkerr));
screamer 0:7a64fbb4069d 77 LWIP_PLATFORM_DIAG(("v1_rxed: %"STAT_COUNTER_F"\n\t", igmp->v1_rxed));
screamer 0:7a64fbb4069d 78 LWIP_PLATFORM_DIAG(("join_sent: %"STAT_COUNTER_F"\n\t", igmp->join_sent));
screamer 0:7a64fbb4069d 79 LWIP_PLATFORM_DIAG(("leave_sent: %"STAT_COUNTER_F"\n\t", igmp->leave_sent));
screamer 0:7a64fbb4069d 80 LWIP_PLATFORM_DIAG(("unicast_query: %"STAT_COUNTER_F"\n\t", igmp->unicast_query));
screamer 0:7a64fbb4069d 81 LWIP_PLATFORM_DIAG(("report_sent: %"STAT_COUNTER_F"\n\t", igmp->report_sent));
screamer 0:7a64fbb4069d 82 LWIP_PLATFORM_DIAG(("report_rxed: %"STAT_COUNTER_F"\n\t", igmp->report_rxed));
screamer 0:7a64fbb4069d 83 LWIP_PLATFORM_DIAG(("group_query_rxed: %"STAT_COUNTER_F"\n", igmp->group_query_rxed));
screamer 0:7a64fbb4069d 84 }
screamer 0:7a64fbb4069d 85 #endif /* IGMP_STATS */
screamer 0:7a64fbb4069d 86
screamer 0:7a64fbb4069d 87 #if MEM_STATS || MEMP_STATS
screamer 0:7a64fbb4069d 88 void
screamer 0:7a64fbb4069d 89 stats_display_mem(struct stats_mem *mem, char *name)
screamer 0:7a64fbb4069d 90 {
screamer 0:7a64fbb4069d 91 LWIP_PLATFORM_DIAG(("\nMEM %s\n\t", name));
screamer 0:7a64fbb4069d 92 LWIP_PLATFORM_DIAG(("avail: %"U32_F"\n\t", (u32_t)mem->avail));
screamer 0:7a64fbb4069d 93 LWIP_PLATFORM_DIAG(("used: %"U32_F"\n\t", (u32_t)mem->used));
screamer 0:7a64fbb4069d 94 LWIP_PLATFORM_DIAG(("max: %"U32_F"\n\t", (u32_t)mem->max));
screamer 0:7a64fbb4069d 95 LWIP_PLATFORM_DIAG(("err: %"U32_F"\n", (u32_t)mem->err));
screamer 0:7a64fbb4069d 96 }
screamer 0:7a64fbb4069d 97
screamer 0:7a64fbb4069d 98 #if MEMP_STATS
screamer 0:7a64fbb4069d 99 void
screamer 0:7a64fbb4069d 100 stats_display_memp(struct stats_mem *mem, int index)
screamer 0:7a64fbb4069d 101 {
screamer 0:7a64fbb4069d 102 char * memp_names[] = {
screamer 0:7a64fbb4069d 103 #define LWIP_MEMPOOL(name,num,size,desc) desc,
screamer 0:7a64fbb4069d 104 #include "lwip/memp_std.h"
screamer 0:7a64fbb4069d 105 };
screamer 0:7a64fbb4069d 106 if(index < MEMP_MAX) {
screamer 0:7a64fbb4069d 107 stats_display_mem(mem, memp_names[index]);
screamer 0:7a64fbb4069d 108 }
screamer 0:7a64fbb4069d 109 }
screamer 0:7a64fbb4069d 110 #endif /* MEMP_STATS */
screamer 0:7a64fbb4069d 111 #endif /* MEM_STATS || MEMP_STATS */
screamer 0:7a64fbb4069d 112
screamer 0:7a64fbb4069d 113 #if SYS_STATS
screamer 0:7a64fbb4069d 114 void
screamer 0:7a64fbb4069d 115 stats_display_sys(struct stats_sys *sys)
screamer 0:7a64fbb4069d 116 {
screamer 0:7a64fbb4069d 117 LWIP_PLATFORM_DIAG(("\nSYS\n\t"));
screamer 0:7a64fbb4069d 118 LWIP_PLATFORM_DIAG(("sem.used: %"U32_F"\n\t", (u32_t)sys->sem.used));
screamer 0:7a64fbb4069d 119 LWIP_PLATFORM_DIAG(("sem.max: %"U32_F"\n\t", (u32_t)sys->sem.max));
screamer 0:7a64fbb4069d 120 LWIP_PLATFORM_DIAG(("sem.err: %"U32_F"\n\t", (u32_t)sys->sem.err));
screamer 0:7a64fbb4069d 121 LWIP_PLATFORM_DIAG(("mbox.used: %"U32_F"\n\t", (u32_t)sys->mbox.used));
screamer 0:7a64fbb4069d 122 LWIP_PLATFORM_DIAG(("mbox.max: %"U32_F"\n\t", (u32_t)sys->mbox.max));
screamer 0:7a64fbb4069d 123 LWIP_PLATFORM_DIAG(("mbox.err: %"U32_F"\n\t", (u32_t)sys->mbox.err));
screamer 0:7a64fbb4069d 124 }
screamer 0:7a64fbb4069d 125 #endif /* SYS_STATS */
screamer 0:7a64fbb4069d 126
screamer 0:7a64fbb4069d 127 void
screamer 0:7a64fbb4069d 128 stats_display(void)
screamer 0:7a64fbb4069d 129 {
screamer 0:7a64fbb4069d 130 s16_t i;
screamer 0:7a64fbb4069d 131
screamer 0:7a64fbb4069d 132 LINK_STATS_DISPLAY();
screamer 0:7a64fbb4069d 133 ETHARP_STATS_DISPLAY();
screamer 0:7a64fbb4069d 134 IPFRAG_STATS_DISPLAY();
screamer 0:7a64fbb4069d 135 IP_STATS_DISPLAY();
screamer 0:7a64fbb4069d 136 IGMP_STATS_DISPLAY();
screamer 0:7a64fbb4069d 137 ICMP_STATS_DISPLAY();
screamer 0:7a64fbb4069d 138 UDP_STATS_DISPLAY();
screamer 0:7a64fbb4069d 139 TCP_STATS_DISPLAY();
screamer 0:7a64fbb4069d 140 MEM_STATS_DISPLAY();
screamer 0:7a64fbb4069d 141 for (i = 0; i < MEMP_MAX; i++) {
screamer 0:7a64fbb4069d 142 MEMP_STATS_DISPLAY(i);
screamer 0:7a64fbb4069d 143 }
screamer 0:7a64fbb4069d 144 SYS_STATS_DISPLAY();
screamer 0:7a64fbb4069d 145 }
screamer 0:7a64fbb4069d 146 #endif /* LWIP_STATS_DISPLAY */
screamer 0:7a64fbb4069d 147
screamer 0:7a64fbb4069d 148 #endif /* LWIP_STATS */
screamer 0:7a64fbb4069d 149