Commit 2832fc11f1360668482beec06dbcd631ae5f0cf1
Committed by
Greg Kroah-Hartman
1 parent
e4a3d94658
USB: tty: Add a function to insert a string of characters with the same flag
The USB drivers often want to insert a series of bytes all with the same flag set - provide a helper for this case. Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Showing 2 changed files with 12 additions and 6 deletions Side-by-side Diff
drivers/char/tty_buffer.c
... | ... | @@ -231,9 +231,10 @@ |
231 | 231 | EXPORT_SYMBOL_GPL(tty_buffer_request_room); |
232 | 232 | |
233 | 233 | /** |
234 | - * tty_insert_flip_string - Add characters to the tty buffer | |
234 | + * tty_insert_flip_string_fixed_flag - Add characters to the tty buffer | |
235 | 235 | * @tty: tty structure |
236 | 236 | * @chars: characters |
237 | + * @flag: flag value for each character | |
237 | 238 | * @size: size |
238 | 239 | * |
239 | 240 | * Queue a series of bytes to the tty buffering. All the characters |
... | ... | @@ -242,8 +243,8 @@ |
242 | 243 | * Locking: Called functions may take tty->buf.lock |
243 | 244 | */ |
244 | 245 | |
245 | -int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars, | |
246 | - size_t size) | |
246 | +int tty_insert_flip_string_fixed_flag(struct tty_struct *tty, | |
247 | + const unsigned char *chars, char flag, size_t size) | |
247 | 248 | { |
248 | 249 | int copied = 0; |
249 | 250 | do { |
... | ... | @@ -253,7 +254,7 @@ |
253 | 254 | if (unlikely(space == 0)) |
254 | 255 | break; |
255 | 256 | memcpy(tb->char_buf_ptr + tb->used, chars, space); |
256 | - memset(tb->flag_buf_ptr + tb->used, TTY_NORMAL, space); | |
257 | + memset(tb->flag_buf_ptr + tb->used, flag, space); | |
257 | 258 | tb->used += space; |
258 | 259 | copied += space; |
259 | 260 | chars += space; |
... | ... | @@ -262,7 +263,7 @@ |
262 | 263 | } while (unlikely(size > copied)); |
263 | 264 | return copied; |
264 | 265 | } |
265 | -EXPORT_SYMBOL(tty_insert_flip_string); | |
266 | +EXPORT_SYMBOL(tty_insert_flip_string_fixed_flag); | |
266 | 267 | |
267 | 268 | /** |
268 | 269 | * tty_insert_flip_string_flags - Add characters to the tty buffer |
include/linux/tty_flip.h
... | ... | @@ -2,8 +2,8 @@ |
2 | 2 | #define _LINUX_TTY_FLIP_H |
3 | 3 | |
4 | 4 | extern int tty_buffer_request_room(struct tty_struct *tty, size_t size); |
5 | -extern int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars, size_t size); | |
6 | 5 | extern int tty_insert_flip_string_flags(struct tty_struct *tty, const unsigned char *chars, const char *flags, size_t size); |
6 | +extern int tty_insert_flip_string_fixed_flag(struct tty_struct *tty, const unsigned char *chars, char flag, size_t size); | |
7 | 7 | extern int tty_prepare_flip_string(struct tty_struct *tty, unsigned char **chars, size_t size); |
8 | 8 | extern int tty_prepare_flip_string_flags(struct tty_struct *tty, unsigned char **chars, char **flags, size_t size); |
9 | 9 | void tty_schedule_flip(struct tty_struct *tty); |
... | ... | @@ -18,6 +18,11 @@ |
18 | 18 | return 1; |
19 | 19 | } |
20 | 20 | return tty_insert_flip_string_flags(tty, &ch, &flag, 1); |
21 | +} | |
22 | + | |
23 | +static inline int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars, size_t size) | |
24 | +{ | |
25 | + return tty_insert_flip_string_fixed_flag(tty, chars, TTY_NORMAL, size); | |
21 | 26 | } |
22 | 27 | |
23 | 28 | #endif /* _LINUX_TTY_FLIP_H */ |