vt_buffer.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. #ifndef _LINUX_VT_BUFFER_H_
  13. #define _LINUX_VT_BUFFER_H_
  14. #if defined(CONFIG_VGA_CONSOLE) || defined(CONFIG_MDA_CONSOLE)
  15. #include <asm/vga.h>
  16. #endif
  17. #ifndef VT_BUF_HAVE_RW
  18. #define scr_writew(val, addr) (*(addr) = (val))
  19. #define scr_readw(addr) (*(addr))
  20. #endif
  21. #ifndef VT_BUF_HAVE_MEMSETW
  22. static inline void scr_memsetw(u16 *s, u16 c, unsigned int count)
  23. {
  24. count /= 2;
  25. while (count--)
  26. scr_writew(c, s++);
  27. }
  28. #endif
  29. #ifndef VT_BUF_HAVE_MEMCPYW
  30. static inline void scr_memcpyw(u16 *d, const u16 *s, unsigned int count)
  31. {
  32. count /= 2;
  33. while (count--)
  34. scr_writew(scr_readw(s++), d++);
  35. }
  36. #endif
  37. #ifndef VT_BUF_HAVE_MEMMOVEW
  38. static inline void scr_memmovew(u16 *d, const u16 *s, unsigned int count)
  39. {
  40. if (d < s)
  41. scr_memcpyw(d, s, count);
  42. else {
  43. count /= 2;
  44. d += count;
  45. s += count;
  46. while (count--)
  47. scr_writew(scr_readw(--s), --d);
  48. }
  49. }
  50. #endif
  51. #endif