|
@@ -70,21 +70,23 @@ int tcflush ( int fd, int queue_selector)
|
|
|
|
|
|
int tcsendbreak( int fd, int duration)
|
|
|
{
|
|
|
-
|
|
|
- * The break lasts 0.25 to 0.5 seconds if DURATION is zero, and an
|
|
|
- * implementation-defined period if DURATION is nonzero. We define a
|
|
|
- * positive DURATION to be number of milliseconds to break.
|
|
|
- */
|
|
|
+
|
|
|
+ and an implementation-defined period if DURATION is nonzero.
|
|
|
+ We define a positive DURATION to be number of milliseconds to break. */
|
|
|
if (duration <= 0)
|
|
|
return ioctl(fd, TCSBRK, 0);
|
|
|
|
|
|
-
|
|
|
- * ioctl can't send a break of any other duration for us. This could be
|
|
|
- * changed to use trickery (e.g. lower speed and send a '\0') to send
|
|
|
- * the break, but for now just return an error.
|
|
|
- */
|
|
|
- __set_errno(EINVAL);
|
|
|
+#ifdef TCSBRKP
|
|
|
+
|
|
|
+ defined to be the number of 100ms units to break. */
|
|
|
+ return ioctl(fd, TCSBRKP, (duration + 99) / 100);
|
|
|
+#else
|
|
|
+
|
|
|
+ This could be changed to use trickery (e.g. lower speed and
|
|
|
+ send a '\0') to send the break, but for now just return an error. */
|
|
|
+ __set_errno (EINVAL);
|
|
|
return -1;
|
|
|
+#endif
|
|
|
}
|
|
|
#endif
|
|
|
|