コード例 #1
0
static void __exit
exit_alq(void)
{
	if (ald_proc != -1)
		kill_proc(ald_proc, SIGKILL, -1);
	ald_shutdown(NULL, 0);
	printk(KERN_INFO "%s: driver unloaded\n", mod_info);
}
コード例 #2
0
ファイル: kern_alq.c プロジェクト: runsisi/ufreebsdtcp
static int
alq_load_handler(module_t mod, int what, void *arg)
{
    int ret;

    ret = 0;

    switch (what) {
    case MOD_LOAD:
    case MOD_SHUTDOWN:
        break;

    case MOD_QUIESCE:
        ALD_LOCK();
        /* Only allow unload if there are no open queues. */
        if (BSD_LIST_FIRST(&ald_queues) == NULL) {
            ald_shutingdown = 1;
            ALD_UNLOCK();
            EVENTHANDLER_DEREGISTER(shutdown_pre_sync,
                                    alq_eventhandler_tag);
            ald_shutdown(NULL, 0);
            mtx_destroy(&ald_mtx);
        } else {
            ALD_UNLOCK();
            ret = EBUSY;
        }
        break;

    case MOD_UNLOAD:
        /* If MOD_QUIESCE failed we must fail here too. */
        if (ald_shutingdown == 0)
            ret = EBUSY;
        break;

    default:
        ret = EINVAL;
        break;
    }

    return (ret);
}