mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-28 09:31:14 +00:00
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:
parent
e4a3d94658
commit
2832fc11f1
2 changed files with 12 additions and 6 deletions
|
@ -231,9 +231,10 @@ int tty_buffer_request_room(struct tty_struct *tty, size_t size)
|
||||||
EXPORT_SYMBOL_GPL(tty_buffer_request_room);
|
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
|
* @tty: tty structure
|
||||||
* @chars: characters
|
* @chars: characters
|
||||||
|
* @flag: flag value for each character
|
||||||
* @size: size
|
* @size: size
|
||||||
*
|
*
|
||||||
* Queue a series of bytes to the tty buffering. All the characters
|
* 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
|
* Locking: Called functions may take tty->buf.lock
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars,
|
int tty_insert_flip_string_fixed_flag(struct tty_struct *tty,
|
||||||
size_t size)
|
const unsigned char *chars, char flag, size_t size)
|
||||||
{
|
{
|
||||||
int copied = 0;
|
int copied = 0;
|
||||||
do {
|
do {
|
||||||
|
@ -253,7 +254,7 @@ int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars,
|
||||||
if (unlikely(space == 0))
|
if (unlikely(space == 0))
|
||||||
break;
|
break;
|
||||||
memcpy(tb->char_buf_ptr + tb->used, chars, space);
|
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;
|
tb->used += space;
|
||||||
copied += space;
|
copied += space;
|
||||||
chars += space;
|
chars += space;
|
||||||
|
@ -262,7 +263,7 @@ int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars,
|
||||||
} while (unlikely(size > copied));
|
} while (unlikely(size > copied));
|
||||||
return 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
|
* tty_insert_flip_string_flags - Add characters to the tty buffer
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
#define _LINUX_TTY_FLIP_H
|
#define _LINUX_TTY_FLIP_H
|
||||||
|
|
||||||
extern int tty_buffer_request_room(struct tty_struct *tty, size_t size);
|
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_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(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);
|
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);
|
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);
|
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 */
|
#endif /* _LINUX_TTY_FLIP_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue