xen/console: use memcpy() in console_init_ring()

Make console_init_ring() more efficient by using memcpy()'s, rather than
copying the ring a byte at a time.

No functional change intended.

Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
Acked-by: Roger Pau Monne <roger.pau@citrix.com>
This commit is contained in:
Denis Mukhin authored and Jan Beulich committed 2026-07-16 09:18:43 +02:00
1 parent 185847d0b6
commit a7fd7d4cbd
1 file changed
+15 -3
+15 -3
View File
@@ -463,7 +463,8 @@ static void cf_check conring_dump_keyhandler(unsigned char key)
void __init console_init_ring(void)
{
char *ring;
unsigned int i, order, memflags;
XENCONS_RING_IDX done, size, n;
unsigned int order, memflags;
unsigned long flags;
if ( !opt_conring_size )
@@ -479,8 +480,19 @@ void __init console_init_ring(void)
opt_conring_size = PAGE_SIZE << order;
nrspin_lock_irqsave(&console_lock, flags);
for ( i = conringc ; i != conringp; i++ )
ring[i & (opt_conring_size - 1)] = conring[i & (conring_size - 1)];
size = conringp - conringc;
for ( done = 0; done < size; done += n )
{
XENCONS_RING_IDX src = (conringc + done) & (conring_size - 1);
XENCONS_RING_IDX dst = (conringc + done) & (opt_conring_size - 1);
n = min(opt_conring_size - dst, conring_size - src);
n = min(size - done, n);
memcpy(&ring[dst], &conring[src], n);
}
conring = ring;
smp_wmb(); /* Allow users of console_force_unlock() to see larger buffer. */
conring_size = opt_conring_size;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.