--- linux_ioctl.orig    2012-08-06 01:54:33.000000000 +0200
+++ linux_ioctl.c       2012-10-25 13:59:12.000000000 +0200
@@ -778,8 +778,26 @@
                    td));
                break;

-       /* LINUX_TCSBRK */
-
+       case LINUX_TCSBRK:
+               if (args->arg)
+                   {
+                       args->cmd = TIOCDRAIN;
+                       error = (sys_ioctl(td, (struct ioctl_args *)args));
+                       break;
+                   }
+               else
+                   {
+                       if ((error = fo_ioctl(fp, TIOCSBRK, NULL, td->td_ucred, td)) != 0)
+                           break;
+                       error = tsleep(&args->arg, PZERO | PCATCH, "linux_tcsbrk", hz / 4);
+                       if (error == EINTR || error == ERESTART) {
+                           fo_ioctl(fp, TIOCCBRK, NULL, td->td_ucred, td);
+                           error = EINTR;
+                       } else
+                           error = fo_ioctl (fp, TIOCCBRK, NULL, td->td_ucred, td);
+                       break;
+                   }
+
        case LINUX_TCXONC: {
                switch (args->arg) {
                case LINUX_TCOOFF:
