blob: be1400e82482f8aebd4d14e17e9d5ea99958cd85 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _LINUX_TTY_FLIP_H
2#define _LINUX_TTY_FLIP_H
3
Alan Cox33f0f882006-01-09 20:54:13 -08004extern int tty_buffer_request_room(struct tty_struct *tty, size_t size);
5extern int tty_insert_flip_string(struct tty_struct *tty, unsigned char *chars, size_t size);
6extern int tty_insert_flip_string_flags(struct tty_struct *tty, unsigned char *chars, char *flags, size_t size);
7extern int tty_prepare_flip_string(struct tty_struct *tty, unsigned char **chars, size_t size);
8extern int tty_prepare_flip_string_flags(struct tty_struct *tty, unsigned char **chars, char **flags, size_t size);
9
Linus Torvalds1da177e2005-04-16 15:20:36 -070010#ifdef INCLUDE_INLINE_FUNCS
11#define _INLINE_ extern
12#else
13#define _INLINE_ static __inline__
14#endif
15
Alan Cox33f0f882006-01-09 20:54:13 -080016_INLINE_ int tty_insert_flip_char(struct tty_struct *tty,
Linus Torvalds1da177e2005-04-16 15:20:36 -070017 unsigned char ch, char flag)
18{
Alan Cox33f0f882006-01-09 20:54:13 -080019 struct tty_buffer *tb = tty->buf.tail;
20 if (tb && tb->used < tb->size) {
21 tb->flag_buf_ptr[tb->used] = flag;
22 tb->char_buf_ptr[tb->used++] = ch;
23 return 1;
Linus Torvalds1da177e2005-04-16 15:20:36 -070024 }
Alan Cox33f0f882006-01-09 20:54:13 -080025 return tty_insert_flip_string_flags(tty, &ch, &flag, 1);
Linus Torvalds1da177e2005-04-16 15:20:36 -070026}
27
28_INLINE_ void tty_schedule_flip(struct tty_struct *tty)
29{
Alan Cox33f0f882006-01-09 20:54:13 -080030 schedule_delayed_work(&tty->buf.work, 1);
Linus Torvalds1da177e2005-04-16 15:20:36 -070031}
32
33#undef _INLINE_
34
35
36#endif /* _LINUX_TTY_FLIP_H */
37
38
39
40
41
42
43