Commit 33b37a33c242542fac2980b8ccd90977388b7a8d
Committed by
Linus Torvalds
1 parent
2c3bb20f46
Exists in
master
and in
7 other branches
[PATCH] remove active field from tty buffer structure
Remove 'active' field from tty buffer structure. This was added in 2.6.16 as part of a patch to make the new tty buffering SMP safe. This field is unnecessary with the more intelligently written flush_to_ldisc that adds receive_room handling. Removing this field reverts to simpler logic where the tail buffer is always the 'active' buffer, which should not be freed by flush_to_ldisc. (active == buffer being filled with new data) The result is simpler, smaller, and faster tty buffer code. Signed-off-by: Paul Fulghum <paulkf@microgate.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 4 changed files with 6 additions and 17 deletions Side-by-side Diff
drivers/char/tty_io.c
... | ... | @@ -267,7 +267,6 @@ |
267 | 267 | p->used = 0; |
268 | 268 | p->size = size; |
269 | 269 | p->next = NULL; |
270 | - p->active = 0; | |
271 | 270 | p->commit = 0; |
272 | 271 | p->read = 0; |
273 | 272 | p->char_buf_ptr = (char *)(p->data); |
274 | 273 | |
... | ... | @@ -327,10 +326,9 @@ |
327 | 326 | /* OPTIMISATION: We could keep a per tty "zero" sized buffer to |
328 | 327 | remove this conditional if its worth it. This would be invisible |
329 | 328 | to the callers */ |
330 | - if ((b = tty->buf.tail) != NULL) { | |
329 | + if ((b = tty->buf.tail) != NULL) | |
331 | 330 | left = b->size - b->used; |
332 | - b->active = 1; | |
333 | - } else | |
331 | + else | |
334 | 332 | left = 0; |
335 | 333 | |
336 | 334 | if (left < size) { |
337 | 335 | |
... | ... | @@ -338,12 +336,10 @@ |
338 | 336 | if ((n = tty_buffer_find(tty, size)) != NULL) { |
339 | 337 | if (b != NULL) { |
340 | 338 | b->next = n; |
341 | - b->active = 0; | |
342 | 339 | b->commit = b->used; |
343 | 340 | } else |
344 | 341 | tty->buf.head = n; |
345 | 342 | tty->buf.tail = n; |
346 | - n->active = 1; | |
347 | 343 | } else |
348 | 344 | size = left; |
349 | 345 | } |
350 | 346 | |
... | ... | @@ -404,10 +400,8 @@ |
404 | 400 | { |
405 | 401 | unsigned long flags; |
406 | 402 | spin_lock_irqsave(&tty->buf.lock, flags); |
407 | - if (tty->buf.tail != NULL) { | |
408 | - tty->buf.tail->active = 0; | |
403 | + if (tty->buf.tail != NULL) | |
409 | 404 | tty->buf.tail->commit = tty->buf.tail->used; |
410 | - } | |
411 | 405 | spin_unlock_irqrestore(&tty->buf.lock, flags); |
412 | 406 | schedule_delayed_work(&tty->buf.work, 1); |
413 | 407 | } |
414 | 408 | |
... | ... | @@ -2902,10 +2896,8 @@ |
2902 | 2896 | { |
2903 | 2897 | unsigned long flags; |
2904 | 2898 | spin_lock_irqsave(&tty->buf.lock, flags); |
2905 | - if (tty->buf.tail != NULL) { | |
2906 | - tty->buf.tail->active = 0; | |
2899 | + if (tty->buf.tail != NULL) | |
2907 | 2900 | tty->buf.tail->commit = tty->buf.tail->used; |
2908 | - } | |
2909 | 2901 | spin_unlock_irqrestore(&tty->buf.lock, flags); |
2910 | 2902 | |
2911 | 2903 | if (tty->low_latency) |
include/linux/kbd_kern.h
... | ... | @@ -155,10 +155,8 @@ |
155 | 155 | { |
156 | 156 | unsigned long flags; |
157 | 157 | spin_lock_irqsave(&t->buf.lock, flags); |
158 | - if (t->buf.tail != NULL) { | |
159 | - t->buf.tail->active = 0; | |
158 | + if (t->buf.tail != NULL) | |
160 | 159 | t->buf.tail->commit = t->buf.tail->used; |
161 | - } | |
162 | 160 | spin_unlock_irqrestore(&t->buf.lock, flags); |
163 | 161 | schedule_work(&t->buf.work); |
164 | 162 | } |
include/linux/tty.h
include/linux/tty_flip.h
... | ... | @@ -12,7 +12,7 @@ |
12 | 12 | unsigned char ch, char flag) |
13 | 13 | { |
14 | 14 | struct tty_buffer *tb = tty->buf.tail; |
15 | - if (tb && tb->active && tb->used < tb->size) { | |
15 | + if (tb && tb->used < tb->size) { | |
16 | 16 | tb->flag_buf_ptr[tb->used] = flag; |
17 | 17 | tb->char_buf_ptr[tb->used++] = ch; |
18 | 18 | return 1; |