Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 34033
b: refs/heads/master
c: 4e9e95a
h: refs/heads/master
i:
  34031: 3eb1b92
v: v3
  • Loading branch information
Stephen Rothwell committed Jul 13, 2006
1 parent 4bc0d73 commit 7705d4e
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8bff05b052db7a4cfaaf0eee7f8145600548e9c9
refs/heads/master: 4e9e95a3554e98e7383a3591283ffcd850c9ef48
14 changes: 9 additions & 5 deletions trunk/drivers/char/hvc_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ struct hvc_struct {
struct tty_struct *tty;
unsigned int count;
int do_wakeup;
char outbuf[N_OUTBUF] __ALIGNED__;
char *outbuf;
int outbuf_size;
int n_outbuf;
uint32_t vtermno;
struct hv_ops *ops;
Expand Down Expand Up @@ -505,7 +506,7 @@ static int hvc_write(struct tty_struct *tty, const unsigned char *buf, int count
if (hp->n_outbuf > 0)
hvc_push(hp);

while (count > 0 && (rsize = N_OUTBUF - hp->n_outbuf) > 0) {
while (count > 0 && (rsize = hp->outbuf_size - hp->n_outbuf) > 0) {
if (rsize > count)
rsize = count;
memcpy(hp->outbuf + hp->n_outbuf, buf, rsize);
Expand Down Expand Up @@ -538,7 +539,7 @@ static int hvc_write_room(struct tty_struct *tty)
if (!hp)
return -1;

return N_OUTBUF - hp->n_outbuf;
return hp->outbuf_size - hp->n_outbuf;
}

static int hvc_chars_in_buffer(struct tty_struct *tty)
Expand Down Expand Up @@ -728,12 +729,13 @@ static struct kobj_type hvc_kobj_type = {
};

struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int irq,
struct hv_ops *ops)
struct hv_ops *ops, int outbuf_size)
{
struct hvc_struct *hp;
int i;

hp = kmalloc(sizeof(*hp), GFP_KERNEL);
hp = kmalloc(ALIGN(sizeof(*hp), sizeof(long)) + outbuf_size,
GFP_KERNEL);
if (!hp)
return ERR_PTR(-ENOMEM);

Expand All @@ -742,6 +744,8 @@ struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int irq,
hp->vtermno = vtermno;
hp->irq = irq;
hp->ops = ops;
hp->outbuf_size = outbuf_size;
hp->outbuf = &((char *)hp)[ALIGN(sizeof(*hp), sizeof(long))];

kobject_init(&hp->kobj);
hp->kobj.ktype = &hvc_kobj_type;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/char/hvc_console.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ extern int hvc_instantiate(uint32_t vtermno, int index, struct hv_ops *ops);

/* register a vterm for hvc tty operation (module_init or hotplug add) */
extern struct hvc_struct * __devinit hvc_alloc(uint32_t vtermno, int irq,
struct hv_ops *ops);
struct hv_ops *ops, int outbuf_size);
/* remove a vterm from hvc tty operation (modele_exit or hotplug remove) */
extern int __devexit hvc_remove(struct hvc_struct *hp);

Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/char/hvc_iseries.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,8 @@ static int __devinit hvc_vio_probe(struct vio_dev *vdev,

pi = &port_info[vdev->unit_address];

hp = hvc_alloc(vdev->unit_address, vdev->irq, &hvc_get_put_ops);
hp = hvc_alloc(vdev->unit_address, vdev->irq, &hvc_get_put_ops,
VIOCHAR_MAX_DATA);
if (IS_ERR(hp))
return PTR_ERR(hp);
pi->hp = hp;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/char/hvc_rtas.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ static int hvc_rtas_init(void)

/* Allocate an hvc_struct for the console device we instantiated
* earlier. Save off hp so that we can return it on exit */
hp = hvc_alloc(hvc_rtas_cookie, NO_IRQ, &hvc_rtas_get_put_ops);
hp = hvc_alloc(hvc_rtas_cookie, NO_IRQ, &hvc_rtas_get_put_ops, 16);
if (IS_ERR(hp))
return PTR_ERR(hp);

Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/char/hvc_vio.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ static int __devinit hvc_vio_probe(struct vio_dev *vdev,
if (!vdev || !id)
return -EPERM;

hp = hvc_alloc(vdev->unit_address, vdev->irq, &hvc_get_put_ops);
hp = hvc_alloc(vdev->unit_address, vdev->irq, &hvc_get_put_ops,
MAX_VIO_PUT_CHARS);
if (IS_ERR(hp))
return PTR_ERR(hp);
dev_set_drvdata(&vdev->dev, hp);
Expand Down

0 comments on commit 7705d4e

Please sign in to comment.