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

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

?? idifunc.c

?? 優龍2410linux2.6.8內核源代碼
?? C
字號:
/* $Id: idifunc.c,v 1.14.4.2 2004/05/09 16:42:20 armin Exp $ * * Driver for Eicon DIVA Server ISDN cards. * User Mode IDI Interface  * * Copyright 2000-2003 by Armin Schindler (mac@melware.de) * Copyright 2000-2003 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. */#include "platform.h"#include "di_defs.h"#include "divasync.h"#include "um_xdi.h"#include "um_idi.h"#define DBG_MINIMUM  (DL_LOG + DL_FTL + DL_ERR)#define DBG_DEFAULT  (DBG_MINIMUM + DL_XLOG + DL_REG)extern char *DRIVERRELEASE_IDI;extern void DIVA_DIDD_Read(void *, int);extern int diva_user_mode_idi_create_adapter(const DESCRIPTOR *, int);extern void diva_user_mode_idi_remove_adapter(int);#define MAX_DESCRIPTORS  32static dword notify_handle;static DESCRIPTOR DAdapter;static DESCRIPTOR MAdapter;static void no_printf(unsigned char *x, ...){	/* dummy debug function */}#include "debuglib.c"/* * stop debug */static void stop_dbg(void){	DbgDeregister();	memset(&MAdapter, 0, sizeof(MAdapter));	dprintf = no_printf;}typedef struct _udiva_card {	struct list_head list;	int Id;	DESCRIPTOR d;} udiva_card;static LIST_HEAD(cards);static diva_os_spin_lock_t ll_lock;/* * find card in list */static udiva_card *find_card_in_list(DESCRIPTOR * d){	udiva_card *card;	struct list_head *tmp;	diva_os_spin_lock_magic_t old_irql;	diva_os_enter_spin_lock(&ll_lock, &old_irql, "find card");	list_for_each(tmp, &cards) {		card = list_entry(tmp, udiva_card, list);		if (card->d.request == d->request) {			diva_os_leave_spin_lock(&ll_lock, &old_irql,						"find card");			return (card);		}	}	diva_os_leave_spin_lock(&ll_lock, &old_irql, "find card");	return ((udiva_card *) NULL);}/* * new card */static void um_new_card(DESCRIPTOR * d){	int adapter_nr = 0;	udiva_card *card = NULL;	IDI_SYNC_REQ sync_req;	diva_os_spin_lock_magic_t old_irql;	if (!(card = diva_os_malloc(0, sizeof(udiva_card)))) {		DBG_ERR(("cannot get buffer for card"));		return;	}	memcpy(&card->d, d, sizeof(DESCRIPTOR));	sync_req.xdi_logical_adapter_number.Req = 0;	sync_req.xdi_logical_adapter_number.Rc =	    IDI_SYNC_REQ_XDI_GET_LOGICAL_ADAPTER_NUMBER;	card->d.request((ENTITY *) & sync_req);	adapter_nr =	    sync_req.xdi_logical_adapter_number.info.logical_adapter_number;	card->Id = adapter_nr;	if (!(diva_user_mode_idi_create_adapter(d, adapter_nr))) {		diva_os_enter_spin_lock(&ll_lock, &old_irql, "add card");		list_add_tail(&card->list, &cards);		diva_os_leave_spin_lock(&ll_lock, &old_irql, "add card");	} else {		DBG_ERR(("could not create user mode idi card %d",			 adapter_nr));	}}/* * remove card */static void um_remove_card(DESCRIPTOR * d){	diva_os_spin_lock_magic_t old_irql;	udiva_card *card = NULL;	if (!(card = find_card_in_list(d))) {		DBG_ERR(("cannot find card to remove"));		return;	}	diva_user_mode_idi_remove_adapter(card->Id);	diva_os_enter_spin_lock(&ll_lock, &old_irql, "remove card");	list_del(&card->list);	diva_os_leave_spin_lock(&ll_lock, &old_irql, "remove card");	DBG_LOG(("idi proc entry removed for card %d", card->Id));	diva_os_free(0, card);}/* * remove all adapter */static void DIVA_EXIT_FUNCTION remove_all_idi_proc(void){	udiva_card *card;	diva_os_spin_lock_magic_t old_irql;rescan:	diva_os_enter_spin_lock(&ll_lock, &old_irql, "remove all");	if (!list_empty(&cards)) {		card = list_entry(cards.next, udiva_card, list);		list_del(&card->list);		diva_os_leave_spin_lock(&ll_lock, &old_irql, "remove all");		diva_user_mode_idi_remove_adapter(card->Id);		diva_os_free(0, card);		goto rescan;	}	diva_os_leave_spin_lock(&ll_lock, &old_irql, "remove all");}/* * DIDD notify callback */static void *didd_callback(void *context, DESCRIPTOR * adapter,			   int removal){	if (adapter->type == IDI_DADAPTER) {		DBG_ERR(("Notification about IDI_DADAPTER change ! Oops."));		return (NULL);	} else if (adapter->type == IDI_DIMAINT) {		if (removal) {			stop_dbg();		} else {			memcpy(&MAdapter, adapter, sizeof(MAdapter));			dprintf = (DIVA_DI_PRINTF) MAdapter.request;			DbgRegister("User IDI", DRIVERRELEASE_IDI, DBG_DEFAULT);		}	} else if ((adapter->type > 0) && (adapter->type < 16)) {	/* IDI Adapter */		if (removal) {			um_remove_card(adapter);		} else {			um_new_card(adapter);		}	}	return (NULL);}/* * connect DIDD */static int DIVA_INIT_FUNCTION connect_didd(void){	int x = 0;	int dadapter = 0;	IDI_SYNC_REQ req;	DESCRIPTOR DIDD_Table[MAX_DESCRIPTORS];	DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));	for (x = 0; x < MAX_DESCRIPTORS; x++) {		if (DIDD_Table[x].type == IDI_DADAPTER) {	/* DADAPTER found */			dadapter = 1;			memcpy(&DAdapter, &DIDD_Table[x], sizeof(DAdapter));			req.didd_notify.e.Req = 0;			req.didd_notify.e.Rc =			    IDI_SYNC_REQ_DIDD_REGISTER_ADAPTER_NOTIFY;			req.didd_notify.info.callback = (void *)didd_callback;			req.didd_notify.info.context = NULL;			DAdapter.request((ENTITY *) & req);			if (req.didd_notify.e.Rc != 0xff) {				stop_dbg();				return (0);			}			notify_handle = req.didd_notify.info.handle;		} else if (DIDD_Table[x].type == IDI_DIMAINT) {	/* MAINT found */			memcpy(&MAdapter, &DIDD_Table[x], sizeof(DAdapter));			dprintf = (DIVA_DI_PRINTF) MAdapter.request;			DbgRegister("User IDI", DRIVERRELEASE_IDI, DBG_DEFAULT);		} else if ((DIDD_Table[x].type > 0)			   && (DIDD_Table[x].type < 16)) {	/* IDI Adapter found */			um_new_card(&DIDD_Table[x]);		}	}	if (!dadapter) {		stop_dbg();	}	return (dadapter);}/* *  Disconnect from DIDD */static void DIVA_EXIT_FUNCTION disconnect_didd(void){	IDI_SYNC_REQ req;	stop_dbg();	req.didd_notify.e.Req = 0;	req.didd_notify.e.Rc = IDI_SYNC_REQ_DIDD_REMOVE_ADAPTER_NOTIFY;	req.didd_notify.info.handle = notify_handle;	DAdapter.request((ENTITY *) & req);}/* * init */int DIVA_INIT_FUNCTION idifunc_init(void){	diva_os_initialize_spin_lock(&ll_lock, "idifunc");	if (diva_user_mode_idi_init()) {		DBG_ERR(("init: init failed."));		return (0);	}	if (!connect_didd()) {		diva_user_mode_idi_finit();		DBG_ERR(("init: failed to connect to DIDD."));		return (0);	}	return (1);}/* * finit */void DIVA_EXIT_FUNCTION idifunc_finit(void){	diva_user_mode_idi_finit();	disconnect_didd();	remove_all_idi_proc();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产情人综合久久777777| 99re66热这里只有精品3直播| 精品免费国产二区三区| 日韩免费观看高清完整版| 五月天激情综合| 日韩欧美在线一区二区三区| 蜜桃在线一区二区三区| 欧美va亚洲va| 国产成人精品三级麻豆| 亚洲欧洲精品一区二区三区不卡| 99久久久国产精品| 亚洲午夜免费电影| 日韩欧美国产午夜精品| 国产成人自拍网| 亚洲综合偷拍欧美一区色| 欧美一区国产二区| 国产精品 日产精品 欧美精品| 国产精品二三区| 色综合一个色综合亚洲| 免费观看91视频大全| 久久久久国产精品免费免费搜索| bt7086福利一区国产| 亚洲国产精品一区二区www| 欧美一区二区精品在线| 成人免费视频在线观看| 一区av在线播放| 欧美欧美欧美欧美首页| 国产精品一区二区久久不卡| 亚洲视频在线观看三级| 欧美一区三区二区| jizz一区二区| 美女高潮久久久| 国产精品久久久久久久浪潮网站 | 日韩精品成人一区二区在线| 久久亚洲精品国产精品紫薇| 色哟哟亚洲精品| 国产精品中文字幕欧美| 亚洲第一主播视频| 国产精品久线在线观看| 日韩一区二区三区四区| 91视视频在线观看入口直接观看www | 在线亚洲免费视频| 国产91丝袜在线播放0| 日韩中文字幕区一区有砖一区| 国产精品午夜春色av| 欧美一级xxx| 欧美伊人久久大香线蕉综合69| 国产一二三精品| 青娱乐精品视频| 亚洲永久精品大片| 成人免费在线播放视频| 欧美激情综合五月色丁香| 欧美tickling挠脚心丨vk| 欧美色窝79yyyycom| 色综合中文综合网| 久久久亚洲午夜电影| 欧美日韩国产乱码电影| 成人ar影院免费观看视频| 极品少妇xxxx偷拍精品少妇| 日韩成人一区二区| 亚洲成人av在线电影| 亚洲免费观看视频| 中文字幕一区在线| 国产精品你懂的| 国产精品嫩草影院com| 欧美激情一区三区| 国产三级欧美三级| 国产欧美综合色| 久久久亚洲精品一区二区三区| 精品国产乱码久久久久久蜜臀| 91精品国产91热久久久做人人| 欧美视频在线观看一区二区| 91福利在线导航| 91福利在线播放| 欧美网站大全在线观看| 欧美在线free| 欧美日韩亚洲国产综合| 欧美日韩中文国产| 欧美美女视频在线观看| 欧美日韩激情在线| 欧美一区二区三区影视| 日韩视频免费观看高清完整版在线观看 | 日本午夜精品视频在线观看 | 久久精品水蜜桃av综合天堂| 国产亚洲精品aa午夜观看| 久久久久九九视频| 国产精品国产三级国产普通话三级| 国产免费观看久久| 综合网在线视频| 亚洲国产日日夜夜| 日韩成人精品在线观看| 国产麻豆9l精品三级站| 99久久精品免费观看| 日本黄色一区二区| 欧美高清你懂得| 久久午夜电影网| 亚洲国产精华液网站w| 亚洲综合丝袜美腿| 久久91精品国产91久久小草| 国产成人无遮挡在线视频| 91首页免费视频| 欧美精品久久一区二区三区| 精品日韩一区二区| 中文字幕在线不卡一区| 亚洲电影第三页| 精品在线播放午夜| 国产91精品一区二区| 色综合一区二区| 日韩欧美一级二级| 国产精品美女久久久久久久久| 一区二区三区日韩在线观看| 美女一区二区视频| 成人精品视频一区| 欧美挠脚心视频网站| 日韩欧美在线观看一区二区三区| 精品少妇一区二区| 一区二区三区在线视频免费观看 | 欧美三区在线视频| 国产欧美精品区一区二区三区| 国产视频在线观看一区二区三区 | 一本一本久久a久久精品综合麻豆| 色婷婷综合久久久中文一区二区| 欧美精品v日韩精品v韩国精品v| 欧美mv日韩mv| 亚洲丝袜另类动漫二区| 久久99精品一区二区三区三区| 国产成人在线免费| 色8久久精品久久久久久蜜| 欧美一区二区在线观看| 国产欧美一区二区精品性| 午夜精品aaa| 国产一区二区三区高清播放| 欧美日韩一区高清| 欧美激情一二三区| 久久精品国产一区二区| 在线精品视频免费观看| 久久综合久久综合九色| 亚洲线精品一区二区三区| 黄色日韩网站视频| 91.麻豆视频| 欧美日韩中文精品| 国产区在线观看成人精品| 无码av免费一区二区三区试看| 成人av电影在线| 欧美精品一区二区三区在线播放 | 一区二区高清免费观看影视大全| 精东粉嫩av免费一区二区三区| 欧美在线综合视频| 综合婷婷亚洲小说| 国产成人精品亚洲日本在线桃色| 日韩精品一区二| 亚洲1区2区3区视频| 日本乱人伦一区| 中文字幕一区二区三区视频| 韩国欧美国产一区| 欧美大片在线观看| 蜜桃av一区二区在线观看| 6080亚洲精品一区二区| 亚洲午夜一二三区视频| 欧日韩精品视频| 亚洲欧洲一区二区在线播放| a级高清视频欧美日韩| 日本一区二区三区免费乱视频| 精品一区二区三区的国产在线播放| 欧洲中文字幕精品| 亚洲精品视频在线| 色综合久久久久久久久| 亚洲欧洲综合另类在线| 91社区在线播放| 亚洲日本乱码在线观看| 日本二三区不卡| 亚洲狠狠丁香婷婷综合久久久| 色婷婷av久久久久久久| 亚洲一区视频在线观看视频| 欧美日韩一区二区三区不卡| 亚洲午夜精品久久久久久久久| 91亚洲国产成人精品一区二三| 亚洲不卡av一区二区三区| 欧美美女bb生活片| 秋霞午夜av一区二区三区| 欧美xxx久久| 国产一区在线观看麻豆| 国产欧美久久久精品影院 | 欧亚洲嫩模精品一区三区| 亚洲大型综合色站| 日韩免费在线观看| 高清不卡一二三区| 亚洲另类中文字| 9191国产精品| 精品午夜久久福利影院| 一区在线观看免费| 欧美另类高清zo欧美| 激情文学综合插| 亚洲精品久久嫩草网站秘色| 欧美日韩国产综合一区二区| 久久爱www久久做| 日韩视频在线你懂得| 99这里只有精品| 亚洲成人精品在线观看| 26uuu成人网一区二区三区|