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

📄 ipcommon.c

📁 《嵌入式系统设计与实例开发实验教材二源码》Linux内核移植与编译实验
💻 C
字号:
/* net/atm/ipcommon.c - Common items for all ways of doing IP over ATM *//* Written 1996-2000 by Werner Almesberger, EPFL LRC/ICA */#include <linux/module.h>#include <linux/string.h>#include <linux/skbuff.h>#include <linux/netdevice.h>#include <linux/in.h>#include <linux/atmdev.h>#include <linux/atmclip.h>#include "common.h"#include "ipcommon.h"#if 0#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args)#else#define DPRINTK(format,args...)#endifconst unsigned char llc_oui[] = {	0xaa,	/* DSAP: non-ISO */	0xaa,	/* SSAP: non-ISO */	0x03,	/* Ctrl: Unnumbered Information Command PDU */	0x00,	/* OUI: EtherType */	0x00,	0x00 };/* * skb_migrate appends the list at "from" to "to", emptying "from" in the * process. skb_migrate is atomic with respect to all other skb operations on * "from" and "to". Note that it locks both lists at the same time, so beware * of potential deadlocks. * * This function should live in skbuff.c or skbuff.h. */void skb_migrate(struct sk_buff_head *from,struct sk_buff_head *to){	struct sk_buff *skb;	unsigned long flags;	struct sk_buff *skb_from = (struct sk_buff *) from;	struct sk_buff *skb_to = (struct sk_buff *) to;	struct sk_buff *prev;	spin_lock_irqsave(&from->lock,flags);	spin_lock(&to->lock);	prev = from->prev;	from->next->prev = to->prev;	prev->next = skb_to;	to->prev->next = from->next;	to->prev = from->prev;	for (skb = from->next; skb != skb_to; skb = skb->next)		skb->list = to;	to->qlen += from->qlen;	spin_unlock(&to->lock);	from->prev = skb_from;	from->next = skb_from;	from->qlen = 0;	spin_unlock_irqrestore(&from->lock,flags);}EXPORT_SYMBOL(skb_migrate);

⌨️ 快捷键说明

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