linux/include/linux/vt_buffer.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 *      include/linux/vt_buffer.h -- Access to VT screen buffer
   4 *
   5 *      (c) 1998 Martin Mares <mj@ucw.cz>
   6 *
   7 *      This is a set of macros and functions which are used in the
   8 *      console driver and related code to access the screen buffer.
   9 *      In most cases the console works with simple in-memory buffer,
  10 *      but when handling hardware text mode consoles, we store
  11 *      the foreground console directly in video memory.
  12 */
  13
  14#ifndef _LINUX_VT_BUFFER_H_
  15#define _LINUX_VT_BUFFER_H_
  16
  17#include <linux/string.h>
  18
  19#if defined(CONFIG_VGA_CONSOLE) || defined(CONFIG_MDA_CONSOLE)
  20#include <asm/vga.h>
  21#endif
  22
  23#ifndef VT_BUF_HAVE_RW
  24#define scr_writew(val, addr) (*(addr) = (val))
  25#define scr_readw(addr) (*(addr))
  26#endif
  27
  28#ifndef VT_BUF_HAVE_MEMSETW
  29static inline void scr_memsetw(u16 *s, u16 c, unsigned int count)
  30{
  31#ifdef VT_BUF_HAVE_RW
  32        count /= 2;
  33        while (count--)
  34                scr_writew(c, s++);
  35#else
  36        memset16(s, c, count / 2);
  37#endif
  38}
  39#endif
  40
  41#ifndef VT_BUF_HAVE_MEMCPYW
  42static inline void scr_memcpyw(u16 *d, const u16 *s, unsigned int count)
  43{
  44#ifdef VT_BUF_HAVE_RW
  45        count /= 2;
  46        while (count--)
  47                scr_writew(scr_readw(s++), d++);
  48#else
  49        memcpy(d, s, count);
  50#endif
  51}
  52#endif
  53
  54#ifndef VT_BUF_HAVE_MEMMOVEW
  55static inline void scr_memmovew(u16 *d, const u16 *s, unsigned int count)
  56{
  57#ifdef VT_BUF_HAVE_RW
  58        if (d < s)
  59                scr_memcpyw(d, s, count);
  60        else {
  61                count /= 2;
  62                d += count;
  63                s += count;
  64                while (count--)
  65                        scr_writew(scr_readw(--s), --d);
  66        }
  67#else
  68        memmove(d, s, count);
  69#endif
  70}
  71#endif
  72
  73#endif
  74