Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9dfd16dd authored by Peter Hurley's avatar Peter Hurley Committed by Greg Kroah-Hartman
Browse files

n_tty: Avoid false-sharing echo buffer indices



Separate the head & commit indices from the tail index to avoid
cache-line contention (so called 'false-sharing') between concurrent
threads.

Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 29c7c5ca
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -90,6 +90,8 @@ struct n_tty_data {
	/* producer-published */
	size_t read_head;
	size_t canon_head;
	size_t echo_head;
	size_t echo_commit;
	DECLARE_BITMAP(process_char_map, 256);

	/* private to n_tty_receive_overrun (single-threaded) */
@@ -105,20 +107,17 @@ struct n_tty_data {
	/* shared by producer and consumer */
	char *read_buf;
	DECLARE_BITMAP(read_flags, N_TTY_BUF_SIZE);
	unsigned char *echo_buf;

	int minimum_to_wake;

	/* consumer-published */
	size_t read_tail;

	unsigned char *echo_buf;
	size_t echo_head;
	size_t echo_tail;
	size_t echo_commit;

	/* protected by output lock */
	unsigned int column;
	unsigned int canon_column;
	size_t echo_tail;

	struct mutex atomic_read_lock;
	struct mutex output_lock;