git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
drivers
/
char
/
vc_screen.c
diff --git
a/drivers/char/vc_screen.c
b/drivers/char/vc_screen.c
index
c5c6b5e
..
55971a2
100644
(file)
--- a/
drivers/char/vc_screen.c
+++ b/
drivers/char/vc_screen.c
@@
-59,7
+59,7
@@
vcs_size(struct inode *inode)
if (!vc_cons_allocated(currcons))
return -ENXIO;
if (!vc_cons_allocated(currcons))
return -ENXIO;
- size = v
ideo_num_lines * video_num_column
s;
+ size = v
c_cons[currcons].d->vc_rows * vc_cons[currcons].d->vc_col
s;
if (minor & 128)
size = 2*size + HEADER_SIZE;
if (minor & 128)
size = 2*size + HEADER_SIZE;
@@
-99,6
+99,7
@@
vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
{
struct inode *inode = file->f_dentry->d_inode;
unsigned int currcons = iminor(inode);
{
struct inode *inode = file->f_dentry->d_inode;
unsigned int currcons = iminor(inode);
+ struct vc_data *vc;
long pos;
long viewed, attr, read;
int col, maxcol;
long pos;
long viewed, attr, read;
int col, maxcol;
@@
-126,6
+127,7
@@
vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
ret = -ENXIO;
if (!vc_cons_allocated(currcons))
goto unlock_out;
ret = -ENXIO;
if (!vc_cons_allocated(currcons))
goto unlock_out;
+ vc = vc_cons[currcons].d;
ret = -EINVAL;
if (pos < 0)
ret = -EINVAL;
if (pos < 0)
@@
-159,15
+161,15
@@
vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
con_buf_start = con_buf0 = con_buf;
orig_count = this_round;
con_buf_start = con_buf0 = con_buf;
orig_count = this_round;
- maxcol = v
ideo_num_column
s;
+ maxcol = v
c->vc_col
s;
if (!attr) {
if (!attr) {
- org = screen_pos(
currcons
, p, viewed);
+ org = screen_pos(
vc
, p, viewed);
col = p % maxcol;
p += maxcol - col;
while (this_round-- > 0) {
col = p % maxcol;
p += maxcol - col;
while (this_round-- > 0) {
- *con_buf0++ = (vcs_scr_readw(
currcons
, org++) & 0xff);
+ *con_buf0++ = (vcs_scr_readw(
vc
, org++) & 0xff);
if (++col == maxcol) {
if (++col == maxcol) {
- org = screen_pos(
currcons
, p, viewed);
+ org = screen_pos(
vc
, p, viewed);
col = 0;
p += maxcol;
}
col = 0;
p += maxcol;
}
@@
-176,9
+178,9
@@
vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
if (p < HEADER_SIZE) {
size_t tmp_count;
if (p < HEADER_SIZE) {
size_t tmp_count;
- con_buf0[0] = (char)
video_num_line
s;
- con_buf0[1] = (char)
video_num_column
s;
- getconsxy(
currcons
, con_buf0 + 2);
+ con_buf0[0] = (char)
vc->vc_row
s;
+ con_buf0[1] = (char)
vc->vc_col
s;
+ getconsxy(
vc
, con_buf0 + 2);
con_buf_start += p;
this_round += p;
con_buf_start += p;
this_round += p;
@@
-214,7
+216,7
@@
vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
p /= 2;
col = p % maxcol;
p /= 2;
col = p % maxcol;
- org = screen_pos(
currcons
, p, viewed);
+ org = screen_pos(
vc
, p, viewed);
p += maxcol - col;
/* Buffer has even length, so we can always copy
p += maxcol - col;
/* Buffer has even length, so we can always copy
@@
-224,10
+226,10
@@
vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
this_round = (this_round + 1) >> 1;
while (this_round) {
this_round = (this_round + 1) >> 1;
while (this_round) {
- *tmp_buf++ = vcs_scr_readw(
currcons
, org++);
+ *tmp_buf++ = vcs_scr_readw(
vc
, org++);
this_round --;
if (++col == maxcol) {
this_round --;
if (++col == maxcol) {
- org = screen_pos(
currcons
, p, viewed);
+ org = screen_pos(
vc
, p, viewed);
col = 0;
p += maxcol;
}
col = 0;
p += maxcol;
}
@@
-270,6
+272,7
@@
vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
{
struct inode *inode = file->f_dentry->d_inode;
unsigned int currcons = iminor(inode);
{
struct inode *inode = file->f_dentry->d_inode;
unsigned int currcons = iminor(inode);
+ struct vc_data *vc;
long pos;
long viewed, attr, size, written;
char *con_buf0;
long pos;
long viewed, attr, size, written;
char *con_buf0;
@@
-299,6
+302,7
@@
vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
ret = -ENXIO;
if (!vc_cons_allocated(currcons))
goto unlock_out;
ret = -ENXIO;
if (!vc_cons_allocated(currcons))
goto unlock_out;
+ vc = vc_cons[currcons].d;
size = vcs_size(inode);
ret = -EINVAL;
size = vcs_size(inode);
ret = -EINVAL;
@@
-351,10
+355,10
@@
vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
con_buf0 = con_buf;
orig_count = this_round;
con_buf0 = con_buf;
orig_count = this_round;
- maxcol = v
ideo_num_column
s;
+ maxcol = v
c->vc_col
s;
p = pos;
if (!attr) {
p = pos;
if (!attr) {
- org0 = org = screen_pos(
currcons
, p, viewed);
+ org0 = org = screen_pos(
vc
, p, viewed);
col = p % maxcol;
p += maxcol - col;
col = p % maxcol;
p += maxcol - col;
@@
-362,11
+366,11
@@
vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
unsigned char c = *con_buf0++;
this_round--;
unsigned char c = *con_buf0++;
this_round--;
- vcs_scr_writew(
currcons
,
- (vcs_scr_readw(
currcons
, org) & 0xff00) | c, org);
+ vcs_scr_writew(
vc
,
+ (vcs_scr_readw(
vc
, org) & 0xff00) | c, org);
org++;
if (++col == maxcol) {
org++;
if (++col == maxcol) {
- org = screen_pos(
currcons
, p, viewed);
+ org = screen_pos(
vc
, p, viewed);
col = 0;
p += maxcol;
}
col = 0;
p += maxcol;
}
@@
-375,34
+379,34
@@
vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
if (p < HEADER_SIZE) {
char header[HEADER_SIZE];
if (p < HEADER_SIZE) {
char header[HEADER_SIZE];
- getconsxy(
currcons
, header + 2);
+ getconsxy(
vc
, header + 2);
while (p < HEADER_SIZE && this_round > 0) {
this_round--;
header[p++] = *con_buf0++;
}
if (!viewed)
while (p < HEADER_SIZE && this_round > 0) {
this_round--;
header[p++] = *con_buf0++;
}
if (!viewed)
- putconsxy(
currcons
, header + 2);
+ putconsxy(
vc
, header + 2);
}
p -= HEADER_SIZE;
col = (p/2) % maxcol;
if (this_round > 0) {
}
p -= HEADER_SIZE;
col = (p/2) % maxcol;
if (this_round > 0) {
- org0 = org = screen_pos(
currcons
, p/2, viewed);
+ org0 = org = screen_pos(
vc
, p/2, viewed);
if ((p & 1) && this_round > 0) {
char c;
this_round--;
c = *con_buf0++;
#ifdef __BIG_ENDIAN
if ((p & 1) && this_round > 0) {
char c;
this_round--;
c = *con_buf0++;
#ifdef __BIG_ENDIAN
- vcs_scr_writew(
currcons
, c |
- (vcs_scr_readw(
currcons
, org) & 0xff00), org);
+ vcs_scr_writew(
vc
, c |
+ (vcs_scr_readw(
vc
, org) & 0xff00), org);
#else
#else
- vcs_scr_writew(
currcons
, (c << 8) |
- (vcs_scr_readw(
currcons
, org) & 0xff), org);
+ vcs_scr_writew(
vc
, (c << 8) |
+ (vcs_scr_readw(
vc
, org) & 0xff), org);
#endif
org++;
p++;
if (++col == maxcol) {
#endif
org++;
p++;
if (++col == maxcol) {
- org = screen_pos(
currcons
, p/2, viewed);
+ org = screen_pos(
vc
, p/2, viewed);
col = 0;
}
}
col = 0;
}
}
@@
-413,11
+417,11
@@
vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
unsigned short w;
w = get_unaligned(((const unsigned short *)con_buf0));
unsigned short w;
w = get_unaligned(((const unsigned short *)con_buf0));
- vcs_scr_writew(
currcons
, w, org++);
+ vcs_scr_writew(
vc
, w, org++);
con_buf0 += 2;
this_round -= 2;
if (++col == maxcol) {
con_buf0 += 2;
this_round -= 2;
if (++col == maxcol) {
- org = screen_pos(
currcons
, p, viewed);
+ org = screen_pos(
vc
, p, viewed);
col = 0;
p += maxcol;
}
col = 0;
p += maxcol;
}
@@
-427,9
+431,9
@@
vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
c = *con_buf0++;
#ifdef __BIG_ENDIAN
c = *con_buf0++;
#ifdef __BIG_ENDIAN
- vcs_scr_writew(
currcons, (vcs_scr_readw(currcons
, org) & 0xff) | (c << 8), org);
+ vcs_scr_writew(
vc, (vcs_scr_readw(vc
, org) & 0xff) | (c << 8), org);
#else
#else
- vcs_scr_writew(
currcons, (vcs_scr_readw(currcons
, org) & 0xff00) | c, org);
+ vcs_scr_writew(
vc, (vcs_scr_readw(vc
, org) & 0xff00) | c, org);
#endif
}
}
#endif
}
}