Searched hist:"4898 e640caf03fdbaf2122d5a33949bf3e4a5b34" (Results 1 – 3 of 3) sorted by relevance
/linux/drivers/tty/ |
H A D | tty_ldsem.c | 4898e640caf03fdbaf2122d5a33949bf3e4a5b34 Tue Apr 16 12:15:50 CEST 2013 Peter Hurley <peter@hurleysoftware.com> tty: Add timed, writer-prioritized rw semaphore
The semantics of a rw semaphore are almost ideally suited for tty line discipline lifetime management; multiple active threads obtain "references" (read locks) while performing i/o to prevent the loss or change of the current line discipline (write lock).
Unfortunately, the existing rw_semaphore is ill-suited in other ways; 1) TIOCSETD ioctl (change line discipline) expects to return an error if the line discipline cannot be exclusively locked within 5 secs. Lock wait timeouts are not supported by rwsem. 2) A tty hangup is expected to halt and scrap pending i/o, so exclusive locking must be prioritized. Writer priority is not supported by rwsem.
Add ld_semaphore which implements these requirements in a semantically similar way to rw_semaphore.
Writer priority is handled by separate wait lists for readers and writers. Pending write waits are priortized before existing read waits and prevent further read locks.
Wait timeouts are trivially added, but obviously change the lock semantics as lock attempts can fail (but only due to timeout).
This implementation incorporates the write-lock stealing work of Michel Lespinasse <walken@google.com>.
Cc: Michel Lespinasse <walken@google.com> Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
H A D | Makefile | diff 4898e640caf03fdbaf2122d5a33949bf3e4a5b34 Tue Apr 16 12:15:50 CEST 2013 Peter Hurley <peter@hurleysoftware.com> tty: Add timed, writer-prioritized rw semaphore
The semantics of a rw semaphore are almost ideally suited for tty line discipline lifetime management; multiple active threads obtain "references" (read locks) while performing i/o to prevent the loss or change of the current line discipline (write lock).
Unfortunately, the existing rw_semaphore is ill-suited in other ways; 1) TIOCSETD ioctl (change line discipline) expects to return an error if the line discipline cannot be exclusively locked within 5 secs. Lock wait timeouts are not supported by rwsem. 2) A tty hangup is expected to halt and scrap pending i/o, so exclusive locking must be prioritized. Writer priority is not supported by rwsem.
Add ld_semaphore which implements these requirements in a semantically similar way to rw_semaphore.
Writer priority is handled by separate wait lists for readers and writers. Pending write waits are priortized before existing read waits and prevent further read locks.
Wait timeouts are trivially added, but obviously change the lock semantics as lock attempts can fail (but only due to timeout).
This implementation incorporates the write-lock stealing work of Michel Lespinasse <walken@google.com>.
Cc: Michel Lespinasse <walken@google.com> Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
/linux/include/linux/ |
H A D | tty_ldisc.h | diff 4898e640caf03fdbaf2122d5a33949bf3e4a5b34 Tue Apr 16 12:15:50 CEST 2013 Peter Hurley <peter@hurleysoftware.com> tty: Add timed, writer-prioritized rw semaphore
The semantics of a rw semaphore are almost ideally suited for tty line discipline lifetime management; multiple active threads obtain "references" (read locks) while performing i/o to prevent the loss or change of the current line discipline (write lock).
Unfortunately, the existing rw_semaphore is ill-suited in other ways; 1) TIOCSETD ioctl (change line discipline) expects to return an error if the line discipline cannot be exclusively locked within 5 secs. Lock wait timeouts are not supported by rwsem. 2) A tty hangup is expected to halt and scrap pending i/o, so exclusive locking must be prioritized. Writer priority is not supported by rwsem.
Add ld_semaphore which implements these requirements in a semantically similar way to rw_semaphore.
Writer priority is handled by separate wait lists for readers and writers. Pending write waits are priortized before existing read waits and prevent further read locks.
Wait timeouts are trivially added, but obviously change the lock semantics as lock attempts can fail (but only due to timeout).
This implementation incorporates the write-lock stealing work of Michel Lespinasse <walken@google.com>.
Cc: Michel Lespinasse <walken@google.com> Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|