亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? signaling.c

?? linux和2410結合開發 用他可以生成2410所需的zImage文件
?? C
字號:
/* net/atm/signaling.c - ATM signaling *//* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */#include <linux/errno.h>	/* error codes */#include <linux/kernel.h>	/* printk */#include <linux/skbuff.h>#include <linux/wait.h>#include <linux/sched.h>	/* jiffies and HZ */#include <linux/atm.h>		/* ATM stuff */#include <linux/atmsap.h>#include <linux/atmsvc.h>#include <linux/atmdev.h>#include <linux/bitops.h>#include "resources.h"#include "signaling.h"#undef WAIT_FOR_DEMON		/* #define this if system calls on SVC sockets				   should block until the demon runs.				   Danger: may cause nasty hangs if the demon				   crashes. */#if 0#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args)#else#define DPRINTK(format,args...)#endifstruct atm_vcc *sigd = NULL;static DECLARE_WAIT_QUEUE_HEAD(sigd_sleep);extern spinlock_t atm_dev_lock;static void sigd_put_skb(struct sk_buff *skb){#ifdef WAIT_FOR_DEMON	static unsigned long silence = 0;	DECLARE_WAITQUEUE(wait,current);	add_wait_queue(&sigd_sleep,&wait);	while (!sigd) {		set_current_state(TASK_UNINTERRUPTIBLE);		if (time_after(jiffies, silence) || silence == 0) {			printk(KERN_INFO "atmsvc: waiting for signaling demon "			    "...\n");			silence = (jiffies+30*HZ)|1;		}		schedule();	}	current->state = TASK_RUNNING;	remove_wait_queue(&sigd_sleep,&wait);#else	if (!sigd) {		printk(KERN_WARNING "atmsvc: no signaling demon\n");		kfree_skb(skb);		return;	}#endif	atm_force_charge(sigd,skb->truesize);	skb_queue_tail(&sigd->recvq,skb);	wake_up(&sigd->sleep);}static void modify_qos(struct atm_vcc *vcc,struct atmsvc_msg *msg){	struct sk_buff *skb;	if (test_bit(ATM_VF_RELEASED,&vcc->flags) ||	    !test_bit(ATM_VF_READY,&vcc->flags))		return;	msg->type = as_error;	if (!vcc->dev->ops->change_qos) msg->reply = -EOPNOTSUPP;	else {		/* should lock VCC */		msg->reply = vcc->dev->ops->change_qos(vcc,&msg->qos,		    msg->reply);		if (!msg->reply) msg->type = as_okay;	}	/*	 * Should probably just turn around the old skb. But the, the buffer	 * space accounting needs to follow the change too. Maybe later.	 */	while (!(skb = alloc_skb(sizeof(struct atmsvc_msg),GFP_KERNEL)))		schedule();	*(struct atmsvc_msg *) skb_put(skb,sizeof(struct atmsvc_msg)) = *msg;	sigd_put_skb(skb);}static int sigd_send(struct atm_vcc *vcc,struct sk_buff *skb){	struct atmsvc_msg *msg;	struct atm_vcc *session_vcc;	msg = (struct atmsvc_msg *) skb->data;	atomic_sub(skb->truesize+ATM_PDU_OVHD,&vcc->tx_inuse);	DPRINTK("sigd_send %d (0x%lx)\n",(int) msg->type,	  (unsigned long) msg->vcc);	vcc = *(struct atm_vcc **) &msg->vcc;	switch (msg->type) {		case as_okay:			vcc->reply = msg->reply;			if (!*vcc->local.sas_addr.prv &&			    !*vcc->local.sas_addr.pub) {				vcc->local.sas_family = AF_ATMSVC;				memcpy(vcc->local.sas_addr.prv,				    msg->local.sas_addr.prv,ATM_ESA_LEN);				memcpy(vcc->local.sas_addr.pub,				    msg->local.sas_addr.pub,ATM_E164_LEN+1);			}			session_vcc = vcc->session ? vcc->session : vcc;			if (session_vcc->vpi || session_vcc->vci) break;			session_vcc->itf = msg->pvc.sap_addr.itf;			session_vcc->vpi = msg->pvc.sap_addr.vpi;			session_vcc->vci = msg->pvc.sap_addr.vci;			if (session_vcc->vpi || session_vcc->vci)				session_vcc->qos = msg->qos;			break;		case as_error:			clear_bit(ATM_VF_REGIS,&vcc->flags);			clear_bit(ATM_VF_READY,&vcc->flags);			vcc->reply = msg->reply;			break;		case as_indicate:			vcc = *(struct atm_vcc **) &msg->listen_vcc;			DPRINTK("as_indicate!!!\n");			if (!vcc->backlog_quota) {				sigd_enq(0,as_reject,vcc,NULL,NULL);				return 0;			}			vcc->backlog_quota--;			skb_queue_tail(&vcc->listenq,skb);			if (vcc->callback) {				DPRINTK("waking vcc->sleep 0x%p\n",				    &vcc->sleep);				vcc->callback(vcc);			}			return 0;		case as_close:			set_bit(ATM_VF_RELEASED,&vcc->flags);			clear_bit(ATM_VF_READY,&vcc->flags);			vcc->reply = msg->reply;			break;		case as_modify:			modify_qos(vcc,msg);			break;		default:			printk(KERN_ALERT "sigd_send: bad message type %d\n",			    (int) msg->type);			return -EINVAL;	}	if (vcc->callback) vcc->callback(vcc);	dev_kfree_skb(skb);	return 0;}void sigd_enq2(struct atm_vcc *vcc,enum atmsvc_msg_type type,    struct atm_vcc *listen_vcc,const struct sockaddr_atmpvc *pvc,    const struct sockaddr_atmsvc *svc,const struct atm_qos *qos,int reply){	struct sk_buff *skb;	struct atmsvc_msg *msg;	DPRINTK("sigd_enq %d (0x%p)\n",(int) type,vcc);	while (!(skb = alloc_skb(sizeof(struct atmsvc_msg),GFP_KERNEL)))		schedule();	msg = (struct atmsvc_msg *) skb_put(skb,sizeof(struct atmsvc_msg));	memset(msg,0,sizeof(*msg));	msg->type = type;	*(struct atm_vcc **) &msg->vcc = vcc;	*(struct atm_vcc **) &msg->listen_vcc = listen_vcc;	msg->reply = reply;	if (qos) msg->qos = *qos;	if (vcc) msg->sap = vcc->sap;	if (svc) msg->svc = *svc;	if (vcc) msg->local = vcc->local;	if (pvc) msg->pvc = *pvc;	sigd_put_skb(skb);	if (vcc) set_bit(ATM_VF_REGIS,&vcc->flags);}void sigd_enq(struct atm_vcc *vcc,enum atmsvc_msg_type type,    struct atm_vcc *listen_vcc,const struct sockaddr_atmpvc *pvc,    const struct sockaddr_atmsvc *svc){	sigd_enq2(vcc,type,listen_vcc,pvc,svc,vcc ? &vcc->qos : NULL,0);	/* other ISP applications may use "reply" */}static void purge_vccs(struct atm_vcc *vcc){	while (vcc) {		if (vcc->family == PF_ATMSVC &&		    !test_bit(ATM_VF_META,&vcc->flags)) {			set_bit(ATM_VF_RELEASED,&vcc->flags);			vcc->reply = -EUNATCH;			wake_up(&vcc->sleep);		}		vcc = vcc->next;	}}static void sigd_close(struct atm_vcc *vcc){	struct atm_dev *dev;	DPRINTK("sigd_close\n");	sigd = NULL;	if (skb_peek(&vcc->recvq))		printk(KERN_ERR "sigd_close: closing with requests pending\n");	skb_queue_purge(&vcc->recvq);	purge_vccs(nodev_vccs);	spin_lock (&atm_dev_lock);	for (dev = atm_devs; dev; dev = dev->next) purge_vccs(dev->vccs);	spin_unlock (&atm_dev_lock);}static struct atmdev_ops sigd_dev_ops = {	close:	sigd_close,	send:	sigd_send};static struct atm_dev sigd_dev = {	&sigd_dev_ops,	NULL,		/* no PHY */    	"sig",		/* type */	999,		/* dummy device number */	NULL,NULL,	/* pretend not to have any VCCs */	NULL,NULL,	/* no data */	{ 0 },		/* no flags */	NULL,		/* no local address */	{ 0 }		/* no ESI, no statistics */};int sigd_attach(struct atm_vcc *vcc){	if (sigd) return -EADDRINUSE;	DPRINTK("sigd_attach\n");	sigd = vcc;	bind_vcc(vcc,&sigd_dev);	set_bit(ATM_VF_META,&vcc->flags);	set_bit(ATM_VF_READY,&vcc->flags);	wake_up(&sigd_sleep);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合在线视频| 中文字幕一区二区5566日韩| 97超碰欧美中文字幕| 国产一区二区三区电影在线观看| 婷婷成人激情在线网| 亚洲一二三四久久| 亚洲蜜臀av乱码久久精品| 1024亚洲合集| 一区二区三区日韩欧美| 一区二区三区欧美视频| 亚洲国产aⅴ天堂久久| 亚洲精品一卡二卡| 亚洲国产色一区| 天天色图综合网| 看片的网站亚洲| 国产激情一区二区三区四区| 国产美女av一区二区三区| 国产suv精品一区二区6| 白白色亚洲国产精品| 色狠狠av一区二区三区| 欧美老年两性高潮| 久久先锋资源网| 国产精品福利在线播放| 亚洲一区二区av电影| 蜜桃视频在线观看一区| 国产乱子轮精品视频| 91蜜桃在线免费视频| 欧美军同video69gay| 久久久精品欧美丰满| 亚洲日穴在线视频| 美女视频黄 久久| 成人永久aaa| 欧美日韩国产高清一区| 亚洲精品一区二区三区在线观看| 国产视频亚洲色图| 一区二区欧美精品| 久久精品国产第一区二区三区| 国产成人免费9x9x人网站视频| 欧美亚洲综合久久| 国产午夜精品福利| 五月天婷婷综合| 不卡一区二区中文字幕| 欧美男人的天堂一二区| 久久久99精品久久| 亚洲国产成人porn| 99v久久综合狠狠综合久久| 欧美哺乳videos| 亚洲视频一二区| 国产在线观看一区二区| 欧美专区日韩专区| 国产精品欧美一区喷水| 久久精品99国产精品| 在线精品国精品国产尤物884a| 久久精品视频网| 免费成人在线影院| 欧美色图片你懂的| 最好看的中文字幕久久| 国产在线精品一区在线观看麻豆| 欧美在线免费播放| 亚洲色图.com| eeuss鲁片一区二区三区在线看| 精品盗摄一区二区三区| 天堂久久一区二区三区| 欧美系列在线观看| 亚洲人123区| 成人av网站在线| 中文字幕不卡的av| 国产iv一区二区三区| 26uuu另类欧美| 激情综合色丁香一区二区| 欧美福利视频导航| 天天操天天综合网| 欧美午夜精品一区二区三区| 亚洲欧美色综合| 91久久精品日日躁夜夜躁欧美| 亚洲天堂福利av| 91一区二区在线| 洋洋av久久久久久久一区| 91麻豆精品秘密| 亚洲女女做受ⅹxx高潮| 欧美综合天天夜夜久久| 亚洲va国产va欧美va观看| 欧美视频完全免费看| 亚洲mv在线观看| 91麻豆精品国产91久久久 | 国产乱一区二区| 精品国产一区二区亚洲人成毛片| 久久精品国产亚洲一区二区三区| 日韩一区二区免费在线电影| 另类调教123区| 欧美激情综合五月色丁香| 成人美女视频在线看| 最新欧美精品一区二区三区| 一本到一区二区三区| 午夜欧美2019年伦理| 69成人精品免费视频| 开心九九激情九九欧美日韩精美视频电影| 91精品国产综合久久精品麻豆 | 一区二区三区国产精华| 欧洲一区二区三区在线| 性做久久久久久免费观看欧美| 欧美一区二区三区精品| 国产乱码精品一区二区三区忘忧草 | 亚洲电影你懂得| 精品国产露脸精彩对白| 不卡的av电影在线观看| 亚洲午夜免费福利视频| 欧美xxxxx裸体时装秀| 99久久国产综合精品色伊| 视频在线观看国产精品| 久久精品视频免费观看| 欧美性猛交xxxx黑人交| 麻豆免费精品视频| 亚洲图片欧美激情| 精品毛片乱码1区2区3区| 成人app在线| 日本美女一区二区三区| 国产精品欧美一级免费| 欧美乱妇15p| 99精品视频在线免费观看| 日本午夜一本久久久综合| 国产精品麻豆欧美日韩ww| 69堂精品视频| 91在线视频官网| 国内不卡的二区三区中文字幕| 亚洲欧洲av在线| 久久综合色婷婷| 91精品国产91久久久久久一区二区 | 国产精品一区二区91| 亚洲综合自拍偷拍| 亚洲欧洲www| 国产亚洲午夜高清国产拍精品| 欧美日韩在线电影| 91网址在线看| 国产激情91久久精品导航| 免费观看在线色综合| 亚洲123区在线观看| 最好看的中文字幕久久| 久久久久久9999| 日韩无一区二区| 欧美久久久久久久久中文字幕| 91在线无精精品入口| 不卡欧美aaaaa| 成人国产免费视频| 国产成人免费9x9x人网站视频| 麻豆成人91精品二区三区| 香蕉加勒比综合久久| 亚洲一区二区三区四区在线免费观看| 国产精品久久国产精麻豆99网站| 久久嫩草精品久久久久| 欧美草草影院在线视频| 日韩欧美不卡一区| 日韩欧美色电影| 日韩欧美成人一区二区| 欧美一级精品在线| 精品国产伦一区二区三区观看方式 | av男人天堂一区| 成人丝袜高跟foot| 成人在线综合网| 成人福利视频在线| 色综合天天综合网国产成人综合天| 国产91精品欧美| 成人app在线观看| 91精品91久久久中77777| 一本久久综合亚洲鲁鲁五月天 | 国产欧美日韩在线| 久久久久久久久免费| 国产精品毛片高清在线完整版| 国产精品久久三| 亚洲欧美另类综合偷拍| 视频一区二区不卡| 久久99热国产| av爱爱亚洲一区| 欧美色综合影院| 久久综合色婷婷| 亚洲色图视频网| 日本aⅴ免费视频一区二区三区| 久久99国产精品麻豆| 成人在线视频一区二区| 欧美日韩激情在线| 欧美电影免费观看高清完整版在| 国产午夜亚洲精品午夜鲁丝片| 国产欧美一区二区在线观看| 一区二区三区中文字幕在线观看| 午夜精品久久久久久久| 国产成人一区二区精品非洲| 色欧美乱欧美15图片| 日韩三区在线观看| 国产精品免费人成网站| 婷婷综合五月天| 国产·精品毛片| 51精品国自产在线| 国产精品三级在线观看| 蜜臀91精品一区二区三区| 色综合天天在线| 精品国产一区二区亚洲人成毛片| 亚洲摸摸操操av| 国产麻豆精品theporn| 在线成人午夜影院| 国产精品久久久久久久岛一牛影视 |