03f18285cd
Fix up some of the readibility deterioration caused by last year's ISDN whitespace coding style cleanup. Note that the checkpatch complaints all apply to the state of the source before this patch as well, and in many cases even more so. Signed-off-by: Tilman Schmidt <tilman@imap.cc> Signed-off-by: David S. Miller <davem@davemloft.net>
82 lines
2.2 KiB
C
82 lines
2.2 KiB
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);
|