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>
This commit is contained in:
Родитель
e4a3d94658
Коммит
2832fc11f1
|
@ -231,9 +231,10 @@ int tty_buffer_request_room(struct tty_struct *tty, size_t size)
|
|||
EXPORT_SYMBOL_GPL(tty_buffer_request_room);
|
||||
|
||||
/**
|
||||
* tty_insert_flip_string - Add characters to the tty buffer
|
||||
* tty_insert_flip_string_fixed_flag - Add characters to the tty buffer
|
||||
* @tty: tty structure
|
||||
* @chars: characters
|
||||
* @flag: flag value for each character
|
||||
* @size: size
|
||||
*
|
||||
* Queue a series of bytes to the tty buffering. All the characters
|
||||
|
@ -242,8 +243,8 @@ EXPORT_SYMBOL_GPL(tty_buffer_request_room);
|
|||
* Locking: Called functions may take tty->buf.lock
|
||||
*/
|
||||
|
||||
int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars,
|
||||
size_t size)
|
||||
int tty_insert_flip_string_fixed_flag(struct tty_struct *tty,
|
||||
const unsigned char *chars, char flag, size_t size)
|
||||
{
|
||||
int copied = 0;
|
||||
do {
|
||||
|
@ -253,7 +254,7 @@ int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars,
|
|||
if (unlikely(space == 0))
|
||||
break;
|
||||
memcpy(tb->char_buf_ptr + tb->used, chars, space);
|
||||
memset(tb->flag_buf_ptr + tb->used, TTY_NORMAL, space);
|
||||
memset(tb->flag_buf_ptr + tb->used, flag, space);
|
||||
tb->used += space;
|
||||
copied += space;
|
||||
chars += space;
|
||||
|
@ -262,7 +263,7 @@ int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars,
|
|||
} while (unlikely(size > copied));
|
||||
return copied;
|
||||
}
|
||||
EXPORT_SYMBOL(tty_insert_flip_string);
|
||||
EXPORT_SYMBOL(tty_insert_flip_string_fixed_flag);
|
||||
|
||||
/**
|
||||
* tty_insert_flip_string_flags - Add characters to the tty buffer
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define _LINUX_TTY_FLIP_H
|
||||
|
||||
extern int tty_buffer_request_room(struct tty_struct *tty, size_t size);
|
||||
extern int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars, size_t size);
|
||||
extern int tty_insert_flip_string_flags(struct tty_struct *tty, const unsigned char *chars, const char *flags, size_t size);
|
||||
extern int tty_insert_flip_string_fixed_flag(struct tty_struct *tty, const unsigned char *chars, char flag, size_t size);
|
||||
extern int tty_prepare_flip_string(struct tty_struct *tty, unsigned char **chars, size_t size);
|
||||
extern int tty_prepare_flip_string_flags(struct tty_struct *tty, unsigned char **chars, char **flags, size_t size);
|
||||
void tty_schedule_flip(struct tty_struct *tty);
|
||||
|
@ -20,4 +20,9 @@ static inline int tty_insert_flip_char(struct tty_struct *tty,
|
|||
return tty_insert_flip_string_flags(tty, &ch, &flag, 1);
|
||||
}
|
||||
|
||||
static inline int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars, size_t size)
|
||||
{
|
||||
return tty_insert_flip_string_fixed_flag(tty, chars, TTY_NORMAL, size);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_TTY_FLIP_H */
|
||||
|
|
Загрузка…
Ссылка в новой задаче