0179c299216db5780746979e934f501a499e67b8
[barrelfish] / include / barrelfish / terminal.h
1 /**
2  * \file
3  * \brief Terminal emulator.
4  */
5
6 /*
7  * Copyright (c) 2007, 2008, ETH Zurich.
8  * All rights reserved.
9  *
10  * This file is distributed under the terms in the attached LICENSE file.
11  * If you do not find this file, copies can be found by writing to:
12  * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
13  */
14
15 #ifndef TERMINAL_H
16 #define TERMINAL_H
17
18 #include <sys/cdefs.h>
19
20 __BEGIN_DECLS
21
22 /**
23  * \brief Callback function to be called when input arrives at the terminal.
24  *
25  * This function must not alter the input string.
26  */
27 typedef void (*terminal_input_handler) (void * user_data, const char *data,
28                                         size_t length);
29
30 errval_t terminal_register_input_handler (terminal_input_handler handler,
31                                           void * user_data);
32 void terminal_unregister_input_handler (terminal_input_handler handler);
33
34 size_t terminal_write(const char *data, size_t length);
35 size_t terminal_read(char *data, size_t count);
36
37 void terminal_input(char *data, size_t length);
38 errval_t terminal_init(void);
39 errval_t terminal_want_stdin(unsigned int sources);
40
41 // XXX: arguments to terminal_want_stdin (bitmask)
42 #define TERMINAL_SOURCE_SERIAL   0x1
43 #define TERMINAL_SOURCE_KEYBOARD 0x2
44
45 __END_DECLS
46
47 #endif