1 /* vi: set sw=4 ts=4: */
3 * compact speed_t <-> speed functions for busybox
5 * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org>
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
17 static const struct speed_map speeds
[] = {
38 {B38400
, 38400/256 + 0x8000U
},
40 {EXTB
, 38400/256 + 0x8000U
},
43 {B57600
, 57600/256 + 0x8000U
},
46 {B115200
, 115200/256 + 0x8000U
},
49 {B230400
, 230400/256 + 0x8000U
},
52 {B460800
, 460800/256 + 0x8000U
},
56 enum { NUM_SPEEDS
= ARRAY_SIZE(speeds
) };
58 unsigned FAST_FUNC
tty_baud_to_value(speed_t speed
)
63 if (speed
== speeds
[i
].speed
) {
64 if (speeds
[i
].value
& 0x8000U
) {
65 return ((unsigned long) (speeds
[i
].value
) & 0x7fffU
) * 256;
67 return speeds
[i
].value
;
69 } while (++i
< NUM_SPEEDS
);
74 speed_t FAST_FUNC
tty_value_to_baud(unsigned int value
)
79 if (value
== tty_baud_to_value(speeds
[i
].speed
)) {
80 return speeds
[i
].speed
;
82 } while (++i
< NUM_SPEEDS
);
96 for (v
= 0 ; v
< 500000; v
++) {
97 s
= tty_value_to_baud(v
);
98 if (s
== (speed_t
) -1) {
101 printf("v = %lu -- s = %0lo\n", v
, (unsigned long) s
);
104 printf("-------------------------------\n");
106 for (s
= 0 ; s
< 010017+1; s
++) {
107 v
= tty_baud_to_value(s
);
111 printf("v = %lu -- s = %0lo\n", v
, (unsigned long) s
);