关于packet_type结构体

 

 

/usr/src/linux-2.6.19/include/linux/netdevice.h

struct packet_type {
    __be16              type;
    struct net_device   *dev;
                        func();
                        gso_segment();
                        gso_send_check();
    void                *af_packet_priv;
    struct list_head    list;
};


    每种协议都要定义一个packet_type结构,引导进入相关的协议数据处理函数,所有节点(packet_type结构)组成一个链表(HASH链表)。
    一般各协议的packet_type结构都是静态存在,初始化时只提供type和func两个参数就可以了,每个协议在初始化时都要将此结构加入到系统类型链表中。

type           以太帧类型,16位
dev            所附着的网卡设备,如果为NULL则匹配全部网卡
func           协议入口接收处理函数
af_packet_priv 协议私有数据
list           链表扣

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
libusb_transfer结构体是libusb库一个重要的结构体,用于描述USB传输过程的数据信息。其定义如下: ``` struct libusb_transfer { libusb_device_handle *dev_handle; // 指向设备句柄的指针 uint8_t endpoint; // 端点地址 unsigned char type; // 传输类型 unsigned int timeout; // 超时时间 unsigned char *buffer; // 数据缓冲区指针 int length; // 数据长度 int actual_length; // 实际传输数据长度 unsigned int num_iso_packets; // 等分包数量 struct libusb_iso_packet_descriptor iso_packet_desc[0]; // 等分包描述符数组 void *user_data; // 用户数据指针 uint8_t flags; // 标志位 int status; // 传输状态 int transferred; // 已传输数据长度 }; ``` 其,各字段的含义如下: - `dev_handle`:指向USB设备句柄的指针。 - `endpoint`:USB端点地址,用于指明数据传输的方向和类型。 - `type`:传输类型,包括控制传输、批量传输、断传输和等时传输。 - `timeout`:传输超时时间,单位为毫秒。 - `buffer`:数据缓冲区指针,用于存储传输的数据。 - `length`:数据长度,即待传输数据的字节数。 - `actual_length`:实际传输数据长度,即实际传输的字节数。 - `num_iso_packets`:等分包数量,只在等时传输有效。 - `iso_packet_desc`:等分包描述符数组,只在等时传输有效。 - `user_data`:用户数据指针,可以用于传递自定义数据。 - `flags`:标志位,包括LIBUSB_TRANSFER_SHORT_NOT_OK、LIBUSB_TRANSFER_FREE_BUFFER等。 - `status`:传输状态,包括LIBUSB_TRANSFER_COMPLETED、LIBUSB_TRANSFER_ERROR等。 - `transferred`:已传输数据长度,即已经传输的字节数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值