Paul Koning wrote:
"Johnny" == Johnny Billquist <bqt at softjar.se> writes:
Johnny> Paul Koning wrote:
> There is an "assign" syscall (which
normally in RSTS means
> "reserve this device for me even when it's not open") which binds
> a ddcmp driver pseudo-device unit to a tty device unit number, via
> a syscall parameter. So you could have, say, up to 8 ddcmp ports,
> and those could be bound at runtime to any of your terminal ports.
Johnny>
Way nice. In RSX, you need to reserve the whole controller at
Johnny> netgen, and no ports can be used by anything else than DECnet
Johnny> if you set it up. DECnet/RSX has its own device driver for
Johnny> the serial port cards.
For RSTS it's a connection from the regular terminal driver to the
DDCMP driver, which acts as a sort of coprocessor.
Linux has the same notion; it's called "line discipline" if I remember
right, and is nicely modular. That's where DDCMP would go if one were
to do it for Linux.
They could have done it like that in RSX as well, but I guess they didn't want the
performance penalty.
Atleast in RSX, the terminal driver is rather complex. And while a lot of that complexity
can be bypassed, it's still a lot of overhead. Also, it's kindof tricky to call a
device driver from kernel mode. Easiest is to pass a request to a task, which then do the
I/O, but that implies a lot of extra overhead as well.
So DECnet in RSX have it's own device drivers for all interfaces that it uses, and so
every interface have to be dedicated to just DECnet if DECnet would use it.
Johnny