Andreas Kling
027d26cd5d
Add a String::format() and use that in place of ksprintf() in the Kernel.
...
You're never gonna be right 100% of the time when guessing how much buffer
space you need. This avoids having to make that type of decision in a bunch
of cases. :^)
2019-01-30 16:28:51 +01:00
Andreas Kling
e9b948103d
Add a /dev/pts filesystem and make PTY allocation dynamic.
...
You can now open as many PTY pairs as you like. Well, it's actually capped
at 8 for now, but it's just a constant and trivial to change.
Unregistering a PTY pair is untested because I didn't want to start
mucking with that in Terminal right now.
2019-01-30 00:49:20 +01:00
Andreas Kling
b896d4b237
PTY: Disallow infinite writing to slaves.
...
This way we don't buffer ungodly amounts of output in the kernel when doing
e.g "cat /dev/random" on a PTY.
2019-01-25 00:13:54 +01:00
Andreas Kling
ccf3fc4618
TTY: MasterPTY's are always writable when open.
...
This should probably have some limitations eventually, but for now let's just
say we always accept data for shoveling over to SlavePTY.
2019-01-24 21:23:46 +01:00
Andreas Kling
310a5f4199
Let each MasterPTY create its slave.
2019-01-16 02:11:50 +01:00
Andreas Kling
bd3e77cc16
Pass the process to CharacterDevice::read/write.
...
This is much nicer than grabbing directly at 'current' inside a read().
2019-01-16 00:20:38 +01:00
Andreas Kling
08bfe518f9
Rename CharacterDevice::has_data_available_for_reading() -> can_read().
2019-01-16 00:10:13 +01:00
Andreas Kling
e452303c66
Allow character devices to block write attempts until there is more space.
2019-01-15 09:17:22 +01:00
Andreas Kling
2f74c2f430
Add basic PTY support.
...
For now, there are four hard-coded PTYs: /dev/pt{m,s}[0123]
Use this in the Terminal to open a pty pair and spawn a shell.
2019-01-15 06:30:19 +01:00