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

📄 defs.h

📁 我实现的一个基于零拷贝技术高速捕包的原型代码
💻 H
字号:
#ifndef DEFS_H
#define DEFS_H
#include <linux/types.h>
#include <linux/spinlock.h>
//定义块大小
#define  BLK_SIZE	2*1024
#define  BLK_SIZE_SHIFT		11
//接收和发送环大小
#define  BUFF_SIZE	100*1024*1024
#define  BUFF_BLK_NUM	(BUFF_SIZE>>BLK_SIZE_SHIFT)
#define  RX_BUFF_BLK_NUM  (90*1024*1024)>>BLK_SIZE_SHIFT
#define  TX_BUFF_BLK_NUM  (10*1024*1024)>>BLK_SIZE_SHIFT
//#define  TX_BUFF_SIZE	10*1024*1024
//#define  TX_BUFF_BLKS	(TX_BUFF_SIZE>>BLK_SIZE_SHIFT)

struct addr_info_t{
	char *start_addr;
	uint rx_size;
	uint tx_size;
};

typedef struct{
	spinlock_t lock;
	volatile uint head;
	volatile uint tail;
//队列中真实容量
	volatile uint size;	
	uint elem[BUFF_BLK_NUM];
}queue_t;

typedef struct{
	queue_t 	rx_q;
	queue_t	tx_q;
	queue_t	free_q;
	ulong 	phy_addr_table[BUFF_BLK_NUM>>1];
	
}kernel_addr_space_t; /*allocated addr space in kernel mode by vmalloc()*/

#define PAGE_SHIFT	12
#define PAGE_SIZE	(1UL << PAGE_SHIFT)
#define PAGE_MASK	(~(PAGE_SIZE-1))
#define PAGE_ALIGN(addr)	(((addr)+PAGE_SIZE-1)&PAGE_MASK)

int enqueue(queue_t *,uint);
int dequeue(queue_t *);

#define KA_IOC_MAGIC  'k'#define KA_IOCINITBUF _IO(KA_IOC_MAGIC, sizeof(unsigned long))

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -