Commit 2832fc11f1360668482beec06dbcd631ae5f0cf1

Authored by Alan Cox
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 */