📄 divert_init.c
字号:
/* $Id divert_init.c,v 1.5.6.2 2001/01/24 22:18:17 kai Exp $ * * Module init for DSS1 diversion services for i4l. * * Copyright 1999 by Werner Cornelius (werner@isdn4linux.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. * */#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>#include "isdn_divert.h"MODULE_DESCRIPTION("ISDN4Linux: Call diversion support");MODULE_AUTHOR("Werner Cornelius");MODULE_LICENSE("GPL");/****************************************//* structure containing interface to hl *//****************************************/isdn_divert_if divert_if = { DIVERT_IF_MAGIC, /* magic value */ DIVERT_CMD_REG, /* register cmd */ ll_callback, /* callback routine from ll */ NULL, /* command still not specified */ NULL, /* drv_to_name */ NULL, /* name_to_drv */ };/*************************//* Module interface code *//* no cmd line parms *//*************************/static int __init divert_init(void){ int i; if (divert_dev_init()) { printk(KERN_WARNING "dss1_divert: cannot install device, not loaded\n"); return(-EIO); } if ((i = DIVERT_REG_NAME(&divert_if)) != DIVERT_NO_ERR) { divert_dev_deinit(); printk(KERN_WARNING "dss1_divert: error %d registering module, not loaded\n",i); return(-EIO); } printk(KERN_INFO "dss1_divert module successfully installed\n"); return(0);}/**********************//* Module deinit code *//**********************/static void __exit divert_exit(void){ unsigned long flags; int i; spin_lock_irqsave(&divert_lock, flags); divert_if.cmd = DIVERT_CMD_REL; /* release */ if ((i = DIVERT_REG_NAME(&divert_if)) != DIVERT_NO_ERR) { printk(KERN_WARNING "dss1_divert: error %d releasing module\n",i); spin_unlock_irqrestore(&divert_lock, flags); return; } if (divert_dev_deinit()) { printk(KERN_WARNING "dss1_divert: device busy, remove cancelled\n"); spin_unlock_irqrestore(&divert_lock, flags); return; } spin_unlock_irqrestore(&divert_lock, flags); deleterule(-1); /* delete all rules and free mem */ deleteprocs(); printk(KERN_INFO "dss1_divert module successfully removed \n");}module_init(divert_init);module_exit(divert_exit);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -