/* Timer for queued requests. */
static struct timer_list sclp_queue_timer;
-/* Internal state: is the driver initialized? */
-static volatile enum sclp_init_state_t {
- sclp_init_state_uninitialized,
- sclp_init_state_initializing,
- sclp_init_state_initialized
-} sclp_init_state = sclp_init_state_uninitialized;
-
/* Internal state: is a request active at the sclp? */
static volatile enum sclp_running_state_t {
sclp_running_state_idle,
int sclp_sdias_init(void);
void sclp_sdias_exit(void);
+enum {
+ sclp_init_state_uninitialized,
+ sclp_init_state_initializing,
+ sclp_init_state_initialized
+};
+
+extern int sclp_init_state;
extern int sclp_console_pages;
extern int sclp_console_drop;
extern unsigned long sclp_console_full;
static bool have_vt220 __section(data);
static bool have_linemode __section(data);
+int sclp_init_state __section(data) = sclp_init_state_uninitialized;
+
static void _sclp_wait_int(void)
{
unsigned long psw_mask, addr, flags;
*/
void __sclp_print_early(const char *str, unsigned int len)
{
+ if (sclp_init_state != sclp_init_state_uninitialized)
+ return;
if (_sclp_setup(0) != 0)
return;
if (have_linemode)