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