Something went wrong. Try again.
Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293/* SPDX-License-Identifier: GPL-2.0 */#ifndef _LINUX_TTY_FLIP_H#define _LINUX_TTY_FLIP_H
#include <linux/tty_buffer.h>#include <linux/tty_port.h>
struct tty_ldisc;
int tty_buffer_set_limit(struct tty_port *port, int limit);unsigned int tty_buffer_space_avail(struct tty_port *port);int tty_buffer_request_room(struct tty_port *port, size_t size);size_t __tty_insert_flip_string_flags(struct tty_port *port, const u8 *chars, const u8 *flags, bool mutable_flags, size_t size);size_t tty_prepare_flip_string(struct tty_port *port, u8 **chars, size_t size);void tty_flip_buffer_push(struct tty_port *port);
/** * tty_insert_flip_string_fixed_flag - add characters to the tty buffer * @port: tty port * @chars: characters * @flag: flag value for each character * @size: size * * Queue a series of bytes to the tty buffering. All the characters passed are * marked with the supplied flag. * * Returns: the number added. */static inline size_t tty_insert_flip_string_fixed_flag(struct tty_port *port, const u8 *chars, u8 flag, size_t size){ return __tty_insert_flip_string_flags(port, chars, &flag, false, size);}
/** * tty_insert_flip_string_flags - add characters to the tty buffer * @port: tty port * @chars: characters * @flags: flag bytes * @size: size * * Queue a series of bytes to the tty buffering. For each character the flags * array indicates the status of the character. * * Returns: the number added. */static inline size_t tty_insert_flip_string_flags(struct tty_port *port, const u8 *chars, const u8 *flags, size_t size){ return __tty_insert_flip_string_flags(port, chars, flags, true, size);}
/** * tty_insert_flip_char - add one character to the tty buffer * @port: tty port * @ch: character * @flag: flag byte * * Queue a single byte @ch to the tty buffering, with an optional flag. */static inline size_t tty_insert_flip_char(struct tty_port *port, u8 ch, u8 flag){ struct tty_buffer *tb = port->buf.tail; int change;
change = !tb->flags && (flag != TTY_NORMAL); if (!change && tb->used < tb->size) { if (tb->flags) *flag_buf_ptr(tb, tb->used) = flag; *char_buf_ptr(tb, tb->used++) = ch; return 1; } return __tty_insert_flip_string_flags(port, &ch, &flag, false, 1);}
static inline size_t tty_insert_flip_string(struct tty_port *port, const u8 *chars, size_t size){ return tty_insert_flip_string_fixed_flag(port, chars, TTY_NORMAL, size);}
size_t tty_ldisc_receive_buf(struct tty_ldisc *ld, const u8 *p, const u8 *f, size_t count);
void tty_buffer_lock_exclusive(struct tty_port *port);void tty_buffer_unlock_exclusive(struct tty_port *port);
#endif /* _LINUX_TTY_FLIP_H */