Blame view

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