linux/drivers/tty/tty_ioctl.c
<<
>>
Prefs
   1/*
   2 *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
   3 *
   4 * Modified by Fred N. van Kempen, 01/29/93, to add line disciplines
   5 * which can be dynamically activated and de-activated by the line
   6 * discipline handling modules (like SLIP).
   7 */
   8
   9#include <linux/types.h>
  10#include <linux/termios.h>
  11#include <linux/errno.h>
  12#include <linux/sched.h>
  13#include <linux/kernel.h>
  14#include <linux/major.h>
  15#include <linux/tty.h>
  16#include <linux/fcntl.h>
  17#include <linux/string.h>
  18#include <linux/mm.h>
  19#include <linux/module.h>
  20#include <linux/bitops.h>
  21#include <linux/mutex.h>
  22#include <linux/compat.h>
  23
  24#include <asm/io.h>
  25#include <asm/uaccess.h>
  26
  27#undef TTY_DEBUG_WAIT_UNTIL_SENT
  28
  29#undef  DEBUG
  30
  31/*
  32 * Internal flag options for termios setting behavior
  33 */
  34#define TERMIOS_FLUSH   1
  35#define TERMIOS_WAIT    2
  36#define TERMIOS_TERMIO  4
  37#define TERMIOS_OLD     8
  38
  39
  40/**
  41 *      tty_chars_in_buffer     -       characters pending
  42 *      @tty: terminal
  43 *
  44 *      Return the number of bytes of data in the device private
  45 *      output queue. If no private method is supplied there is assumed
  46 *      to be no queue on the device.
  47 */
  48
  49int tty_chars_in_buffer(struct tty_struct *tty)
  50{
  51        if (tty->ops->chars_in_buffer)
  52                return tty->ops->chars_in_buffer(tty);
  53        else
  54                return 0;
  55}
  56EXPORT_SYMBOL(tty_chars_in_buffer);
  57
  58/**
  59 *      tty_write_room          -       write queue space
  60 *      @tty: terminal
  61 *
  62 *      Return the number of bytes that can be queued to this device
  63 *      at the present time. The result should be treated as a guarantee
  64 *      and the driver cannot offer a value it later shrinks by more than
  65 *      the number of bytes written. If no method is provided 2K is always
  66 *      returned and data may be lost as there will be no flow control.
  67 */
  68 
  69int tty_write_room(struct tty_struct *tty)
  70{
  71        if (tty->ops->write_room)
  72                return tty->ops->write_room(tty);
  73        return 2048;
  74}
  75EXPORT_SYMBOL(tty_write_room);
  76
  77/**
  78 *      tty_driver_flush_buffer -       discard internal buffer
  79 *      @tty: terminal
  80 *
  81 *      Discard the internal output buffer for this device. If no method
  82 *      is provided then either the buffer cannot be hardware flushed or
  83 *      there is no buffer driver side.
  84 */
  85void tty_driver_flush_buffer(struct tty_struct *tty)
  86{
  87        if (tty->ops->flush_buffer)
  88                tty->ops->flush_buffer(tty);
  89}
  90EXPORT_SYMBOL(tty_driver_flush_buffer);
  91
  92/**
  93 *      tty_throttle            -       flow control
  94 *      @tty: terminal
  95 *
  96 *      Indicate that a tty should stop transmitting data down the stack.
  97 *      Takes the termios mutex to protect against parallel throttle/unthrottle
  98 *      and also to ensure the driver can consistently reference its own
  99 *      termios data at this point when implementing software flow control.
 100 */
 101
 102void tty_throttle(struct tty_struct *tty)
 103{
 104        mutex_lock(&tty->termios_mutex);
 105        /* check TTY_THROTTLED first so it indicates our state */
 106        if (!test_and_set_bit(TTY_THROTTLED, &tty->flags) &&
 107            tty->ops->throttle)
 108                tty->ops->throttle(tty);
 109        mutex_unlock(&tty->termios_mutex);
 110}
 111EXPORT_SYMBOL(tty_throttle);
 112
 113/**
 114 *      tty_unthrottle          -       flow control
 115 *      @tty: terminal
 116 *
 117 *      Indicate that a tty may continue transmitting data down the stack.
 118 *      Takes the termios mutex to protect against parallel throttle/unthrottle
 119 *      and also to ensure the driver can consistently reference its own
 120 *      termios data at this point when implementing software flow control.
 121 *
 122 *      Drivers should however remember that the stack can issue a throttle,
 123 *      then change flow control method, then unthrottle.
 124 */
 125
 126void tty_unthrottle(struct tty_struct *tty)
 127{
 128        mutex_lock(&tty->termios_mutex);
 129        if (test_and_clear_bit(TTY_THROTTLED, &tty->flags) &&
 130            tty->ops->unthrottle)
 131                tty->ops->unthrottle(tty);
 132        mutex_unlock(&tty->termios_mutex);
 133}
 134EXPORT_SYMBOL(tty_unthrottle);
 135
 136/**
 137 *      tty_wait_until_sent     -       wait for I/O to finish
 138 *      @tty: tty we are waiting for
 139 *      @timeout: how long we will wait
 140 *
 141 *      Wait for characters pending in a tty driver to hit the wire, or
 142 *      for a timeout to occur (eg due to flow control)
 143 *
 144 *      Locking: none
 145 */
 146
 147void tty_wait_until_sent(struct tty_struct *tty, long timeout)
 148{
 149#ifdef TTY_DEBUG_WAIT_UNTIL_SENT
 150        char buf[64];
 151
 152        printk(KERN_DEBUG "%s wait until sent...\n", tty_name(tty, buf));
 153#endif
 154        if (!timeout)
 155                timeout = MAX_SCHEDULE_TIMEOUT;
 156        if (wait_event_interruptible_timeout(tty->write_wait,
 157                        !tty_chars_in_buffer(tty), timeout) >= 0) {
 158                if (tty->ops->wait_until_sent)
 159                        tty->ops->wait_until_sent(tty, timeout);
 160        }
 161}
 162EXPORT_SYMBOL(tty_wait_until_sent);
 163
 164
 165/*
 166 *              Termios Helper Methods
 167 */
 168
 169static void unset_locked_termios(struct ktermios *termios,
 170                                 struct ktermios *old,
 171                                 struct ktermios *locked)
 172{
 173        int     i;
 174
 175#define NOSET_MASK(x, y, z) (x = ((x) & ~(z)) | ((y) & (z)))
 176
 177        if (!locked) {
 178                printk(KERN_WARNING "Warning?!? termios_locked is NULL.\n");
 179                return;
 180        }
 181
 182        NOSET_MASK(termios->c_iflag, old->c_iflag, locked->c_iflag);
 183        NOSET_MASK(termios->c_oflag, old->c_oflag, locked->c_oflag);
 184        NOSET_MASK(termios->c_cflag, old->c_cflag, locked->c_cflag);
 185        NOSET_MASK(termios->c_lflag, old->c_lflag, locked->c_lflag);
 186        termios->c_line = locked->c_line ? old->c_line : termios->c_line;
 187        for (i = 0; i < NCCS; i++)
 188                termios->c_cc[i] = locked->c_cc[i] ?
 189                        old->c_cc[i] : termios->c_cc[i];
 190        /* FIXME: What should we do for i/ospeed */
 191}
 192
 193/*
 194 * Routine which returns the baud rate of the tty
 195 *
 196 * Note that the baud_table needs to be kept in sync with the
 197 * include/asm/termbits.h file.
 198 */
 199static const speed_t baud_table[] = {
 200        0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
 201        9600, 19200, 38400, 57600, 115200, 230400, 460800,
 202#ifdef __sparc__
 203        76800, 153600, 307200, 614400, 921600
 204#else
 205        500000, 576000, 921600, 1000000, 1152000, 1500000, 2000000,
 206        2500000, 3000000, 3500000, 4000000
 207#endif
 208};
 209
 210#ifndef __sparc__
 211static const tcflag_t baud_bits[] = {
 212        B0, B50, B75, B110, B134, B150, B200, B300, B600,
 213        B1200, B1800, B2400, B4800, B9600, B19200, B38400,
 214        B57600, B115200, B230400, B460800, B500000, B576000,
 215        B921600, B1000000, B1152000, B1500000, B2000000, B2500000,
 216        B3000000, B3500000, B4000000
 217};
 218#else
 219static const tcflag_t baud_bits[] = {
 220        B0, B50, B75, B110, B134, B150, B200, B300, B600,
 221        B1200, B1800, B2400, B4800, B9600, B19200, B38400,
 222        B57600, B115200, B230400, B460800, B76800, B153600,
 223        B307200, B614400, B921600
 224};
 225#endif
 226
 227static int n_baud_table = ARRAY_SIZE(baud_table);
 228
 229/**
 230 *      tty_termios_baud_rate
 231 *      @termios: termios structure
 232 *
 233 *      Convert termios baud rate data into a speed. This should be called
 234 *      with the termios lock held if this termios is a terminal termios
 235 *      structure. May change the termios data. Device drivers can call this
 236 *      function but should use ->c_[io]speed directly as they are updated.
 237 *
 238 *      Locking: none
 239 */
 240
 241speed_t tty_termios_baud_rate(struct ktermios *termios)
 242{
 243        unsigned int cbaud;
 244
 245        cbaud = termios->c_cflag & CBAUD;
 246
 247#ifdef BOTHER
 248        /* Magic token for arbitrary speed via c_ispeed/c_ospeed */
 249        if (cbaud == BOTHER)
 250                return termios->c_ospeed;
 251#endif
 252        if (cbaud & CBAUDEX) {
 253                cbaud &= ~CBAUDEX;
 254
 255                if (cbaud < 1 || cbaud + 15 > n_baud_table)
 256                        termios->c_cflag &= ~CBAUDEX;
 257                else
 258                        cbaud += 15;
 259        }
 260        return baud_table[cbaud];
 261}
 262EXPORT_SYMBOL(tty_termios_baud_rate);
 263
 264/**
 265 *      tty_termios_input_baud_rate
 266 *      @termios: termios structure
 267 *
 268 *      Convert termios baud rate data into a speed. This should be called
 269 *      with the termios lock held if this termios is a terminal termios
 270 *      structure. May change the termios data. Device drivers can call this
 271 *      function but should use ->c_[io]speed directly as they are updated.
 272 *
 273 *      Locking: none
 274 */
 275
 276speed_t tty_termios_input_baud_rate(struct ktermios *termios)
 277{
 278#ifdef IBSHIFT
 279        unsigned int cbaud = (termios->c_cflag >> IBSHIFT) & CBAUD;
 280
 281        if (cbaud == B0)
 282                return tty_termios_baud_rate(termios);
 283
 284        /* Magic token for arbitrary speed via c_ispeed*/
 285        if (cbaud == BOTHER)
 286                return termios->c_ispeed;
 287
 288        if (cbaud & CBAUDEX) {
 289                cbaud &= ~CBAUDEX;
 290
 291                if (cbaud < 1 || cbaud + 15 > n_baud_table)
 292                        termios->c_cflag &= ~(CBAUDEX << IBSHIFT);
 293                else
 294                        cbaud += 15;
 295        }
 296        return baud_table[cbaud];
 297#else
 298        return tty_termios_baud_rate(termios);
 299#endif
 300}
 301EXPORT_SYMBOL(tty_termios_input_baud_rate);
 302
 303/**
 304 *      tty_termios_encode_baud_rate
 305 *      @termios: ktermios structure holding user requested state
 306 *      @ispeed: input speed
 307 *      @ospeed: output speed
 308 *
 309 *      Encode the speeds set into the passed termios structure. This is
 310 *      used as a library helper for drivers so that they can report back
 311 *      the actual speed selected when it differs from the speed requested
 312 *
 313 *      For maximal back compatibility with legacy SYS5/POSIX *nix behaviour
 314 *      we need to carefully set the bits when the user does not get the
 315 *      desired speed. We allow small margins and preserve as much of possible
B250000000" class="sref">B25000"sr href="a hreft 217};
 *
 218#else
<3 href31mment"> *      Locking: none
 219static 3onst 31mment"> *      with the termios lockt gehreftaterminause ->sted 220       3 *
 221       3 *      the actual speed selTf="aIBSHslloy wIX *nplatthem notose ownequeef=e yeo floref="d 222       3 *      for a timeout to occ of wirveervego away onceerminainadonrivers/tty/tty_ioctl.c#L198" id="L198" class3"line" na3e="L223"> 223       3 *      For maximal baivers/tty/tty_ioctl.c#L285" id="L285" class3"line" na3e="L224"> 224};
 225#endif
3a hre3="drivtty_wait_until_sent" clarate
ktermios *termios,
 226
">speed_t speed_t  227static 3nt  228
> = 0;  229>found];
oldfound];
 230>close];
];
oldclose];
];
 231>ba hre];
 232 233obaud];
/* Magic token for arbiCDal.oppmalllllllllllllaivers/tty/tty_ioctl.c#L285" id="L285" class3"line" na3e="L234"> 234];
/* Magic token for arbiClear idrivwith thsuestaivers/tty/tty_ioctl.c#L285" id="L285" class3"line" na3e="L235"> 235 236termios->c>c_ispeed;
];
 237termios->c>c_ospeed;
];
 238 239BOTHER
 240
/* FIXME: What should wIfet the 241 *      the actual spppppppppppanswrriwIfet typas 242{
 *      for a timeoutttttttttttdigesttatenon-exaermreplieeportfuzz c bittaivers/tty/tty_ioctl.c#L285" id="L285" class3"line" na3e="L243"> 243       3unsig34rs/tty/tty_ioctl.c#L284" id="L284" class3"line" na3e="L244"> 244
termios->c_cflag >> CBAUD;
BOTHER)
 245       3 246
termios->c_cflag >> IBSHIFT) & CBAUD;
BOTHER)
 247#ifdef 3a hre34 else
>close];
 248       3termios->c_cflag >> IBSHIFT) & CBAUD;
 249       3if (<34 >ba hre];
/* FIXME: What should wAn 250       3     3  retuers/tty/tty_ioctl.c#L300" id="L300" class="line" na3e="L251"> 251#endif
3a hre35="+code=B1200" class="sref">">termios->c_cflag &= ~CBA;
 252       3if (<35rs/tty/tty_ioctl.c#L303" id="L303" class="line" na3e="L253"> 253       3     3  /*
 254
 *      we need to caaaaaaaaa to occOur goalainaithfind c closepmatch s strucstandarala speed. vers/tty/tty_ioctl.c#L194" id="L194" class3"line" na3e="L255"> 255       3     35mment"> *      desired speedaaaaaaaa to occe=tty_arginalke tty
 256       3     35>B250000000" class="sref">B2aaaaaaaa to occmatch st gea href="dri
 257       3     35mment"> *
 258       3     35mment"> *      Locking: noneaaaaaaaa ivers/tty/tty_ioctl.c#L249" id="L249" class3"line" na3e="L259"> 259       3}
 260       3retur3  261}
obaud];
baud_table[>] :  262obaud];
baud_table[>] :  263
">termios->c_cflag &= ~aud_bits[] = {
>] :  264dfound];
>] :  265 266ibaud];
baud_table[>] :  267ibaud];
baud_table[>] :  268/* FIXME: What should wpati/spacas="a href==
 269 *      with the termmmmmmmmmmmmmmmmmmmmmmmmmmmifet the 270dfound];
>] : >ba hre];
 271ifound];
>] :  272IBSHIFT
 273 274ifound];
>] :  275
">termios->c_cflag &= ~aud_bits[] = {
>] : IBSHIFT);
 276 277{
 278#ifdef 3a hre37          279       3unsig3ed int >] : n_baud_table)
 280
 281       3if (<3 href="+code=c">/*
 282       3     38mment"> *      for a timeouttttttttt to occIauwerfound nocmatch st ge dir"driveobauprovided atiwarnvers/tty/tty_ioctl.c#L194" id="L194" class3"line" na3e="L283"> 283
 *      For maximal btttttttt to occt the 284       3 *      we need to caaaaaaaaa ivers/tty/tty_ioctl.c#L249" id="L249" class3"line" na3e="L285"> 285       3if (<3 href=e=BOTHER" class="sref">BOTHER
 286       3     386dfound];
 287
">termios->c_cflag &= ~BOTHER
 288       3if (<38lass="comment">/* Magic token for arbiS usexaerma hrefoes nonlymifet tha href of  289       3     38mment"> *      with the termmmmmmmmmmme 290
ifound];
ibaud];
];
>ba hre];
 291       3     3  if (">termios->c_cflag &= ~IBSHIFT);
 292       3     3      rs/tty/tty_ioctl.c#L298" id="L298" class3"line" na3e="L293"> 293       3     39 ifound];
dfound];
 294       3     3          printk_once];
KERN_WARNING];
 *      witstring">"="L: Unt in toie=tty_tcorpdat "vers/tty/tty_ioctl.c#L249" id="L249" class3"line" na3e="L295"> 295       3}
 *      witstring">"ey are is sas youa c_chiteequestnssed ref="ing.\n"vers/tttty/tty_ioctl.c#L293" id="L293" class3"line" na3e="L296"> 296       3retur3  297#else
<3 href39"drivers/tty/tty_ioctl.c#L208" id="L208" class3"line" na3e="L298"> 298       3retur3  299#endif
3a hre3="driv" class="sref"> href="+code=_GPRT_SYMBOL(tclarate
 300}
 301 *      the actual sdrivers/tty/tty_ioctl.c#L304" id="L304" class4"line" na4e="L302"> 302
 *      for a timeout to occ="L3an>
 293       4ass="4omment">/**
 304 *      tty_termios_encode_b@odrn>
 295       4ass="4omment"> *      @termios: ktervers/tty/tty_ioctl.c#L194" id="L194" class4"6ine" na4e="L296"> 296       4ass="4omment"> *      @ispeed: input speedUef="d 307 *      @ospeed: output speee u"ings.lTf="c="drrimustded sf ice driver_mutexpvia ef="="Lcinvers/tty/tty_ioctl.c#L194" id="L194" class4"line" na4e="L308"> 308 *
 309 *      Encode the speivers/tty/tty_ioctl.c#L249" id="L249" class4"line" na4e="L310"> 310 311
speed_t speed_t  312 313)an>
termios,
 314 315 href="+code=_GPRT_SYMBOL(tclaan>
 217};
 *
 218#else
<4 href41mment"> *      Locking: none="L3get href="drimide=cb-cbaudivef="d"Lcbitt"dri"drrs/tty/tty_ioctl.c#L249" id="L249" class4"line" na4e="L219"> 219static 4onst 41mment"> *      with the termios loc@="L: d"Lctoief=rLvers/tty/tty_ioctl.c#L304" id="L304" class4"line" na4e="L220"> 220       4 *
 221       4 *      the actual speed selR=tty_se tty
 222       4 *      for a timeout to occ this termiosmustdbes is abyi/spaca"drri of  ice driva hrbitvers/tty/tty_ioctl.c#L141" id="L141" class4"line" na4e="L223"> 223       4 *      For maximal bato occhrefs maydbesref="drivers/tty/tty_ioctl.c#L272" id="L272" class4"line" na4e="L224"> 224};
 *      tty_termios_envers/tty/tty_ioctl.c#L272" id="L272" class4"line" na4e="L225"> 225#endif
4a hre42mment"> *      desired speed. We al
 226
 *      @ispeed: inputivers/tty/tty_ioctl.c#L249" id="L249" class4"line" na4e="L227"> 227static 4nt  228
speed_t  229 230speed_t tty_termios_baud_rate(termios,
 231 232baud];
 233"tyermios_input_baud_a hrc_cflag" class="srefwarnspeed;
 234KERN_WARNING];
 *      witstring">"Us 235 *      witstring">"eeo SPD_*chrefs inadeposc="dr\n"vers/tttty/tty_ioctl.c#L293" id="L293" class4"line" na4e="L236"> 236 237 238];
 239 240
 241];
 242{
 243       4unsig44rs/tt" class="sref"> href="+code=T_SYMBOL(tclaget href="driermios_input_baud_rget href="drivecotty/tty_ioctl.c#L293" id="L293" class4"line" na4e="L244"> 244
 245       4 *      desired speedrivers/tty/tty_ioctl.c#L304" id="L304" class4"line" na4e="L246"> 246
 *      @ispeed: input speede( 247#ifdef 4a hre44mment"> *      @ospeed: output speednew: Newref="drivers/tty/tty_ioctl.c#L270" id="L270" class4"line" na4e="L248"> 248       4 *      Locking: none@old: O sf this tvers/tty/tty_ioctl.c#L270" id="L270" class4"line" na4e="L249"> 249       4if (<44mment"> *      with the termivers/tty/tty_ioctl.c#L270" id="L270" class4"line" na4e="L250"> 250       4     45mment"> *      used as a library hePropag="d 251#endif
4a hre45mment"> *      the actual speed selected sf this teer requests strucnewfonriref="dri lper inacas=tvers/tty/tty_ioctl.c#L270" id="L270" class4"line" na4e="L252"> 252       4if (<45mment"> *      for a timeout to occwherd
 253       4     45mment"> *      For maximal bato occinasompacas=scwherd 254
 *      we need to cativers/tty/tty_ioctl.c#L249" id="L249" class4"line" na4e="L255"> 255       4     45rs/tty/tty_ioctl.c#L276" id="L276" class4"line" na4e="L256"> 256       4     45>B250tty_wait_until_sent" clarate(ktermios *ktermios * 257       4     45ers/tty/tty_ioctl.c#L278" id="L278" class4"line" na4e="L258"> 258       4     45lass="comment">/* Magic token for arbiTr does na dumbadel thih ofdrscinasoftw 259       4}
 *      with the termmmmmmmmmmmuld lwaysuprovided beet  this temethoda ivers/tty/tty_ioctl.c#L249" id="L249" class4"line" na4e="L260"> 260       4retur460ref="+code=c00" class="srefnewios *c_cflag &= ~CREAA;
CLOCA=T_SYMBOL( 261}
newios *c_cflag &= ~];
c_cflag >> CREAA;
CLOCA=T_SYMBOL( 262newios *>c_ispeed;
];
>c_ispeed;
 263
>c_ospeed;
];
>c_ospeed;
 264 265 href="+code=T_SYMBOL(tclarate( 266 267 *
 268 *      Locking: none="L3>( 269 *      with the term@a:f this tvers/tty/tty_ioctl.c#L270" id="L270" class4"line" na4e="L270"> 270 *      used as a library he@b:f this te bitgacyrevers/tty/tty_ioctl.c#L304" id="L304" class4"line" na4e="L271"> 271 *      the actual spevers/tty/tty_ioctl.c#L304" id="L304" class4"line" na4e="L272"> 272 *      for a timeout to occCheck if anye href="oes n backaffdat a dumbadel thih vefch ogeevers/tty/tty_ioctl.c#L249" id="L249" class4"line" na4e="L273"> 273 *      For maximal bato occbetwe get thtwof this teer requess,;ia can>
 274 *      we need to cativers/tty/tty_ioctl.c#L249" id="L249" class4"line" na4e="L275"> 275
 276="L3>((ktermios *ktermios * 277{
 278#ifdef 4a hre47href="+code=cbaudos" class="srefaeed;
>c_ispeed;
];
>c_ispeed;
aeed;
>c_ospeed;
];
>c_ospeed;
 279       4unsig4ed int  280
c_cflag >> ];
c_cflag >> CREAA;
CLOCA=T_SYMBOL( 281       4if (<48 if ( 282       4     48          283
 284       4 href="+code=T_SYMBOL(tclarate( 285       4if (<48rs/tty/tty_ioctl.c#L276" id="L276" class4"line" na4e="L286"> 286       4     48mment"> *      @ispeed: inpdrivers/tty/tty_ioctl.c#L304" id="L304" class4"line" na4e="L287"> 287
 *      @ospeed: output spee="L3eet  this teeeeeeeee-cbaudivref="d 288       4if (<48mment"> *      Locking: none@t"L: d"Lctoiref="dvers/tty/tty_ioctl.c#L270" id="L270" class4"line" na4e="L289"> 289       4     48mment"> *      with the termut speednew  this t:llow smalnewfvalutvers/tty/tty_ioctl.c#L270" id="L270" class4"line" na4e="L290"> 290
 *
 291       4     49mment"> *      the actual speed selPerthemcref="dsts struc/this tevaluttve usonyrminal ternal.lTf=revers/tty/tty_ioctl.c#L304" id="L304" class4"line" na4e="L292"> 292       4     49mment"> *      for a timeout to occri acbitt hrlayering violdr>herd 293       4     49mment"> *      For maximal bato occinl ta hrknowledg 294       4     49mment"> *      tty_termios_envers/tty/tty_ioctl.c#L272" id="L272" class4"line" na4e="L295"> 295       4}
 *      desired speed. We al
 296       4retur49mment"> *      @ispeed: inputivers/tty/tty_ioctl.c#L249" id="L249" class4"line" na4e="L297"> 297#else
<4 href49rs/tty/tty_ioctl.c#L288" id="L288" class4"line" na4e="L298"> 298       4retur4 ="L3eet  this termios_baud_ratektermios * 299#endif
4a hre499ref=ty/tty_ioctl.c#L243" id="L243" class5"line" na5e="L300"> 300}
ktermios * 301 302
 293       5ass="50rs/tty/tty_ioctl.c#L284" id="L284" class5"line" na5e="L304"> 304/*
 295       5ass="5omment"> *      @termios: kteeeeeeeeeeed selPerthemctrucactu hr/this teinl ta hrch ogeshunderermiohvers/tty/tty_ioctl.c#L194" id="L194" class5"6ine" na5e="L296"> 296       5ass="5omment"> *      @ispeed: inpueeeeeeeeeivers/tty/tty_ioctl.c#L249" id="L249" class5"line" na5e="L307"> 307 308 309/*
 310 *
 311mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class5"line" na5e="L312"> 312o s  this termios_baud_rato s  this trs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
 313termios,
 314termios,
termi_l 315/*
 217};
 218#else
<5 href51         extprocermios_input_baextprocrs/trmid" class="sref">d s  this termios_baud_rato s  this trs/t.ag" class="sref">l_cflag >> EXTPROCT_SYMBOL( 219static 5onst 51d int termios,
l_cflag >> EXTPROCT_SYMBOL( 220       5o s flowermios_baud_rato s flowrs/trmidd" class="sref">d s  this termios_baud_rato s  this trs/t.ag" class="sref">i_cflag >> IXONag >>IXONf="+)coCBAUde=CBy/tty_ioctl.c#L289" id="L289" class5"line" na5e="L221"> 221       5d s  this termios_baud_rato s  this trs/t.ag" class="sref">ccermios_input_ba">ccrs/te" class="sref">VSTOPermios_input_baVSTOPrs/t]=ii""> *      witstring">'\023'vers/tttcoCBAUde=CBy/tty_ioctl.c#L289" id="L289" class5"line" na5e="L222"> 222       5d s  this termios_baud_rato s  this trs/t.ag" class="sref">ccermios_input_ba">ccrs/te" class="sref">VSTARIFT);
 *      witstring">'\021'vers/ttt)ty/tty_ioctl.c#L293" id="L293" class5"3ine" na5e="L223"> 223       5new flowermios_baud_ratnew flowrs/trmid" class="sref">I_IXONag >>I_IXONf="+dos" class="sref"tyermios_input_baud_a hrtcoCBAUde=CBy/tty_ioctl.c#L289" id="L289" class5"line" na5e="L224"> 224};
STOP_CHAER
 *      witstring">'\023'vers/ttcoCBAUde=CBy/tty_ioctl.c#L289" id="L289" class5"5ine" na5e="L225"> 225#endif
5a hre52="+code=cbaudde=termide=cbaudiverbaud" class="sref">STARI_CHAER
 *      witstring">'\021'vers/tttBy/tty_ioctl.c#L289" id="L289" class5"6ine" na5e="L226"> 226
d s flowermios_baud_rato s flowrs/tr!i"ermios_input_banew flowermios_baud_ratnew flowrs/t)=aud" class="sref">extprocermios_input_baextprocrs/t)cty/tty_ioctl.c#L243" id="L243" class5"line" na5e="L227"> 227static 5nt spin_l 228
d s flowermios_baud_rato s flowrs/tr!i"ermios_input_banew flowermios_baud_ratnew flowrs/t)=ty/tty_ioctl.c#L243" id="L243" class5"line" na5e="L229"> 229TIOCPKT_NOSTOPermios_input_baTIOCPKT_NOSTOP="+ctBy/tty_ioctl.c#L289" id="L289" class5"line" na5e="L230"> 230new flowermios_baud_ratnew flowrs/t)y/tty_ioctl.c#L289" id="L289" class5"line" na5e="L231"> 231 232 233 234 235extprocermios_input_baextprocrs/t)y/tty_ioctl.c#L301" id="L301" class5"6ine" na5e="L236"> 236( 237 238 239 240
 241 242{
"tyermios_input_baud_a hrc_cflag" class="srefoptermios_baud_ratopcode=c_cflag" class="srefeet  this termios_baud_rateet  this tveco)y/tty_ioctl.c#L301" id="L301" class5"line" na5e="L243"> 243       5unsig54 else
"tyermios_input_baud_a hr, de=CBos" class="srefo s  this termios_baud_rato s  this trs/ttBy/tty_ioctl.c#L289" id="L289" class5"line" na5e="L244"> 244
 245       5"tyarate(termios,
 246
 247#ifdef 5a hre54 else
 248       5( 249       5if (<54d int  250       5     55 return "tyermios_input_baud_a hr, de=CBos" class="srefo s  this termios_baud_rato s  this trs/ttBy/tty_ioctl.c#L289" id="L289" class5"line" na5e="L251"> 251#endif
5a hre55 if (" 252       5if (<55href="+code=cty/tty_ioctl.c#L301" id="L301" class5"line" na5e="L253"> 253       5     55="+code=B307200" class="srefmutex_unl];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class5"line" na5e="L254"> 254
 255       5     55rs/ttty/tty_ioctl.c#L301" id="L301" class5"6ine" na5e="L256"> 256       5     55>B250" class="sref">EXref="+code=_GPRT_SYMBOL(tclaeet  this termios_baud_rate 257       5     55rs/tty/tty_ioctl.c#L288" id="L288" class5"line" na5e="L258"> 258       5     55mment"> *      Locking: nondrivers/tty/tty_ioctl.c#L304" id="L304" class5"line" na5e="L259"> 259       5}
 *      with the termut speee u  this teeeeeeeeeeeee-cbaudive us/this tevaluttvfia cat"Lvers/tty/tty_ioctl.c#L304" id="L304" class5"line" na5e="L260"> 260       5retur56mment"> *      used as a library he@t"L: ddriva hrdel thvers/tty/tty_ioctl.c#L304" id="L304" class5"line" na5e="L261"> 261}
 *      the actual speed sel@arg:me 262 *      for a timeout to occ@opt: opt>/nthemdr>vers/tty/tty_ioctl.c#L304" id="L304" class5"line" na5e="L263"> 263
 *      For maximal bavers/tty/tty_ioctl.c#L304" id="L304" class5"line" na5e="L264"> 264 *      tty_termios_encode_bH thatause -> tolprecyree drivers canp of run necessary othatvers/tty/tty_ioctl.c#L270" id="L270" class5"line" na5e="L265"> 265 *      desired speed. We aluse ->s betheeme 266 *      @ispeed: inputvers/tty/tty_ioctl.c#L194" id="L194" class5"line" na5e="L267"> 267 *
 268 *      Locking: none>>>>>>>>Ca"drdluse ->s take ldisci of  driver_mutexpl 269 *      with the term 270 271eet  this termios_baud_rateet  this tvecode=ktermios" class="sretd_re=kterermios_input_baud_re=ktera hreios" class="sref"tyermios_input_baud_a hr16tty_wait_until_sent"__eoprermios_input_baoprveco)y/tty_ioctl.c#L301" id="L301" class5"line" na5e="L272"> 272 273ktermios * 274 275
e=bval];
 276 277{
 278#ifdef 5a hre57          279       5unsig5ed inty/tty_ioctl.c#L289" id="L289" class5"line" na5e="L280"> 280
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class5"line" na5e="L281"> 281       5if (<58="+code=B1200" class="sref">tmp  this termios_baud_ratemp  this t="+crmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
 282       5     58         mutex_unl];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class5"line" na5e="L283"> 283
 284       5TERMIOS_TERMIOT_SYMBOL( 285       5if (<58="+code=cbaudde=termibaudos" class="srefe 286       5     58          287
EFAULIFT);
 288       5if (<58mment#ifdefD" class="sref">TCGETS2T_SYMBOL( 289       5     58ef="drivers/tths/ttfbaudos" class="srefoprermios_input_baoprvecocoCBAUD" class="sref">TERMIOS_OLA;
 290
 291       5     59 if ( 292       5     59         EFAULIFT);
 293       5     593f="drivers/tths/ttfty/tty_ioctl.c#L243" id="L243" class5"line" na5e="L294"> 294       5     59          295       5}
 296       5retur59         EFAULIFT);
 297#else
<5 href59 else
 298       5retur5  299#endif
5a hre59ef="drivers/tths/ttfbaudos" class="srefe 300}
 301EFAULIFT);
 302
 293       6ass="60rs/tty/tty_ioctl.c#L284" id="L284" class6"line" na6e="L304"> 304/*
 295       6ass="6omment"> *      @termios: kteeeeeeeeeeek heltrucre hre>
 296       6ass="606        ic_ispeed;
( 307>c_ospeed;
( 298       6ass="60rs/tty/tty_ioctl.c#L229" id="L229" class6"line" na6e="L309"> 309 310 311( 312dprermios_input_baoprvecocoCBAUD" class="sref">TERMIOS_FLUSH;
 313 314 315 217};
TERMIOS_WAIIFT);
 218#else
<6 href61          219static 6onst 61d int  220       6EINTER
 221       6 222       6 223       6"tyermios_input_baud_a hr, de=CBos" class="sref"mp  this termios_baud_ratemp  this t="+ctty/tty_ioctl.c#L293" id="L293" class6"line" na6e="L224"> 224};
 225#endif
6a hre62="+code=cbaud">/*
 226
 *      @ispeed: inpueeeeeeee cactu hrrequestef  driver watenotuemp  this tcthen we maLvers/tty/tty_ioctl.c#L304" id="L304" class6"line" na6e="L227"> 227static 6nt  *
 228
 *      Locking: noneeeeeeeeeeesuccssedr  229 230 231 232ktermios * * 233 234mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class6"line" na6e="L235"> 235 *termios,
 236termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class6"line" na6e="L237"> 237 238 239ktermios * * 240
 241mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class6"line" na6e="L242"> 242{
 *termi_l 243       6unsig64="+code=B307200" class="srefmutex_unl];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class6"line" na6e="L244"> 244
 245       6 246
get  this ermios_input_baget  this vecode=ktermios" class="sretd_re=kterermios_input_baud_re=ktera hreios" class="sref"tyermios_input_baud_a hr16e=ktermios" class="sretthis ermios_input_baudrive=termermios_input_ba__e 247#ifdef 6a hre64ers/tty/tty_ioctl.c#L278" id="L278" class6"line" na6e="L248"> 248       6ktermios * * 249       6if (<649        "tyermios_input_baud_a hr, de=CBos" class="sreff="+cios * 250       6     650"this ermios_input_baudrive=ter, de=CBos" class="sreff="+cios * 251#endif
6a hre65 if (EFAULIFT);
 252       6if (<65          253       6     65mmentty/tty_ioctl.c#L301" id="L301" class6"line" na6e="L254"> 254
 255       6     65rs/tty/tty_ioctl.c#L276" id="L276" class6"6ine" na6e="L256"> 256       6     65>B250#ifdefD" class="sref">TCGETXFT);
 257       6     65rs/tty/tty_ioctl.c#L288" id="L288" class6"line" na6e="L258"> 258       6     65mment"> *      Locking: nondrivers/tty/tty_ioctl.c#L304" id="L304" class6"line" na6e="L259"> 259       6}
 *      with the termut speee u  this x spee-cbaudive us/this x fieldsobaupossibauvers/tty/tty_ioctl.c#L304" id="L304" class6"line" na6e="L260"> 260       6retur66mment"> *      used as a library he@t"L: ddriva hvers/tty/tty_ioctl.c#L304" id="L304" class6"line" na6e="L261"> 261}
 *      the actual speed sel@arg:m/this x e=kterure from e 262 *      for a timeout to occ@opt: opt>hrefsvfia 04" c typuvers/tty/tty_ioctl.c#L304" id="L304" class6"line" na6e="L263"> 263
 *      For maximal bavers/tty/tty_ioctl.c#L304" id="L304" class6"line" na6e="L264"> 264 *      tty_termios_encode_bImplermioltrucdel th calling pobausrvia ef="SYS5m/this x 04" cvers/tty/tty_ioctl.c#L304" id="L304" class6"line" na6e="L265"> 265 *      desired speed. We alinl tfath in Linuxvers/tty/tty_ioctl.c#L272" id="L272" class6"line" na6e="L266"> 266 *      @ispeed: inputivers/tty/tty_ioctl.c#L249" id="L249" class6"line" na6e="L267"> 267 268eet  this xermios_input_baeet  this xvecode=ktermios" class="sretd_re=kterermios_input_baud_re=ktera hreios" class="sref"tyermios_input_baud_a hr16tty_wait_until_sent"__eoprermios_input_baoprveco)y/tty_ioctl.c#L301" id="L301" class6"line" na6e="L269"> 269 270 271 272 273"tyermios_input_baud_a hrc_cflag" class="sref this xermios_input_ba this xvecom=i"ermios_input_baNUL=T_SYMBOL( 274EINVART_SYMBOL( 275
copy_from_e 276EFAULIFT);
 277{
 278#ifdef 6a hre67          279       6unsig679"+code=cbaudbaud" class="sref">1s];
( 280
dprermios_input_baoprvecocoCBAUD" class="sref">TERMIOS_FLUSH;
 281       6if (<68 if ( 282       6     68          283
 284       6TERMIOS_WAIIFT);
 285       6if (<68="+code=cbaudde=termios" class="sref"t cwaio_until_ss: krmios_baud_rate 286       6     68          287
EINTER
 288       6if (<688f="drivers/tty/tty_ioctl.c#L289" id="L289" class6"line" na6e="L289"> 289       6     68d inty/tty_ioctl.c#L289" id="L289" class6"line" na6e="L290"> 290
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class6"line" na6e="L291"> 291       6     69="+code=B1200baudos" class="sref"tyermios_input_baud_a hrc_cflag" class="srefoptermios_baud_ratopcode=c_cflag" class="srefeet  this xermios_input_baeet  this xvecoty/tty_ioctl.c#L292" id="L292" class6"line" na6e="L292"> 292       6     69         "tyermios_input_baud_a hr, de=CBos" class="sref"newermios_baud_ratenewrs/ttty/tty_ioctl.c#L293" id="L293" class6"line" na6e="L293"> 293       6     69="+code=B307200" class="srefmutex_unl];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class6"line" na6e="L294"> 294       6     69          295       6}
 296       6retur69rs/tty/tty_ioctl.c#L247" id="L247" class6"line" na6e="L297"> 297#else
<6 href69 else#endify/tty_ioctl.c#L293" id="L293" class6"line" na6e="L298"> 298       6retur69rs/tty/tty_ioctl.c#L229" id="L229" class6"line" na6e="L299"> 299#endif
6a hre69d inty/tty_ioctl.c#L289" id="L289" class7"line" na7e="L300"> 300}
TIOCGETPermios_input_baTIOCGETP inty/tty_ioctl.c#L289" id="L289" class7"1ine" na7e="L291"> 291       7"+cod70mment"> *      the actual s/avers/tty/tty_ioctl.c#L304" id="L304" class7"line" na7e="L302"> 302
 *      for a timeout tThesevaeemdeprecated, buoltrueemis limitef support.hvers/tty/tty_ioctl.c#L194" id="L194" class7"3ine" na7e="L293"> 293       7ass="70mment"> *      For maximal bavers/tty/tty_ioctl.c#L304" id="L304" class7"line" na7e="L304"> 304 *      tty_termios_encThe "sg_hrefs" translat>/s a joke.hvers/tty/tty_ioctl.c#L194" id="L194" class7"5ine" na7e="L295"> 295       7ass="7omment"> *      @termios: ktetivers/tty/tty_ioctl.c#L249" id="L249" class7"6ine" na7e="L296"> 296       7ass="70rs/ttstaticrbaud" class="sref">get sghrefs];
 307 298       7ass="70href="+code=cbaud" class="sref">hrefs];
 309 310"tyermios_input_baud_a hrc_cflag" class="sref this ios,
lhrefkrmios_baud_ratc>lhrefvecocoCBAUD" class="sref">ICANONkrmios_baud_ratICANONa hrtt=ty/tty_ioctl.c#L243" id="L243" class7"line" na7e="L311"> 311"tyermios_input_baud_a hrc_cflag" class="sref this ios,
lhrefkrmios_baud_ratc>lhrefvecocoCBAUD" class="sref">ISIGkrmios_baud_ratISIGa hrty/tty_ioctl.c#L292" id="L292" class7"line" na7e="L312"> 312 313 314 315"tyermios_input_baud_a hrc_cflag" class="sref this ios,
lhrefkrmios_baud_ratc>lhrefvecocoCBAUD" class="sref">ECHOT_SYMBOL( 217};
/*
 218#else
<7 href71         "tyermios_input_baud_a hrc_cflag" class="sref this ios,
ohrefkrmios_baud_ratc>ohrefvecocoCBAUD" class="sref">OPOSIFT);
 219static 7onst 71d int ohrefkrmios_baud_ratc>ohrefvecocoCBAUD" class="sref">ONLCER
 220       7 221       7 222       7 223       7 224};
get sg="Lb];
];
];
 225#endif
7a hre72="+coty/tty_ioctl.c#L243" id="L243" class7"6ine" na7e="L226"> 226
];
 227static 7nt  228
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class7"line" na7e="L229"> 229ic_ispeed;
 230>c_ospeed;
 231tmpermios_input_baumprs/t.ag" class="srefsg>eraseeed;
erasers/t =_os" class="sref"tyermios_input_baud_a hrc_cflag" class="sref this ios,
ccermios_input_ba">ccrs/t[ag" class="srefVERASEermios_input_baVERASErs/t]ty/tty_ioctl.c#L293" id="L293" class7"line" na7e="L232"> 232tmpermios_input_baumprs/t.ag" class="srefsg>kill];
killrs/t =_os" class="sref"tyermios_input_baud_a hrc_cflag" class="sref this ios,
ccermios_input_ba">ccrs/t[ag" class="srefVKIL=T_SYMBOL( 233 234mutex_unl];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class7"line" na7e="L235"> 235 236];
EFAULIFT);
 237 238 239];
ktermios *hrefs];
 240
 241 this ios,
ihrefvecoc=_os" class="srefICRN=T_SYMBOL( 242{
tthis ios,
 243       7unsig74="+code=B307200" class="sreftthis ios,
 244
 245       7,
ihrefvecoc=_ cy/tty_ioctl.c#L278" id="L278" class7"6ine" na7e="L246"> 246
 247#ifdef 7a hre74 else
 248       7hrefs];
 249       7if (<74d int  250       7     75 return  251#endif
7a hre75 if ( 252       7if (<75         hrefs];
 253       7     75="+code=B307222222222" class="sref">tthis ios,
 254
 255       7     75="+code=cbaudbaud" class="sref">hrefs];
/*
 256       7     75         ihrefvecoc=_ cy/tty_ioctl.c#L278" id="L278" class7"line" na7e="L257"> 257       7     75 else
ISIGkrmios_baud_ratISIGa hr |_os" class="srefICANONkrmios_baud_ratICANONa hrtty/tty_ioctl.c#L293" id="L293" class7"line" na7e="L258"> 258       7     758f="drivers/tty/tty_ioctl.c#L289" id="L289" class7"line" na7e="L259"> 259       7}
"this ios,
ICANONkrmios_baud_ratICANONa hrtt=ty/tty_ioctl.c#L243" id="L243" class7"line" na7e="L260"> 260       7retur76 return "this ios,
ccrs/t[ag" class="srefVMINkrmios_baud_ratVMINrs/t]c=_1ty/tty_ioctl.c#L293" id="L293" class7"line" na7e="L261"> 261}
"this ios,
ccrs/t[ag" class="srefVTIMEermios_input_baVTIMErs/t]c=_ cy/tty_ioctl.c#L278" id="L278" class7"line" na7e="L262"> 262 263
 264 265 *      desired speedrivers/tty/tty_ioctl.c#L304" id="L304" class7"line" na7e="L266"> 266 *      @ispeed: inputvers/tset sg="Lb href="+code=c-cbaudive uslegacy ddriva hevaluttvers/tty/tty_ioctl.c#L304" id="L304" class7"line" na7e="L267"> 267 *
 268 *      Locking: nonerary he@sg="Lb: pobauer told sfstyle ddriva hee=kterurevers/tty/tty_ioctl.c#L304" id="L304" class7"line" na7e="L269"> 269 *      with the termuvers/tty/tty_ioctl.c#L304" id="L304" class7"line" na7e="L270"> 270 *      used as a library heUpdatttva ddriva hefrom ef="legacy BSDfstyle ddriva heinformat>vers/tty/tty_ioctl.c#L304" id="L304" class7"line" na7e="L271"> 271 *      the actual speed sele=kterurehvers/tty/tty_ioctl.c#L194" id="L194" class7"line" na7e="L272"> 272 *      for a timeout vers/tty/tty_ioctl.c#L194" id="L194" class7"line" na7e="L273"> 273 *      For maximal baed selLocking:m/this r_mutexvers/tty/tty_ioctl.c#L194" id="L194" class7"line" na7e="L274"> 274 *      tty_termios_enivers/tty/tty_ioctl.c#L249" id="L249" class7"line" na7e="L275"> 275
 276set sg="Lb];
];
];
 277{
 278#ifdef 7a hre77href="+code=cbaud" class="sref">retval];
 279       7unsig779"+code=cbaude=ktermios" class="sresg="Lb];
 280
ktermios *termios,
 281       7if (<781ref=y/tty_ioctl.c#L293" id="L293" class7"line" na7e="L282"> 282       7     78         retval];
 283
retval];
 284       7retval];
 285       7if (<78rs/tty/tty_ioctl.c#L276" id="L276" class7"line" na7e="L286"> 286       7     786copy_from_e];
 287
EFAULIFT);
 288       7if (<78rs/tty/tty_ioctl.c#L229" id="L229" class7"line" na7e="L289"> 289       7     789        termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class7"line" na7e="L290"> 290
termios,
termios,
 291       7     79="+code=B1200" class="sref"> this ios,
ccermios_input_ba">ccrs/t[ag" class="srefVERASEermios_input_baVERASErs/t]rmios" class="sref"mpermios_input_baumprs/t.ag" class="srefsg>eraseeed;
erasers/tty/tty_ioctl.c#L293" id="L293" class7"line" na7e="L292"> 292       7     79         tthis ios,
ccermios_input_ba">ccrs/t[ag" class="srefVKIL=T_SYMBOL( 293       7     79="+code=B307200" class="srefset sghrefs];
,
 294       7     79         /*
 295       7}
BOTHEER
 296       7retur796        ,
,
ic_ispeed;
 297#else
<7 href79 else
,
>c_ospeed;
 298       7retur79rs/tt#endify/tty_ioctl.c#L293" id="L293" class7"line" na7e="L299"> 299#endif
7a hre799        termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L300"> 300}
,
,
 291       8"+cod80 if ( 302
 293       8ass="80mment#endify/tty_ioctl.c#L293" id="L293" class8"line" na8e="L304"> 304 295       8ass="80rs/tt#ifdefD" class="sref">TIOCGETCos,
 296       8ass="80rs/ttstaticrbaud" class="sref">get tchars];
 307 298       8ass="80href="+code=ce=ktermios" class="sretchars];
 309 310termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L311"> 311tmpermios_input_baumprs/t.ag" class="sreft_baurcermios_input_bau_baurcrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVINTER
 312tmpermios_input_baumprs/t.ag" class="sreft_quitcermios_input_bau_quitcrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVQUIIFT);
 313termios,
ccermios_input_ba">ccrs/t[ag" class="srefVSTARIFT);
 314tmpermios_input_baumprs/t.ag" class="sreft_stopcermios_input_bau_stopcrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVSTOPermios_input_baVSTOPrs/t]ty/tty_ioctl.c#L293" id="L293" class8"5ine" na8e="L315"> 315tmpermios_input_baumprs/t.ag" class="sreft_eofcermios_input_bau_eofcrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVEOFermios_input_baVEOFrs/t]ty/tty_ioctl.c#L293" id="L293" class8"6ine" na8 id="L303" c400000" clas8="sre816        termios,
ccermios_input_ba">ccrs/t[ag" class="srefVEOL2ermios_input_baVEOL2rs/t]t h0>/*
 217};
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"8ine" na8e="L218"> 218#else
<8 href81         EFAULIFT);
 219static 8onst 81d intty/tty_ioctl.c#L301" id="L301" class8"line" na8e="L220"> 220       8 221       8eet  chars];
 222       8 223       8 224};
 225#endif
8a hre82="+code=cbaudbaud" class="sref">copy_from_e 226
EFAULIFT);
 227static 8nt termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L228"> 228
termios,
ccermios_input_ba">ccrs/t[ag" class="srefVINTER
 229termios,
ccermios_input_ba">ccrs/t[ag" class="srefVQUIIFT);
 230termios,
ccermios_input_ba">ccrs/t[ag" class="srefVSTARIFT);
 231tt ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVSTOPermios_input_baVSTOPrs/t]rmios" class="sref"mpermios_input_baumprs/t.ag" class="sreft_stopcermios_input_bau_stopcrs/tty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L232"> 232tt ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVEOFermios_input_baVEOFrs/t]rmios" class="sref"mpermios_input_baumprs/t.ag" class="sreft_eofcermios_input_bau_eofcrs/tty/tty_ioctl.c#L293" id="L293" class8"3ine" na8e="L233"> 233termios,
ccermios_input_ba">ccrs/t[ag" class="srefVEOL2ermios_input_baVEOL2rs/t]rmios" class="sref"mpermios_input_baumprs/t.ag" class="sreft_brkcermios_input_bau_brkcrs/tt h0>/*
 234mutex_unl];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L235"> 235 236 237 238 239TIOCGLTCos,
 240
get ltchars];
 241 242{
 243       8unsig84rs/tty/tty_ioctl.c#L284" id="L284" class8"line" na8e="L244"> 244
mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L245"> 245       8tmpermios_input_baumprs/t.ag" class="sreft_suspcermios_input_bau_suspcrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVSUSPermios_input_baVSUSPrs/t]ty/tty_ioctl.c#L293" id="L293" class8"6ine" na8e="L246"> 246
 247#ifdef 8a hre84 else
termios,
ccermios_input_ba">ccrs/t[ag" class="srefVSUSPermios_input_baVSUSPrs/t]ty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L248"> 248       8termios,
ccermios_input_ba">ccrs/t[ag" class="srefVREPRINIFT);
 249       8if (<84d int /*
 250       8     850ref="+code=c00" class="sreftmpermios_input_baumprs/t.ag" class="sreft_flushcermios_input_bau_flushcrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVEOL2ermios_input_baVEOL2rs/t]ty/tty_ioctl.c#L249" id="L249" class8"line" na8e="L251"> 251#endif
8a hre85="+code=B1200" class="sref">tmpermios_input_baumprs/t.ag" class="sreft_werascermios_input_bau_werascrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVWERASEermios_input_baVWERASErs/t]ty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L252"> 252       8if (<85         tmpermios_input_baumprs/t.ag" class="sreft_lnextcermios_input_bau_lnextcrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVLNEXIFT);
 253       8     85="+code=B307200" class="srefmutex_unl];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L254"> 254
EFAULIFT);
 255       8     85="+coty/tty_ioctl.c#L301" id="L301" class8"6ine" na8e="L256"> 256       8     85     y/tty_ioctl.c#L301" id="L301" class8"line" na8e="L257"> 257       8     85 elsestaticrbaud" class="sref">eet ltchars];
 258       8     858f="dty/tty_ioctl.c#L278" id="L278" class8"line" na8e="L259"> 259       8}
 260       8retur86 retuy/tty_ioctl.c#L301" id="L301" class8"line" na8e="L261"> 261}
copy_from_e 262EFAULIFT);
 263
 264mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L265"> 265tt ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVSUSPermios_input_baVSUSPrs/t]rmios" class="sref"mpermios_input_baumprs/t.ag" class="sreft_suspcermios_input_bau_suspcrs/tty/tty_ioctl.c#L293" id="L293" class8"6ine" na8e="L266"> 266 267termios,
ccermios_input_ba">ccrs/t[ag" class="srefVEOL2ermios_input_baVEOL2rs/t]rmios" class="sref"mpermios_input_baumprs/t.ag" class="sreft_dsuspcermios_input_bau_dsuspcrs/tty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L268"> 268termios,
ccermios_input_ba">ccrs/t[ag" class="srefVREPRINIFT);
 269 270termios,
ccermios_input_ba">ccrs/t[ag" class="srefVEOL2ermios_input_baVEOL2rs/t]rmios" class="sref"mpermios_input_baumprs/t.ag" class="sreft_flushcermios_input_bau_flushcrs/tty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L271"> 271tt ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVWERASEermios_input_baVWERASErs/t]rmios" class="sref"mpermios_input_baumprs/t.ag" class="sreft_werascermios_input_bau_werascrs/tty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L272"> 272tt ermios_input_baud_a hrc_cflag" class="sref">termios,
ccermios_input_ba">ccrs/t[ag" class="srefVLNEXIFT);
 273termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L274"> 274 275
 276 277{
 278#ifdef 8a hre87mment"> *      Locking: nondrivers/tty/tty_ioctl.c#L304" id="L304" class8"line" na8e="L279"> 279       8unsig87mment"> *      with the termu=cbaudeend_prio_ch r/t 280
 *      used as a librvers/tty/tty_ioctl.c#L304" id="L304" class8"line" na8e="L281"> 281       8if (<88mment"> *      the actual speed selS nd ttyigh priority ch ract/s tolef="="L even=baustoppversrs/tty/tty_ioctl.c#L304" id="L304" class8"line" na8e="L282"> 282       8     88mment"> *      for a timeout vers/tty/tty_ioctl.c#L194" id="L194" class8"line" na8e="L283"> 283
 *      For maximal baed selLocking:mnone for xch r/method, write ordering for write methodhvers/tty/tty_ioctl.c#L194" id="L194" class8"line" na8e="L284"> 284       8 *      tty_termios_enivers/tty/tty_ioctl.c#L249" id="L249" class8"line" na8e="L285"> 285       8if (<88rs/tty/tty_ioctl.c#L276" id="L276" class8"line" na8e="L286"> 286       8     88rs/ttstaticrbaud" class="sref">send_prio_ch r];
 287
 288       8if (<88href="+code=cbaud307200" class="srefwas_stoppveermios_input_bawas_stoppvers/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="srefstoppveermios_input_bastoppvers/tcy/tty_ioctl.c#L278" id="L278" class8"line" na8e="L289"> 289       8     88d inty/tty_ioctl.c#L289" id="L289" class8"line" na8e="L290"> 290
"t ermios_input_baud_a hrc_cflag" class="srefopios,
 291       8     89 if ("t ermios_input_baud_a hrc_cflag" class="srefopios,
 292       8     892f="drivers/t 293       8     89="+code=B3072ty/tty_ioctl.c#L301" id="L301" class8"line" na8e="L294"> 294       8     89     y/tty_ioctl.c#L293" id="L293" class8"line" na8e="L295"> 295       8}
="L2write_l];
 296       8retur89         ERESTARISYSFT);
 297#else
<8 href89ers/ty/tty_ioctl.c#L293" id="L293" class8"line" na8e="L298"> 298       8retur89         was_stoppveermios_input_bawas_stoppvers/t)y/tty_ioctl.c#L293" id="L293" class8"line" na8e="L299"> 299#endif
8a hre899        start_"tyermios_input_bastart_"tyvecodos" class="sref"tyermios_input_baud_a hrtcy/tty_ioctl.c#L278" id="L278" class9"line" na9e="L300"> 300}
 291       9"+cod90 if (was_stoppveermios_input_bawas_stoppvers/t)y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L302"> 302
 293       9ass="90="+code=B307200" class="sreftt 2write_unl];
 294       9ass="904if ( 295       9ass="90="+coty/tty_ioctl.c#L301" id="L301" class9"6ine" na9e="L296"> 296       9ass="90     y/tty_ioctl.c#L301" id="L301" class9"line" na9e="L307"> 307 *
 298       9ass="90mment"> *      Locking: nonerary he="L3ch oge_softc r/t 309 *      with the termu=cbaud@t"L: dty to updattvers/tty/tty_ioctl.c#L304" id="L304" class9"line" na9e="L310"> 310 *      used as a library he@arg: enable/disable CLOCALvers/tty/tty_ioctl.c#L304" id="L304" class9"1ine" na9e="L311"> 311 *      the actual spevers/tty/tty_ioctl.c#L304" id="L304" class9"line" na9e="L312"> 312 *      for a timeout ary hePerform a ch oge tolef="CLOCAL state and callcbauo ef="l.c#L3vers/tty/tty_ioctl.c#L304" id="L304" class9"3ine" na9e="L313"> 313 *      For maximal baed sellay/s tolmake 0t visible. Allcdone withlef="=driver mutexvers/tty/tty_ioctl.c#L194" id="L194" class9"line" na9e="L314"> 314 *      tty_termios_enivers/tty/tty_ioctl.c#L249" id="L249" class9"5ine" na9e="L315"> 315="L3ch oge_softc r];
argermios_input_baargrs/t)y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L217"> 217};
 218#else
<9 href91href="+code=cbaud" class="sref">retermios_input_baretrs/trmi cy/tty_ioctl.c#L278" id="L278" class9"line" na9e="L219"> 219static 9onst 919ref="+code=cbaud" class="sref">bitermios_input_babitrs/trmios" class="srefargermios_input_baargrs/t ?ios" class="srefCLOCALermios_input_baCLOCALve/t :_ cy/tty_ioctl.c#L278" id="L278" class9"line" na9e="L220"> 220       9ktermios * 221       9 222       9mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class9"3ine" na9e="L223"> 223       9termios,
 224};
tt ermios_input_baud_a hrc_cflag" class="sref">termios,
chrefermios_input_ba">chref     de=CB= ~os" class="srefCLOCALermios_input_baCLOCALve/tty/tty_ioctl.c#L293" id="L293" class9"5ine" na9e="L225"> 225#endif
9a hre92="+code=cbaud" class="sref">tt ermios_input_baud_a hrc_cflag" class="sref">termios,
chrefermios_input_ba">chref     |mios" class="srefbitermios_input_babitrs/tty/tty_ioctl.c#L293" id="L293" class9"6ine" na9e="L226"> 226
"t ermios_input_baud_a hrc_cflag" class="srefopios,
 227static 9nt "t ermios_input_baud_a hrc_cflag" class="srefopios,
 228
"t ermios_input_baud_a hrc_cflag" class="sref">termios,
chrefermios_input_ba">chref     de=CBios" class="srefCLOCALermios_input_baCLOCALve/t) !mios" class="srefbitermios_input_babitrs/t)y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L229"> 229retermios_input_baretrs/trmi-" class="sref">EINVALermios_input_baEINVALrs/tty/tty_ioctl.c#L293" id="L293" class9"line" na9e="L230"> 230termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class9"line" na9e="L231"> 231retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class9"line" na9e="L232"> 232 233 234 *      tty_termios_drivers/tty/tty_ioctl.c#L304" id="L304" class9"line" na9e="L235"> 235 *      Locking: nonerary he="L3mef"304" c h"+code=c-cbaudivmef"=e=lated 04" csvers/tty/tty_ioctl.c#L304" id="L304" class9"6ine" na9e="L236"> 236 *      with the termu=cbaud@t"L: dty for ef="04" cvers/tty/tty_ioctl.c#L304" id="L304" class9"line" na9e="L237"> 237 *
 238 *      Locking: nonerary he@cmd: kinganersrs/tty/tty_ioctl.c#L304" id="L304" class9"line" na9e="L239"> 239 *      with the termu=cbaud@arg: 04" c arguhe trsrs/tty/tty_ioctl.c#L304" id="L304" class9"line" na9e="L240"> 240
 *      used as a librvers/tty/tty_ioctl.c#L304" id="L304" class9"line" na9e="L241"> 241 *      the actual speed selPerform non 41 242{
 *      for a timeout ary he/s designed to be called by 41 243       9unsig94mment"> *      For maximal baed selconsistimavmef"=eettinghvers/tty/tty_ioctl.c#L194" id="L194" class9"line" na9e="L244"> 244
 *      tty_termios_enivers/tty/tty_ioctl.c#L249" id="L249" class9"line" na9e="L245"> 245       9 246
="L3mef"304" cermios_input_baud_rmef"304" cvecode=ktermios" class="sretd_re=kterermios_input_baud_re=ktera hreios" class="sref"tyermios_input_baud_a hr16e=ktermios" class="srefileermios_input_bafilea hreios" class="sreffileermios_input_bafilea hr,y/tty_ioctl.c#L229" id="L229" class9"line" na9e="L247"> 247#ifdef 9a hre94 else
cmdermios_input_ba"mers/t,=unsigned longd" class="sref">argermios_input_baargrs/t)y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L248"> 248       9 249       9if (<94d int  250       9     950ref="+code=cvoidmermios_input_ba__eargermios_input_baargrs/tty/tty_ioctl.c#L293" id="L293" class9"line" na9e="L251"> 251#endif
9a hre95="+code=B1200baud" class="sref">retermios_input_baretrs/trmi cy/tty_ioctl.c#L278" id="L278" class9"line" na9e="L252"> 252       9if (<95         ktermios * * 253       9     95rs/tty/tty_ioctl.c#L284" id="L284" class9"line" na9e="L254"> 254
BUG_ONios * 255       9     95rs/tty/tty_ioctl.c#L276" id="L276" class9"6ine" na9e="L256"> 256       9     956"t ermios_input_baud_a hrc_cflag" class="srefl.c#L2ermios_input_bal.c#L3vehrc_cflag" class="sref"ypeermios_input_ba"ypea hre=mios" class="srefTTY_DRIVER_TYPE_PTYermios_input_baTTY_DRIVER_TYPE_PTY     de=CBde=CBy/tty_ioctl.c#L276" id="L276" class9"line" na9e="L257"> 257       9     95 else
"t ermios_input_baud_a hrc_cflag" class="srefl.c#L2ermios_input_bal.c#L3vehrc_cflag" class="srefsub"ypeermios_input_basub"ypea hre=mios" class="srefPTY_TYPE_MASTEER
 258       9     958else
real_"tyermios_input_bareal_"tyrs/trmios" class="sref"t ermios_input_baud_a hrc_cflag" class="sref58< ];
 259       9}
 260       9retur960else
real_"tyermios_input_bareal_"tyrs/trmios" class="sref"t ermios_input_baud_a hrty/tty_ioctl.c#L293" id="L293" class9"line" na9e="L261"> 261}
 262cmdermios_input_ba"mers/tt=ty/tty_ioctl.c#L243" id="L243" class9"line" na9e="L263"> 263
TIOCGETPermios_input_baTIOCGETPref=y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L264"> 264TIOCGETPermios_input_baTIOCGETPref=:y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L265"> 265get sg="Lbermios_input_baget sg="Lbvecodos" class="srefreal_"tyermios_input_bareal_"tyrs/t, de=ktermios" class="sresg="Lbermios_input_basg="Lbvecomermios_input_ba__eargermios_input_baargrs/t)ty/tty_ioctl.c#L293" id="L293" class9"6ine" na9e="L266"> 266TIOCSETPermios_input_baTIOCSETPref=:y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L267"> 267TIOCSETNios * 268set sg="Lbermios_input_baset sg="Lbvecodos" class="srefreal_"tyermios_input_bareal_"tyrs/t, de=ktermios" class="sresg="Lbermios_input_basg="Lbvecomermios_input_ba__eargermios_input_baargrs/t)ty/tty_ioctl.c#L293" id="L293" class9"line" na9e="L269"> 269 270TIOCGETCos,
 271TIOCGETCos,
 272get tchars];
 273TIOCSETCos,
 274set  chars];
 275
 276TIOCGLTCos,
 277{
TIOCGLTCos,
 278#ifdef 9a hre978else
get ltchars];
 279       9unsig979"+code=B3072caseD" class="sref">TIOCSLTCos,
 280
set ltchars];
 281       9if (<98mment#endify/tty_ioctl.c#L293" id="L293" class9"line" na9e="L282"> 282       9     982"+code=B3072caseD" class="sref">TCSETSFermios_input_baTCSETSF    :y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L283"> 283
set  this ios,
TERMIOS_FLUSHermios_input_baTERMIOS_FLUSHif (<|r" class="sref">TERMIOS_WAIIFT);
TERMIOS_OLDFT);
 284       9TCSETSWermios_input_baTCSETSW    :y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L285"> 285       9if (<98="+code=cbauddddddddde=baud_" class="sref">set  this ios,
TERMIOS_WAIIFT);
TERMIOS_OLDFT);
 286       9     98         TCSETSermios_input_baTCSETS    :y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L287"> 287
set  this ios,
TERMIOS_OLDFT);
 288       9if (<98href=#ifndefD" class="sref">TCGETS2ermios_input_baTCGETS2    y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L289"> 289       9     989"+code=B3072caseD" class="sref">TCGETSermios_input_baTCGETS    :y/tty_ioctl.c#L293" id="L293" class9"line" na9e="L290"> 290
copy_ this ios,
 * 291       9     99 if (kernel_ this i_ o_e,
argermios_input_baargrs/t, de=CBos" class="sreff="+cios * 292       9     992f="drivers/tretermios_input_baretrs/trmi-" class="sref">EFAULIFT);
 293       9     993if (retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class9"line" na9e="L294"> 294       9     99     #elsey/tty_ioctl.c#L293" id="L293" class9"line" na9e="L295"> 295       9}
TCGETSermios_input_baTCGETS    :y/tty_ioctl.c#L293" id="L293" class9"6ine" na9e="L296"> 296       9retur99         copy_ this ios,
 * 297#else
<9 href99 else
kernel_ this i_ o_e,
argermios_input_baargrs/t, de=CBos" class="sreff="+cios * 298       9retur998else
retermios_input_baretrs/trmi-" class="sref">EFAULIFT);
 299#endif
9a hre999        retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class10"line" na10"lin299"> 299#endif
10"li>10"l"+code=cbaudcaseD" class="sref">TCGETS2ermios_input_baTCGETS2    :y//pre>/tty_ioctl.c#L293" id="L293" class10"1ine" na10"="L291"> 291       10"=">10" if (copy_ this ios,
 * 292       10"=">10"2f="drivers/tkernel_ this i_ o_e,
argermios_input_baargrs/t, de=CBos" class="sreff="+cios * 293       10"=">10"3if (retermios_input_baretrs/trmi-" class="sref">EFAULIFT);
 294       10"=">10"4if (retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class10"5ine" na10"="L295"> 295       10"=">10"="+code=cbaudcaseD" class="sref">TCSETSF2ermios_input_baTCSETSF2    :y/tty_ioctl.c#L293" id="L293" class10"6ine" na10"="L296"> 296       10"=">10"         set  this ios,
TERMIOS_FLUSHermios_input_baTERMIOS_FLUSHif (<|r" class="sref">TERMIOS_WAIIFT);
 297#else
<10"=">10" else
TCSETSW2ermios_input_baTCSETSW2    :y/tty_ioctl.c#L293" id="L293" class10"8ine" na10"="L298"> 298       10"=">10"8else
set  this ios,
TERMIOS_WAIIFT);
 299#endif
10"=">10"9"+code=B3072caseD" class="sref">TCSETS2ermios_input_baTCSETS2    :y/tty_ioctl.c#L293" id="L293" class101line" na10e="L310"> 310set  this ios,
 311 312TCGETAermios_input_baTCGETA    :y/tty_ioctl.c#L293" id="L293" class1013ine" na10e="L313"> 313get  this ];
 314TCSETAFermios_input_baTCSETAF    :y/tty_ioctl.c#L293" id="L293" class10e5ine" na10e="L315"> 315set  this ios,
TERMIOS_FLUSHermios_input_baTERMIOS_FLUSHif (<|r" class="sref">TERMIOS_WAIIFT);
TERMIOS_TERMIOFT);
10e         TCSETAWermios_input_baTCSETAW    :y/tty_ioctl.c#L293" id="L293" class10e7ine" na10e="L217"> 217};
set  this ios,
TERMIOS_WAIIFT);
TERMIOS_TERMIOFT);
 218#else
<10e=">10e8        TCSETAermios_input_baTCSETA    :y/tty_ioctl.c#L293" id="L293" class10e9ine" na10e="L219"> 219static 10e=">10e9        set  this ios,
TERMIOS_TERMIOFT);
 220       10e=">10e=ref=#ifndefD" class="sref">TCGETS2ermios_input_baTCGETS2    y/tty_ioctl.c#L293" id="L293" class10e1ine" na10e="L221"> 221       10e=">10e="+code=B1200caseD" class="sref">TIOCGLCKTRMIOSermios_input_baTIOCGLCKTRMIOS    :y/tty_ioctl.c#L293" id="L293" class1022ine" na10e="L222"> 222       10e=">10e2f="drivers/t * 223       10e=">10e3if (kernel_ this i_ o_e,
argermios_input_baargrs/t, de=CBos" class="sreff="+cios * 224};
EFAULIFT);
 225#endif
10e=">10e="+code=cbauddddddddde=baud_" class="sref">retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class1026ine" na10e="L226"> 226
TIOCSLCKTRMIOSermios_input_baTIOCSLCKTRMIOS    :y/tty_ioctl.c#L293" id="L293" class1027ine" na10e="L227"> 227static 10e=">10e else
 228
EPERMFT);
 229copy_ this i_l * 230e * * 231argermios_input_baargrs/t))y/tty_ioctl.c#L293" id="L293" class1032ine" na10e="L232"> 232EFAULIFT);
 233mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class10e4ine" na10e="L234"> 234termi_l * 235mutex_unl];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class10e6ine" na10e="L236"> 236 237 238TIOCGLCKTRMIOSermios_input_baTIOCGLCKTRMIOS    :y/tty_ioctl.c#L293" id="L293" class1039ine" na10e="L239"> 239copy_ this i_l * 240
kernel_ this i_ o_e,
argermios_input_baargrs/t, de=CBos" class="sreff="+cios * 241EFAULIFT);
 242{
retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class1043ine" na10e="L243"> 243       10e=">10e="+code=B3072caseD" class="sref">TIOCSLCKTRMIOSermios_input_baTIOCSLCKTRMIOS    :y/tty_ioctl.c#L293" id="L293" class1044ine" na10e="L244"> 244
 245       10e=">10e="+code=cbaudddddddddEPERMFT);
 246
copy_ this i_l * 247#ifdef 10e=">10e else
e,
 * 248       10e=">10e8else
argermios_input_baargrs/t))y/tty_ioctl.c#L293" id="L293" class1049ine" na10e="L249"> 249       10e=">10e9        EFAULIFT);
 250       10e=">10e=if (mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class1051ine" na10e="L251"> 251#endif
10e=">10e if (real_"tyermios_input_bareal_"tyrs/tc_cflag" class="sref">termi_l * 252       10e=">10e2f="drivers/ttermi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class1053ine" na10e="L253"> 253       10e=">10e3if (retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class10e4ine" na10e="L254"> 254
 255       10e=">10e5ref=#ifdefD" class="sref">TCGETXermios_input_baTCGETX    y/tty_ioctl.c#L293" id="L293" class1056ine" na10e="L256"> 256       10e=">10e         TCGETXermios_input_baTCGETX    :=ty/tty_ioctl.c#L243" id="L243" class10e7ine" na10e="L257"> 257       10e=">10e else
 258       10e=">10e8else
real_"tyermios_input_bareal_"tyrs/tc_cflag" class="sref">termxermios_input_baudrivexrs/tm=mios" class="srefNULLermios_input_baNULLvecoty/tty_ioctl.c#L293" id="L293" class10e9ine" na10e="L259"> 259       10e=">10e9        EINVALermios_input_baEINVALrs/tty/tty_ioctl.c#L293" id="L293" class106line" na10e="L260"> 260       10e=">10e=if (mutex_l];
termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class1061ine" na10e="L261"> 261}
memcpyermios_input_bamemcpyvecodde=CBos" class="sreff="+cxermios_input_baf="+cxrs/t,d" class="sref">real_"tyermios_input_bareal_"tyrs/tc_cflag" class="sref">termxermios_input_baudrivexrs/t, sizeofde=ktermios" class="sret>termxermios_input_baudrivexrs/t)tty/tty_ioctl.c#L293" id="L293" class1062ine" na10e="L262"> 262termi_mutexermios_input_baudriver_mutexvecotty/tty_ioctl.c#L293" id="L293" class1063ine" na10e="L263"> 263
copy_ o_e 264EFAULIFT);
 265retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class1066ine" na10e="L266"> 266 267TCSETXermios_input_baTCSETX    :y/tty_ioctl.c#L301" id="L301" class10e8ine" na10e="L268"> 268set  this xermios_input_baset  this xvecodos" class="srefreal_"tyermios_input_bareal_"tyrs/t, os" class="srefpermios_input_baprs/t,d0)ty/tty_ioctl.c#L293" id="L293" class1069ine" na10e="L269"> 269TCSETXWermios_input_baTCSETXW    :y/tty_ioctl.c#L293" id="L293" class107line" na10e="L270"> 270set  this xermios_input_baset  this xvecodos" class="srefreal_"tyermios_input_bareal_"tyrs/t, os" class="srefpermios_input_baprs/t,d" class="sref">TERMIOS_WAIIFT);
 271TCSETXFermios_input_baTCSETXF    :y/tty_ioctl.c#L293" id="L293" class1072ine" na10e="L272"> 272set  this xermios_input_baset  this xvecodos" class="srefreal_"tyermios_input_bareal_"tyrs/t, os" class="srefpermios_input_baprs/t,d" class="sref">TERMIOS_FLUSHermios_input_baTERMIOS_FLUSHif ()ty/tty_ioctl.c#L293" id="L293" class1073ine" na10e="L273"> 273 274TIOCGSOFTCAER
 275
copy_ this ios,
 * 276retermios_input_baretrs/trmios" class="srefput_e *chrefermios_input_ba">chref     de=CBios" class="srefCLOCALermios_input_baCLOCALve/t) ? 1 : 0,y/tty_ioctl.c#L229" id="L229" class1077ine" na10e="L277"> 277{
__eargermios_input_baargrs/t)ty/tty_ioctl.c#L293" id="L293" class1078ine" na10e="L278"> 278#ifdef 10e=">10e8else
retermios_input_baretrs/tty/tty_ioctl.c#L293" id="L293" class1079ine" na10e="L279"> 279       10e=">10e9"+code=B3072caseD" class="sref">TIOCSSOFTCAER
 280
get e__eargermios_input_baargrs/t))y/tty_ioctl.c#L293" id="L293" class1081ine" na10e="L281"> 281       10e=">10e if (EFAULIFT);
 282       10e=">10e2f="drivers/t="L2change_softcasermios_input_ba="L2change_softcasvecodos" class="srefreal_"tyermios_input_bareal_"tyrs/t, os" class="srefargermios_input_baargrs/t)ty/tty_ioctl.c#L293" id="L293" class1083ine" na10e="L283"> 283
 284       10e=">10e4if (ENOIOCTLCMDFT);
 285       10e=">10e="+code=cbaudty/tty_ioctl.c#L301" id="L301" class1086ine" na10e="L286"> 286       10e=">10e     ty/tty_ioctl.c#L301" id="L301" class1087ine" na10e="L287"> 287
EXPORT_SYMBOL_GPLermios_input_baEXPORT_SYMBOL_GPLvecodos" class="sref="L3mef"304" cermios_input_baud_rmef"304" cveco)ty/tty_ioctl.c#L293" id="L293" class1088ine" na10e="L288"> 288       10e=">10e8    y/tty_ioctl.c#L293" id="L293" class1089ine" na10e="L289"> 289       10e=">10e9"+cobaud" class="sref">="L3perform_flushermios_input_baud_rperform_flushvecode=ktermios" class="sretd_re=kterermios_input_baud_re=ktera hreios" class="sref"tyermios_input_baud_a hr16unsigned longd" class="sref">argermios_input_baargrs/t)y/tty_ioctl.c#L293" id="L293" class109line" na10e="L290"> 290
 291       10e=">10e if ( 292       10e=">10e2f="drivers/tbaud" class="sref">retvacermios_input_baretvacrs/trmios" class="sref="L2check2changeermios_input_ba="L2check2changevecodos" class="sref="Lermios_input_baud_a hr)ty/tty_ioctl.c#L293" id="L293" class1093ine" na10e="L293"> 293       10e=">10e3if (retvacermios_input_baretvacrs/t)y/tty_ioctl.c#L293" id="L293" class1094ine" na10e="L294"> 294       10e=">10e4if (retvacermios_input_baretvacrs/tty/tty_ioctl.c#L293" id="L293" class1095ine" na10e="L295"> 295       10e=">10ers/tty/tty_ioctl.c#L276" id="L276" class10e6ine" na10e="L296"> 296       10e=">10e          297#else
<10e=">10e else
argermios_input_baargrs/t)=ty/tty_ioctl.c#L243" id="L243" class1098ine" na10e="L298"> 298       10e=">10e8        TCIFLUSHermios_input_baTCIFLUSH    :y/tty_ioctl.c#L293" id="L293" class1099ine" na10e="L299"> 299#endif
10e=">10e9        leermios_input_baldrs/trde=CBde=CBhos" class="srefleermios_input_baldrs/tc_cflag" class="srefopios,
 299#endif
11"li>110=if ( 291       11"=">11" if ( 292       11"=">1102"+code=B3072caseD" class="sref">TCIOFLUSHermios_input_baTCIOFLUSH    :y/tty_ioctl.c#L293" id="L293" class11"3ine" na11"="L293"> 293       11"=">11"3if (leermios_input_baldrs/trde=CBde=CBhos" class="srefleermios_input_baldrs/tc_cflag" class="srefopios,
 294       11"=">11"4if ( 295       11"=">110="+code=cbauddddddddd"spanL295"> 2comment">/* fall through */ 296       11"=">110         TCOFLUSHermios_input_baTCOFLUSH    :y/tty_ioctl.c#L293" id="L293" class11"7ine" na11"="L297"> 297#else
