Changeset 119bced in rtems


Ignore:
Timestamp:
May 22, 1998, 2:51:11 PM (22 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
9cc86e2
Parents:
e2476ed4
Message:

Added tcdrain(), cfgetospeed(0, cfsetospeed(), cfgetispeed(), and
cfsetispeed().

Files:
4 added
4 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/libcsupport/src/termios.c

    re2476ed4 r119bced  
    298298}
    299299
     300/*
     301 * Drain output queue
     302 */
     303static void
     304drainOutput (struct rtems_termios_tty *tty)
     305{
     306        rtems_interrupt_level level;
     307        rtems_status_code sc;
     308
     309        if (tty->device.outputUsesInterrupts) {
     310                rtems_interrupt_disable (level);
     311                while (tty->rawOutBufTail != tty->rawOutBufHead) {
     312                        tty->rawOutBufState = rob_wait;
     313                        rtems_interrupt_enable (level);
     314                        sc = rtems_semaphore_obtain (tty->rawOutBufSemaphore,
     315                                                        RTEMS_WAIT,
     316                                                        RTEMS_NO_TIMEOUT);
     317                        if (sc != RTEMS_SUCCESSFUL)
     318                                rtems_fatal_error_occurred (sc);
     319                        rtems_interrupt_disable (level);
     320                }
     321                rtems_interrupt_enable (level);
     322        }
     323}
     324
    300325rtems_status_code
    301326rtems_termios_close (void *arg)
     
    309334                rtems_fatal_error_occurred (sc);
    310335        if (--tty->refcount == 0) {
     336                drainOutput (tty);
    311337                if (tty->device.lastClose)
    312338                         (*tty->device.lastClose)(tty->major, tty->minor, arg);
     
    384410                if (tty->device.setAttributes)
    385411                        (*tty->device.setAttributes)(tty->minor, &tty->termios);
     412                break;
     413
     414        case RTEMS_IO_TCDRAIN:
     415                drainOutput (tty);
    386416                break;
    387417        }
  • c/src/lib/libc/tcattr.c

    re2476ed4 r119bced  
    3838}
    3939
    40 int
    41 tcdrain(int fd)
    42 {
    43         return __rtems_ioctl(fd,RTEMS_IO_TCDRAIN,0);
    44 }
    45 
    4640#endif
  • c/src/lib/libc/termios.c

    re2476ed4 r119bced  
    298298}
    299299
     300/*
     301 * Drain output queue
     302 */
     303static void
     304drainOutput (struct rtems_termios_tty *tty)
     305{
     306        rtems_interrupt_level level;
     307        rtems_status_code sc;
     308
     309        if (tty->device.outputUsesInterrupts) {
     310                rtems_interrupt_disable (level);
     311                while (tty->rawOutBufTail != tty->rawOutBufHead) {
     312                        tty->rawOutBufState = rob_wait;
     313                        rtems_interrupt_enable (level);
     314                        sc = rtems_semaphore_obtain (tty->rawOutBufSemaphore,
     315                                                        RTEMS_WAIT,
     316                                                        RTEMS_NO_TIMEOUT);
     317                        if (sc != RTEMS_SUCCESSFUL)
     318                                rtems_fatal_error_occurred (sc);
     319                        rtems_interrupt_disable (level);
     320                }
     321                rtems_interrupt_enable (level);
     322        }
     323}
     324
    300325rtems_status_code
    301326rtems_termios_close (void *arg)
     
    309334                rtems_fatal_error_occurred (sc);
    310335        if (--tty->refcount == 0) {
     336                drainOutput (tty);
    311337                if (tty->device.lastClose)
    312338                         (*tty->device.lastClose)(tty->major, tty->minor, arg);
     
    384410                if (tty->device.setAttributes)
    385411                        (*tty->device.setAttributes)(tty->minor, &tty->termios);
     412                break;
     413
     414        case RTEMS_IO_TCDRAIN:
     415                drainOutput (tty);
    386416                break;
    387417        }
  • cpukit/libcsupport/src/termios.c

    re2476ed4 r119bced  
    298298}
    299299
     300/*
     301 * Drain output queue
     302 */
     303static void
     304drainOutput (struct rtems_termios_tty *tty)
     305{
     306        rtems_interrupt_level level;
     307        rtems_status_code sc;
     308
     309        if (tty->device.outputUsesInterrupts) {
     310                rtems_interrupt_disable (level);
     311                while (tty->rawOutBufTail != tty->rawOutBufHead) {
     312                        tty->rawOutBufState = rob_wait;
     313                        rtems_interrupt_enable (level);
     314                        sc = rtems_semaphore_obtain (tty->rawOutBufSemaphore,
     315                                                        RTEMS_WAIT,
     316                                                        RTEMS_NO_TIMEOUT);
     317                        if (sc != RTEMS_SUCCESSFUL)
     318                                rtems_fatal_error_occurred (sc);
     319                        rtems_interrupt_disable (level);
     320                }
     321                rtems_interrupt_enable (level);
     322        }
     323}
     324
    300325rtems_status_code
    301326rtems_termios_close (void *arg)
     
    309334                rtems_fatal_error_occurred (sc);
    310335        if (--tty->refcount == 0) {
     336                drainOutput (tty);
    311337                if (tty->device.lastClose)
    312338                         (*tty->device.lastClose)(tty->major, tty->minor, arg);
     
    384410                if (tty->device.setAttributes)
    385411                        (*tty->device.setAttributes)(tty->minor, &tty->termios);
     412                break;
     413
     414        case RTEMS_IO_TCDRAIN:
     415                drainOutput (tty);
    386416                break;
    387417        }
Note: See TracChangeset for help on using the changeset viewer.