diff options
Diffstat (limited to 'slowbaud.rst')
-rw-r--r-- | slowbaud.rst | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/slowbaud.rst b/slowbaud.rst index bc6eb5a..c043807 100644 --- a/slowbaud.rst +++ b/slowbaud.rst @@ -119,40 +119,6 @@ I/O is done with byte granularity. For calculation purposes, simulates "8-N-1": one start bit, 8 data bits, no parity, and 1 stop bit (total of 10 bits per byte). -The timing code works by calculating how long to sleep after each -character (in microseconds), but actually sleeping slightly less -than that, then busy-waiting until the rest of the interval expires. -At slower bitrates, this works well, and the CPU overhead is barely -noticeable (at least on reasonably fast modern systems). - -Timing accuracy depends on your OS, kernel config (HZ and/or NO_HZ -on Linux), and system load. Also on the amount of data, since the -timing loop is self-regulating (the first few bytes will have less -accurate timing than later ones). No "fancy" techniques like realtime -scheduling or hardware event timers are used. At bitrates up to -115200, on an unloaded Linux system, the timing should be at least -99.9% accurate. At higher bitrates, accuracy will decrease. - -Timing is more accurate on Linux than OSX. It's done with getitimer() -and sigwait(). This works out to be slightly more accurate than -using usleep() on both Linux and OSX. It would be possible to use -the realtime timer_create() and clock_gettime() API on Linux, for -possibly even better accuracy, but OSX doesn't have these (and I want to be -portable). On an unloaded OSX system, the accuracy gets steadily worse -as you go above 57600bps. There's also more CPU overhead on OSX. - -If this were a truly useful application, it would be worth trying to -increase accuracy further, with realtime process scheduling. I didn't -do this because slowbaud is just a toy, and because the RT stuff tends -to be unportable and require elevated privileges (root, or something -like setrtlimit or extended filesystem attributes to manage capabilities). - -About the name... I'm aware that "baud" is not synonymous with bps. I -just think "slowbaud" sounds better than "slowbps", as a name. Anyway -the stty command on both Linux and OSX misuses the term ("speed -38400 baud"), as well as the man page for termios(3), so I'm in good -company. - BUGS ==== |