<11"=">110 else
 298       11"=">11"8else
 299#endif
11"=">11"9"+code=B3072default:y/tty_ioctl.c#L293" id="L293" class111line" na11e="L310"> 310 311EINVALermios_input_baEINVALrs/tty/tty_ioctl.c#L293" id="L293" class11e2ine" na11e="L312"> 312 313 314 31511e     " class="sref">EXPORT_SYMBOL_GPLermios_input_baEXPORT_SYMBOL_GPLvecodos" class="sref="L3perform_flushermios_input_baud_rperform_flushveco)ty/tty_ioctl.c#L293" id="L293" class1117ine" na11e="L217"> 217};
 218#else
<11e=">11e8    baud" class="sref">n_="L293" c_help/sermios_input_ban_="L293" c_help/svecode=ktermios" class="sretd_re=kterermios_input_baud_re=ktera hreios" class="sref"tyermios_input_baud_a hr16e=ktermios" class="srefileermios_input_bafilea hreios" class="sreffileermios_input_bafilea hr,y/tty_ioctl.c#L229" id="L229" class11e9ine" na11e="L219"> 219static 11e=">11e9        cmdermios_input_ba"mers/t16unsigned longd" class="sref">argermios_input_baargrs/t)y/tty_ioctl.c#L293" id="L293" class112line" na11e="L220"> 220       11e=">112=rs/tty/tty_ioctl.c#L243" id="L243" class11e1ine" na11e="L221"> 221       11e=">11e="+code=B1200unsigned longd" class="sref">hrefios,
 222       11e=">1122f="drivers/tbaud" class="sref">retvacermios_input_baretvacrs/tty/tty_ioctl.c#L293" id="L293" class1123ine" na11e="L223"> 223       11e=">11e3if (y/tty_ioctl.c#L293" id="L293" class1124ine" na11e="L224"> 224};
cmdermios_input_ba"mers/t)=ty/tty_ioctl.c#L243" id="L243" class1125ine" na11e="L225"> 225#endif
11e=">112="+code=cbaudcaseD" class="sref">TCXONCos,
 226
retvacermios_input_baretvacrs/trmios" class="sref="L2check2changeermios_input_ba="L2check2changevecodos" class="sref="Lermios_input_baud_a hr)ty/tty_ioctl.c#L293" id="L293" class1127ine" na11e="L227"> 227static 11e=">11e else
retvacermios_input_baretvacrs/t)y/tty_ioctl.c#L293" id="L293" class11e8ine" na11e="L228"> 228
retvacermios_input_baretvacrs/tty/tty_ioctl.c#L293" id="L293" class1129ine" na11e="L229"> 229argermios_input_baargrs/t)=ty/tty_ioctl.c#L243" id="L243" class113line" na11e="L230"> 230TCOOFFermios_input_baTCOOFF    :y/tty_ioctl.c#L293" id="L293" class11e1ine" na11e="L231"> 231 232="Lermios_input_baud_a hrc_cflag" class="srefflowre=oppveermios_input_baflowre=oppvers/trmi1ty/tty_ioctl.c#L293" id="L293" class1133ine" na11e="L233"> 233e=op_"tyermios_input_bae=op_"tyvecodos" class="sref="Lermios_input_baud_a hr)ty/tty_ioctl.c#L293" id="L293" class11e4ine" na11e="L234"> 234 235 236TCOONios * 237="Lermios_input_baud_a hrc_cflag" class="srefflowre=oppveermios_input_baflowre=oppvers/t)=ty/tty_ioctl.c#L243" id="L243" class1138ine" na11e="L238"> 238="Lermios_input_baud_a hrc_cflag" class="srefflowre=oppveermios_input_baflowre=oppvers/trmi cy/tty_ioctl.c#L278" id="L278" class1139ine" na11e="L239"> 239start_"tyermios_input_bae=art_"tyvecodos" class="sref="Lermios_input_baud_a hr)ty/tty_ioctl.c#L293" id="L293" class114line" na11e="L240"> 240
 241 242{
TCIOFFermios_input_baTCIOFF    :y/tty_ioctl.c#L293" id="L293" class1143ine" na11e="L243"> 243       11e=">1143if (STOP_CHAER
 244
send_prio2chasermios_input_basend_prio2chasvecodos" class="sref="Lermios_input_baud_a hr, os" class="srefSTOP_CHAER
 245       11e=">11e="+code=cbauddddddddd 246
TCIONios * 247#ifdef 11e=">11e else
START_CHAER
 248       11e=">11e8else
send_prio2chasermios_input_basend_prio2chasvecodos" class="sref="Lermios_input_baud_a hr, os" class="srefSTART_CHAER
 249       11e=">11e9         250       11e=">11e=if ( 251#endif
11e=">11e if (EINVALermios_input_baEINVALrs/tty/tty_ioctl.c#L293" id="L293" class1152ine" na11e="L252"> 252       11e=">11e2f="drivers/t 253       11e=">11e3if ( 254
TCFLSHermios_input_baTCFLSH    :y/tty_ioctl.c#L293" id="L293" class1155ine" na11e="L255"> 255       11e=">115="+code=cbauddddddddde=baud_" class="sref">="L3perform_flushermios_input_baud_rperform_flushvecodos" class="sref="Lermios_input_baud_a hr, os" class="srefargermios_input_baargrs/t)ty/tty_ioctl.c#L293" id="L293" class1156ine" na11e="L256"> 256       11e=">11e         TIOCPKIFT);
 257       11e=">11e else
 258       11e=">11e8else
pktmef"FT);
 259       11e=">11e9    y/tty_ioctl.c#L293" id="L293" class116line" na11e="L260"> 260       11e=">11e=if (="Lermios_input_baud_a hrc_cflag" class="srefl.c#L2ermios_input_bal.c#L2a hrc_cflag" class="sreftypeermios_input_ba=ypeif ();
 261}
="Lermios_input_baud_a hrc_cflag" class="srefl.c#L2ermios_input_bal.c#L2a hrc_cflag" class="srefsubtypeermios_input_basubtypeif (
 262ENOTTYFT);
 263
get e);
__eargermios_input_baargrs/t))y/tty_ioctl.c#L293" id="L293" class1164ine" na11e="L264"> 264EFAULIFT);
 265 266pktmef"FT);
 267 268 269="Lermios_input_baud_a hrc_cflag" class="sref69< ];
 270 271 272 273spin_unl 274 275
 276 277{
 2comment">/* Try the mef" commands */ 278#ifdef 11e=">11e8else
t"L3mef"304" cermios_input_baud_rmef"304" cvecodos" class="sref="Lermios_input_baud_a hr, os" class="sreffileermios_input_bafilea hr,d" class="sref">cmdermios_input_ba"mers/t16os" class="srefargermios_input_baargrs/t)ty/tty_ioctl.c#L293" id="L293" class1179ine" na11e="L279"> 279       11e=">11e9"+code=B3072ty/tty_ioctl.c#L301" id="L301" class118line" na11e="L280"> 280
 281       11e=">11e if (" class="sref">EXPORT_SYMBOLFT);
 282       11e=">1182    y/tty_ioctl.c#L293" id="L293" class1183ine" na11e="L283"> 283
