📄 memp.i
字号:
extern struct tcp_pcb_listen *tcp_listen_pcbs;
extern struct tcp_pcb *tcp_active_pcbs;
extern struct tcp_pcb *tcp_tw_pcbs;
extern struct tcp_pcb *tcp_tmp_pcb;
# 467 "..\\..\\..\\..\\TcpIPStack\\user\\include\\tcp.h"
# 484 "..\\..\\..\\..\\TcpIPStack\\user\\include\\tcp.h"
extern u16_t tcp_mss ;
extern u16_t tcp_window ;
extern u16_t tcp_maxrtx ;
extern u16_t tcp_synmaxrtx ;
# 57 "..\\code\\config.h" 2
# 1 "..\\..\\..\\..\\TcpIPStack\\user\\include\\memp.h" 1
# 1 "..\\..\\..\\..\\TcpIPStack\\user\\include\\opt.h" 1
# 559 "..\\..\\..\\..\\TcpIPStack\\user\\include\\opt.h"
# 36 "..\\..\\..\\..\\TcpIPStack\\user\\include\\memp.h" 2
typedef enum {
MEMP_PBUF,
MEMP_UDP_PCB,
MEMP_TCP_PCB,
MEMP_TCP_PCB_LISTEN,
MEMP_TCP_SEG,
MEMP_MAX
} memp_t;
struct memp {
struct memp *next;
};
void memp_init(void);
void *memp_malloc(memp_t type);
void *memp_realloc(memp_t fromtype, memp_t totype, void *mem);
void memp_free(memp_t type, void *mem);
void *memp_mallocp(memp_t type);
void memp_freep(memp_t type, void *mem);
# 85 "..\\..\\..\\..\\TcpIPStack\\user\\include\\memp.h"
extern u16_t memp_num[];
extern u8_t memp_memory [] ;
# 124 "..\\..\\..\\..\\TcpIPStack\\user\\include\\memp.h"
extern u16_t pbuf_num ;
extern u16_t udp_num ;
extern u16_t tcp_num ;
extern u16_t ltcp_num ;
extern u16_t tcp_seg_num ;
# 59 "..\\code\\config.h" 2
# 1 "..\\..\\..\\..\\TcpIPStack\\user\\include\\stats.h" 1
# 1 "..\\..\\..\\..\\TcpIPStack\\user\\include\\opt.h" 1
# 559 "..\\..\\..\\..\\TcpIPStack\\user\\include\\opt.h"
# 35 "..\\..\\..\\..\\TcpIPStack\\user\\include\\stats.h" 2
struct stats_proto {
u16_t xmit;
u16_t rexmit;
u16_t recv;
u16_t drop;
u16_t chkerr;
u16_t lenerr;
u16_t memerr;
u16_t rterr;
u16_t proterr;
u16_t opterr;
u16_t err;
};
struct stats_mem {
mem_size_t avail;
mem_size_t used;
mem_size_t max;
mem_size_t err;
};
struct stats_pbuf {
u16_t avail;
u16_t used;
u16_t max;
u16_t err;
u16_t alloc_locked;
u16_t refresh_locked;
};
struct stats_syselem {
u16_t used;
u16_t max;
u16_t err;
};
struct stats_sys {
struct stats_syselem sem;
struct stats_syselem mbox;
};
# 115 "..\\..\\..\\..\\TcpIPStack\\user\\include\\stats.h"
struct stats_ {
struct stats_proto link;
struct stats_proto ip;
struct stats_proto icmp;
struct stats_proto tcp;
struct stats_pbuf pbuf;
struct stats_mem mem;
struct stats_mem memp[MEMP_MAX];
};
extern struct stats_ lwip_stats ;
void stats_init(void);
# 60 "..\\code\\config.h" 2
# 1 "..\\..\\..\\..\\TcpIPStack\\user\\include\\dns.h" 1
struct nserver {
u16_t id;
u16_t opcodes;
u16_t qdcount;
u16_t ancount;
u16_t nscount;
u16_t arcount;
u16_t data[125];
};
struct nsreply {
u16_t name;
u16_t type;
u16_t aclass;
u16_t ttlhigh;
u16_t ttllow;
u16_t datalength;
u16_t data[32];
};
enum dns_state {
dns_STATE_EMPTY,
dns_STATE_PENDING,
dns_STATE_MXREQ,
dns_STATE_IPREQ,
dns_STATE_NOTFOUND,
dns_STATE_STABLE
};
int resolv (struct ip_addr* ina,char* ipstr);
int addOption(u16_t *optionptr, char *data, u16_t offset ,u8_t datalength);
int getrand(u16_t max);
int parseip (u16_t* strptr, char* ipstr);
int getData(u16_t type,struct nserver *nsrec,u16_t *data);
int recievePacket (struct nserver* nsrec,short id,int client_socket);
int sendAndRecieve (char type,char *nameserver,char *ipstr,struct nserver *nsrec);
int sendPacket(char type,char * question,short *id,int client_socket);
int revparseip (struct nserver *ns,u16_t *ipstr,char *outip);
void dns_init();
struct dns_entry *dns_entry_find(char * ipstr);
u32_t dns_entry_lookup(char * ipstr);
int DNSChangeState(struct dns_entry * , enum dns_state);
struct nsreply * ans_adjust(u16_t * strptr, u16_t *j);
int DNSSendReq(char type,char *nameserver,char *ipstr,struct pbuf *p ,struct udp_pcb *upcb) ;
# 63 "..\\code\\config.h" 2
# 1 "..\\..\\..\\..\\TcpIPStack\\user\\include\\etharp.h" 1
struct eth_addr {
u16_t addr[3];
} __attribute__((packed)) ;
struct eth_hdr {
struct eth_addr dest __attribute__((packed)) ;
struct eth_addr src __attribute__((packed)) ;
u16_t type __attribute__((packed)) ;
} __attribute__((packed)) ;
struct etharp_hdr {
struct eth_hdr ethhdr __attribute__((packed)) ;
u16_t hwtype __attribute__((packed)) ;
u16_t proto __attribute__((packed)) ;
u16_t _hwlen_protolen __attribute__((packed)) ;
u16_t opcode __attribute__((packed)) ;
struct eth_addr shwaddr __attribute__((packed)) ;
struct ip_addr sipaddr __attribute__((packed)) ;
struct eth_addr dhwaddr __attribute__((packed)) ;
struct ip_addr dipaddr __attribute__((packed)) ;
} __attribute__((packed)) ;
struct ethip_hdr {
struct eth_hdr eth __attribute__((packed)) ;
struct ip_hdr ip __attribute__((packed)) ;
};
enum etharp_state {
ETHARP_STATE_EMPTY,
ETHARP_STATE_PENDING,
ETHARP_STATE_STABLE
};
struct etharp_entry {
struct ip_addr ipaddr;
struct eth_addr ethaddr;
enum etharp_state state;
struct pbuf *p;
u8_t ctime;
};
void etharp_init(void);
void etharp_tmr(void);
struct pbuf *etharp_ip_input(struct netif *netif, struct pbuf *p);
struct pbuf *etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr,
struct pbuf *p);
struct pbuf *etharp_output(struct netif *netif, struct ip_addr *ipaddr,
struct pbuf *q);
err_t etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q);
struct eth_addr * etharp_lookup(struct ip_addr *ipaddr);
extern struct etharp_entry arp_table [] ;
extern u16_t arp_num ;
# 65 "..\\code\\config.h" 2
# 1 "..\\..\\..\\code\\arch\\unsp\\include\\ethernet.h" 1
err_t ethernetif_init(struct netif *netif);
void etharp_timer(void *arg);
# 72 "..\\code\\config.h" 2
# 1 "..\\..\\..\\..\\TcpIPStack\\user\\include\\lib.h" 1
u16_t htons(u16_t n);
u16_t ntohs(u16_t n);
u32_t htonl(u32_t n);
u32_t ntohl(u32_t n);
u16_t getbyte(u16_t *data, u16_t offset);
void putbyte(u16_t *data, u8_t ch, u16_t offset);
u16_t packstrncat(u16_t *data, char *str, u16_t offset);
u16_t tcp_tmr_timeout(void);
u16_t dhcp_coarse_timeout(void);
u16_t dhcp_fine_timeout(void);
u16_t gettimeofnow(void);
void PackPrint(u16_t *pstr);
u16_t packstrlen(char *str);
void PackPrintLen(u16_t *pstr,u16_t len);
int StrToInt(char *s);
void SystemServiceLoop();
# 73 "..\\code\\config.h" 2
# 38 "..\\..\\..\\..\\TcpIPStack\\user\\include\\opt.h" 2
# 429 "..\\..\\..\\..\\TcpIPStack\\user\\include\\opt.h"
# 33 "E:/GJ155/code/core/memp.c" 2
static struct memp *memp_tab[MEMP_MAX];
static const u16_t memp_sizes[MEMP_MAX] = {
sizeof(struct pbuf),
sizeof(struct udp_pcb),
sizeof(struct tcp_pcb),
sizeof(struct tcp_pcb_listen),
sizeof(struct tcp_seg),
};
# 120 "E:/GJ155/code/core/memp.c"
static sys_sem_t mutex;
# 147 "E:/GJ155/code/core/memp.c"
void
memp_init(void)
{
struct memp *m, *memp;
u16_t i, j;
u16_t size;
for(i = 0; i < MEMP_MAX; ++i) {
lwip_stats.memp[i].used = lwip_stats.memp[i].max =
lwip_stats.memp[i].err = 0;
lwip_stats.memp[i].avail = memp_num[i];
}
memp = (struct memp *)&memp_memory[0];
for(i = 0; i < MEMP_MAX; ++i) {
size = ( memp_sizes[i] + sizeof(struct memp) ) ;
if (memp_num[i] > 0) {
memp_tab[i] = memp;
m = memp;
for(j = 0; j < memp_num[i]; ++j) {
m->next = (struct memp *)(void *)( (u16_t) (u8_t *)m + size ) ;
memp = m;
m = m->next;
}
memp->next = ((void *)0) ;
memp = m;
} else {
memp_tab[i] = ((void *)0) ;
}
}
mutex = 1 ;
}
void *
memp_malloc(memp_t type)
{
struct memp *memp;
void *mem;
;
memp = memp_tab[type];
if (memp != ((void *)0) ) {
memp_tab[type] = memp->next;
memp->next = ((void *)0) ;
++lwip_stats.memp[type].used;
if (lwip_stats.memp[type].used > lwip_stats.memp[type].max) {
lwip_stats.memp[type].max = lwip_stats.memp[type].used;
}
;
mem = (void *)( (u16_t) (u8_t *)memp + sizeof(struct memp) ) ;
memset(mem, 0, memp_sizes[type]);
return mem;
} else {
;
++lwip_stats.memp[type].err;
return ((void *)0) ;
}
}
void *
memp_mallocp(memp_t type)
{
void *mem;
;
mem = memp_malloc(type);
;
return mem;
}
void
memp_free(memp_t type, void *mem)
{
struct memp *memp;
if (mem == ((void *)0) ) {
return;
}
memp = (struct memp *)((u8_t *)mem - sizeof(struct memp));
lwip_stats.memp[type].used--;
memp->next = memp_tab[type];
memp_tab[type] = memp;
;
return;
}
void
memp_freep(memp_t type, void *mem)
{
;
memp_free(type, mem);
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -