From f8764892776479c15cdb37f40905074f067c5ce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 5 Oct 2004 13:47:11 +0000 Subject: [PATCH] Added support for changing the access mode using ioctl() and B_SET_(NON)BLOCKING_IO. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9204 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/tty/master.cpp | 15 ++++++++++++++- src/add-ons/kernel/drivers/tty/slave.cpp | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/drivers/tty/master.cpp b/src/add-ons/kernel/drivers/tty/master.cpp index 8ee58c3ef7..c33321bc85 100644 --- a/src/add-ons/kernel/drivers/tty/master.cpp +++ b/src/add-ons/kernel/drivers/tty/master.cpp @@ -104,7 +104,20 @@ master_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) master_cookie *cookie = (master_cookie *)_cookie; TRACE(("master_ioctl: cookie %p, op %lu, buffer %p, length %lu\n", _cookie, op, buffer, length)); - return tty_ioctl(cookie->tty, op, buffer, length); + + switch (op) { + case B_SET_BLOCKING_IO: + cookie->open_mode &= ~O_NONBLOCK; + break; + case B_SET_NONBLOCKING_IO: + cookie->open_mode |= O_NONBLOCK; + break; + + default: + return tty_ioctl(cookie->tty, op, buffer, length); + } + + return B_OK; } diff --git a/src/add-ons/kernel/drivers/tty/slave.cpp b/src/add-ons/kernel/drivers/tty/slave.cpp index 01360f8654..c7a56f1a5a 100644 --- a/src/add-ons/kernel/drivers/tty/slave.cpp +++ b/src/add-ons/kernel/drivers/tty/slave.cpp @@ -96,7 +96,20 @@ slave_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) slave_cookie *cookie = (slave_cookie *)_cookie; TRACE(("slave_ioctl: cookie %p, op %lu, buffer %p, length %lu\n", _cookie, op, buffer, length)); - return tty_ioctl(cookie->tty, op, buffer, length); + + switch (op) { + case B_SET_BLOCKING_IO: + cookie->open_mode &= ~O_NONBLOCK; + break; + case B_SET_NONBLOCKING_IO: + cookie->open_mode |= O_NONBLOCK; + break; + + default: + return tty_ioctl(cookie->tty, op, buffer, length); + } + + return B_OK; }