* ********************************************************
*/
-static void conring_puts(const char *str)
+static void conring_puts(const char *str, size_t len)
{
- char c;
-
ASSERT(spin_is_locked(&console_lock));
- while ( (c = *str++) != '\0' )
- conring[CONRING_IDX_MASK(conringp++)] = c;
+ while ( len-- )
+ conring[CONRING_IDX_MASK(conringp++)] = *str++;
- if ( (uint32_t)(conringp - conringc) > conring_size )
+ if ( conringp - conringc > conring_size )
conringc = conringp - conring_size;
}
if ( opt_console_to_ring )
{
- conring_puts(kbuf);
+ conring_puts(kbuf, kcount);
tasklet_schedule(¬ify_dom0_con_ring_tasklet);
}
}
#endif
- conring_puts(str);
+ conring_puts(str, len);
if ( !console_locks_busted )
tasklet_schedule(¬ify_dom0_con_ring_tasklet);