/* * called by console_init() in drivers/char/tty_io.c at boot-time. */ static int __init sclp_console_init(void) { void *page; int i; int rc; if (!CONSOLE_IS_SCLP) return 0; rc = sclp_rw_init(); if (rc) return rc; /* Allocate pages for output buffering */ INIT_LIST_HEAD(&sclp_con_pages); for (i = 0; i < MAX_CONSOLE_PAGES; i++) { page = alloc_bootmem_low_pages(PAGE_SIZE); list_add_tail((struct list_head *) page, &sclp_con_pages); } INIT_LIST_HEAD(&sclp_con_outqueue); spin_lock_init(&sclp_con_lock); sclp_con_buffer_count = 0; sclp_conbuf = NULL; init_timer(&sclp_con_timer); /* Set output format */ if (MACHINE_IS_VM) /* * save 4 characters for the CPU number * written at start of each line by VM/CP */ sclp_con_columns = 76; else sclp_con_columns = 80; sclp_con_width_htab = 8; /* enable printk-access to this driver */ atomic_notifier_chain_register(&panic_notifier_list, &on_panic_nb); register_reboot_notifier(&on_reboot_nb); register_console(&sclp_console); return 0; }
static int __init sclp_console_init(void) { void *page; int i; int rc; if (!CONSOLE_IS_SCLP) return 0; rc = sclp_rw_init(); if (rc) return rc; /* */ INIT_LIST_HEAD(&sclp_con_pages); for (i = 0; i < MAX_CONSOLE_PAGES; i++) { page = (void *) get_zeroed_page(GFP_KERNEL | GFP_DMA); list_add_tail(page, &sclp_con_pages); } INIT_LIST_HEAD(&sclp_con_outqueue); spin_lock_init(&sclp_con_lock); sclp_conbuf = NULL; init_timer(&sclp_con_timer); /* */ if (MACHINE_IS_VM) /* */ sclp_con_columns = 76; else sclp_con_columns = 80; sclp_con_width_htab = 8; /* */ atomic_notifier_chain_register(&panic_notifier_list, &on_panic_nb); register_reboot_notifier(&on_reboot_nb); register_console(&sclp_console); return 0; }