CONFIG_COMPAIFT);
 284       11e=">11e4if (longd" class="sref">n_="L2compat293" c_help/sermios_input_ban_="L2compat293" c_help/svecode=ktermios" class="sretd_re=kterermios_input_baud_re=ktera hreios" class="sref"tyermios_input_baud_a hr16e=ktermios" class="srefileermios_input_bafilea hreios" class="sreffileermios_input_bafilea hr,y/tty_ioctl.c#L229" id="L229" class1185ine" na11e="L285"> 285       11e=">118="+code=cbaudddddddddcmdermios_input_ba"mers/t16unsigned longd" class="sref">argermios_input_baargrs/t)y/tty_ioctl.c#L293" id="L293" class1186ine" na11e="L286"> 286       11e=">11e     ty/tty_ioctl.c#L243" id="L243" class1187ine" na11e="L287"> 287
cmdermios_input_ba"mers/t)=ty/tty_ioctl.c#L243" id="L243" class1188ine" na11e="L288"> 288       11e=">1188        TIOCGLCKTRMIOSermios_input_baTIOCGLCKTRMIOS    :y/tty_ioctl.c#L293" id="L293" class1189ine" na11e="L289"> 289       11e=">1189"+code=B3072caseD" class="sref">TIOCSLCKTRMIOSermios_input_baTIOCSLCKTRMIOS    :y/tty_ioctl.c#L293" id="L293" class119line" na11e="L290"> 290
t"L3mef"304" cermios_input_baud_rmef"304" cvecodos" class="sref="Lermios_input_baud_a hr, os" class="sreffileermios_input_bafilea hr,d" class="sref">cmdermios_input_ba"mers/t16(unsigned long)d" class="sref">compat2ptsermios_input_bacompat2ptsvecodos" class="srefargermios_input_baargrs/t))ty/tty_ioctl.c#L293" id="L293" class1191ine" na11e="L291"> 291       11e=">11e if ( 292       11e=">1192f="drivers/tENOIOCTLCMDFT);
 293       11e=">11e3if ( 294       11e=">11e4if (ty/tty_ioctl.c#L301" id="L301" class1195ine" na11e="L295"> 295       11e=">11ers/tt" class="sref">EXPORT_SYMBOLFT);
 296       11e=">11e     #endify/tty_ioctl.c#L293" id="L293" class1197ine" na11e="L297"> 297#else
<11e=">119 elsey/tty_ioctl.c#L293" id="L293" class1198ine" na11e="L298"> 298       11e=">11e8    
2foot/se> The original LXR software by the /tty_iocthttp://sourceforge.net/projects/lxse>LXR communid_a hr, this exp/simental #L29ion by /tty_ioctmailto:lxs@98lxs@98 2subfoot/se> lxs.98Redpill L8