EDK Driver Library : xilnet

来源:互联网 发布:西南交大网络设置 编辑:程序博客网 时间:2024/04/30 13:37

xilnet库的头文件都在%EDK%/sw/lib/sw_services/xilnet_v2_00_a/src/include/文件夹下,我们在文件中经常看到的被引用的头文件写成 #include <net/xilsock.h> 这种样子,意思就是说包含进include中net文件夹下面的xilsock.h头文件,以此类推。

另外,分析一下在xilnet中最常用的一个位域:

struct xilsock_socket {
   int type;
   int domain;
   int proto;
   // status of socket
   unsigned char listen:1;
   unsigned char bound:1;
   unsigned char accept:1;
   unsigned char connect:1;
   unsigned char free:1;
   unsigned char closing:1;
   unsigned char closed:1;
   union {
      struct xilnet_tcp_conn *tcp_conn;
      struct xilnet_udp_conn *udp_conn;
   } conn;

还有一个数组:

#define NO_OF_XILSOCKS   (MAX_TCP_CONNS+MAX_UDP_CONNS)
extern struct xilsock_socket xilsock_sockets[NO_OF_XILSOCKS];

(这个数组声明为extern,因此在自己的程序中会经常被用到)

另外还有一个结构体是经常要用的:

struct xilsock_buf {
   unsigned char *buf;
   int size;
};

值得注意的是有一个函数在EDK OS and Libraries Reference Guide中没有提到,可是在xilsock.h中被声明了,而且也很常用:

extern int xilsock_listen(int, int);

其它常用函数还包括:

extern int xilsock_init(void);
extern void xilsock_rel_socket(int);
extern int xilsock_socket(int, int, int);
extern int xilsock_bind(int, struct sockaddr*, int);
extern int xilsock_accept(int, struct sockaddr*, int*);
extern int xilsock_recv(int, unsigned char*, unsigned int);
extern int xilsock_recvfrom(int, unsigned char*, unsigned int, struct sockaddr* from, unsigned int *fromlen);
extern int xilsock_sendto(int, unsigned char*, unsigned int, struct sockaddr* to, unsigned int tolen);
extern int xilsock_send(int, unsigned char*, unsigned int);
extern void xilsock_close(int);

// Ethernet functions
extern int xilnet_eth_recv_frame(unsigned char *, int);
extern int xilnet_eth_send_frame(unsigned char *, int, unsigned char*, void*, unsigned short);
extern void xilnet_eth_update_hw_tbl(unsigned char *, int);
extern void xilnet_add_hw_tbl_entry(unsigned char *, unsigned char *);
extern int xilnet_eth_get_hw_addr(unsigned char *);
extern void xilnet_eth_init_hw_addr_tbl(void);
extern int xilnet_eth_find_old_entry(void);

还用诸如ARP functions、TCP/UDP/ICMP functions等函数也都声明成了extern,可以直接调用。

几个extern类型的常用数组、变量:

/* buffers for sending and receiving packets */
extern unsigned char recvbuf[];
extern unsigned char sendbuf[];
extern unsigned char mb_ip_addr[IP_VERSION]; 
extern unsigned char mb_hw_addr[ETH_ADDR_LEN];
extern int xilsock_status_flag;

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑总是断网怎么办 造价师资格证书丢了怎么办 行测做题速度太慢怎么办 普通话准考证丢了怎么办 信用卡还款逾期了怎么办 淮北建洗煤厂需要怎么办 建设工程不结算怎么办 考监理没有职称怎么办 公开招标两次招标失败怎么办 山东省植保员证怎么办 工伤没开病假单怎么办 邮储银行怎么办金卡 农机被交警查怎么办 广联达识别板筋负筋重叠怎么办 掌上品的钱怎么办 财务纠纷被起诉怎么办 牙齿补后疼痛怎么办 牙齿表面蛀了怎么办 虫牙全掉了怎么办 牙齿蛀光了怎么办 虫牙全部掉完了怎么办 不喜欢向人请教怎么办 单位不交公积金怎么办 电锯链条掉了怎么办 天津公积金怎么办外地转入 学籍档案涂抹了怎么办 气相点火失败怎么办 小米闹钟声音小怎么办 河北省监理员证怎么办 买的商铺烂尾了怎么办 钢表带被磨花了怎么办 资料员到期了怎么办 八大员挂靠社保怎么办 安许证三类人员不足了怎么办 考试准考证号写错了怎么办 科目一失约两次怎么办 钢筋送检两次不合格怎么办 公路原材料抽检不合格怎么办 混凝土回弹强度不合格怎么办 毕业证照片太丑怎么办 政审时找不到档案怎么办