Ejemplo n.º 1
0
Archivo: chp.c Proyecto: 19Dan01/linux
static int __init chp_init(void)
{
	struct chp_id chpid;
	int ret;

	ret = crw_register_handler(CRW_RSC_CPATH, chp_process_crw);
	if (ret)
		return ret;
	chp_wq = create_singlethread_workqueue("cio_chp");
	if (!chp_wq) {
		crw_unregister_handler(CRW_RSC_CPATH);
		return -ENOMEM;
	}
	INIT_WORK(&cfg_work, cfg_func);
	init_waitqueue_head(&cfg_wait_queue);
	if (info_update())
		return 0;
	/* Register available channel-paths. */
	chp_id_for_each(&chpid) {
		if (chp_info_get_status(chpid) != CHP_STATUS_NOT_RECOGNIZED)
			chp_new(chpid);
	}

	return 0;
}
Ejemplo n.º 2
0
int __init chsc_init(void)
{
    int ret;

    sei_page = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA);
    chsc_page = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA);
    if (!sei_page || !chsc_page) {
        ret = -ENOMEM;
        goto out_err;
    }
    ret = crw_register_handler(CRW_RSC_CSS, chsc_process_crw);
    if (ret)
        goto out_err;
    return ret;
out_err:
    free_page((unsigned long)chsc_page);
    free_page((unsigned long)sei_page);
    return ret;
}