Пример #1
0
static void __exit hci_uart_exit(void)
{
	int err;

#ifdef CONFIG_BT_HCIUART_H4
	h4_deinit();
#endif
#ifdef CONFIG_BT_HCIUART_BCSP
	bcsp_deinit();
#endif
#ifdef CONFIG_BT_HCIUART_LL
	ll_deinit();
#endif
#ifdef CONFIG_BT_HCIUART_H5
	h5_deinit();
#endif
#ifdef CONFIG_BT_HCIUART_ATH3K
	ath_deinit();
#endif

	/* Release tty registration of line discipline */
	if ((err = tty_unregister_ldisc(N_HCI)))
		BT_ERR("Can't unregister HCI line discipline (%d)", err);
}
Пример #2
0
static void __exit rin_exit(void)
{
	int i;
	struct net_device *dev;
	struct rin_st *sl;
	unsigned long timeout = jiffies + HZ;
	int busy = 0;

	if (rin_devs == NULL)
		return;

	/* First of all: check for active disciplines and hangup them.
	 */
	do {
		if (busy)
			msleep_interruptible(100);

		busy = 0;
		for (i = 0; i < rin_maxdev; i++) {
			dev = rin_devs[i];
			if (!dev)
				continue;
			sl = netdev_priv(dev);
			spin_lock_bh(&sl->lock);
			if (sl->tty) {
				busy++;
				tty_hangup(sl->tty);
			}
			spin_unlock_bh(&sl->lock);
		}
	} while (busy && time_before(jiffies, timeout));


	for (i = 0; i < rin_maxdev; i++) {
		dev = rin_devs[i];
		if (!dev)
			continue;
		rin_devs[i] = NULL;

		sl = netdev_priv(dev);
		if (sl->tty) {
			if(DEBUG) printk(KERN_ERR "%s: tty discipline still running\n",
			       dev->name);
			/* Intentionally leak the control block. */
			dev->destructor = NULL;
		}

		unregister_netdev(dev);
	}

	kfree(rin_devs);
	rin_devs = NULL;

	i = tty_unregister_ldisc(N_RIN);
	if (i != 0)
		if(DEBUG) printk(KERN_ERR "RIN: can't unregister line discipline (err = %d)\n", i);

	if (rin_tx_wq){
		flush_workqueue(rin_tx_wq);
		destroy_workqueue(rin_tx_wq);
		rin_tx_wq = NULL;
	}
}
Пример #3
0
static void __exit serport_exit(void)
{
	tty_unregister_ldisc(N_MOUSE);
}
Пример #4
0
void lunix_ldisc_destroy(void)
{
    //debug("unregistering lunix ldisc\n");
    tty_unregister_ldisc(N_LUNIX_LDISC);
    //debug("lunix ldisc unregistered\n");
}
Пример #5
0
void spk_ttyio_unregister_ldisc(void)
{
	if (tty_unregister_ldisc(N_SPEAKUP))
		pr_warn("speakup: Couldn't unregister ldisc\n");
}
Пример #6
0
static __exit void xbee_exit(void)
{
	tty_unregister_ldisc(N_XBEE);
	platform_driver_unregister(&ieee802154xbee_driver);
	platform_device_unregister(ieee802154xbee_dev);
}
Пример #7
0
int32 plat_uart_exit(void)
{
    return tty_unregister_ldisc(N_HW_BFG);
}
Пример #8
0
int mcuio_ldisc_exit(void)
{
	tty_unregister_ldisc(N_MCUIO);
        return 0;
}
Пример #9
0
static void __exit n_null_exit(void)
{
	tty_unregister_ldisc(N_NULL);
}
Пример #10
0
static void __exit nci_uart_exit(void)
{
	tty_unregister_ldisc(N_NCI);
}
Пример #11
0
static void __exit ld_phonet_exit(void)
{
	tty_unregister_ldisc(N_PHONET);
}