tty: Avoid false-sharing flip buffer ptrs
authorPeter Hurley <peter@hurleysoftware.com>
Sat, 15 Jun 2013 13:36:12 +0000 (09:36 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 23 Jul 2013 23:47:09 +0000 (16:47 -0700)
Separate the head and tail ptrs to avoid cache-line contention
(so called 'false-sharing') between concurrent threads.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/tty.h

index 1d5bacca3652495f14d3356ade6795de1112c487..b8e8adf95bf3aeb3977e9db5e8bb59e6abcdb0da 100644 (file)
@@ -65,13 +65,13 @@ static inline char *flag_buf_ptr(struct tty_buffer *b, int ofs)
 
 
 struct tty_bufhead {
+       struct tty_buffer *head;        /* Queue head */
        struct work_struct work;
        struct mutex flush_mutex;
        struct tty_buffer sentinel;
-       struct tty_buffer *head;        /* Queue head */
-       struct tty_buffer *tail;        /* Active buffer */
        struct llist_head free;         /* Free queue head */
        atomic_t           memory_used; /* In-use buffers excluding free list */
+       struct tty_buffer *tail;        /* Active buffer */
 };
 /*
  * When a break, frame error, or parity error happens, these codes are