⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memp.i

📁 凌阳单片机之以太网通讯模组模组
💻 I
📖 第 1 页 / 共 3 页
字号:












 
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 + -