OLD | NEW |
1 /* Copyright 2013 The Chromium Authors. All rights reserved. | 1 /* Copyright 2013 The Chromium Authors. All rights reserved. |
2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
3 * found in the LICENSE file. */ | 3 * found in the LICENSE file. */ |
4 | 4 |
5 #ifndef LIBRARIES_NACL_IO_IOCTL_H_ | 5 #ifndef LIBRARIES_NACL_IO_IOCTL_H_ |
6 #define LIBRARIES_NACL_IO_IOCTL_H_ | 6 #define LIBRARIES_NACL_IO_IOCTL_H_ |
7 | 7 |
8 #include <sys/types.h> | 8 #include <sys/types.h> |
9 | 9 |
10 /* | 10 /* |
11 * ioctl to feed input to a tty node. Accepts a pointer to the following | 11 * ioctl to register an output handler with the tty node. Will fail with |
12 * struct (tioc_nacl_input_string), which contains a pointer to an array | 12 * EALREADY if a handler is already registered. Expects an argument of type |
13 * of characters. | 13 * tioc_nacl_output. The handler will be called during calls to write() on the |
14 */ | 14 * thread that calls write(), or, for echoed input during the |
15 #define TIOCNACLINPUT 0xadcd02 | 15 * NACL_IOC_HANDLEMESSAGE ioctl() on the thread calling ioctl(). The handler |
16 | 16 * should return the number of bytes written/handled, or -errno if an error |
17 /* | 17 * occured. |
18 * ioctl to register an output handler with the tty node. Will fail | |
19 * with EALREADY if a handler is already registered. Expects an | |
20 * argument of type tioc_nacl_output. The handler will be called during | |
21 * calls to write() on the thread that calls write(), or, for echoed input | |
22 * during the TIOCNACLINPUT ioctl() on the thread calling ioctl(). The | |
23 * handler should return the number of bytes written/handled, or -errno | |
24 * if an error occured. | |
25 */ | 18 */ |
26 #define TIOCNACLOUTPUT 0xadcd03 | 19 #define TIOCNACLOUTPUT 0xadcd03 |
27 | 20 |
28 /* | 21 /* |
29 * ioctl used to set a name for a JavaScript pipe. The name | 22 * ioctl used to set a name for a JavaScript pipe. The name |
30 * is a string that is used to uniquely identify messages posted to and from | 23 * is a string that is used to uniquely identify messages posted to and from |
31 * JavaScript which signifies that the message is destined for a | 24 * JavaScript which signifies that the message is destined for a |
32 * particular pipe device. For this reason each device must have a | 25 * particular pipe device. For this reason each device must have a |
33 * unique prefix. Until a prefix is set on a given pipe any I/O operations | 26 * unique prefix. Until a prefix is set on a given pipe any I/O operations |
34 * will return EIO. | 27 * will return EIO. |
35 */ | 28 */ |
36 #define NACL_IOC_PIPE_SETNAME 0xadcd04 | 29 #define NACL_IOC_PIPE_SETNAME 0xadcd04 |
37 | 30 |
38 /* | 31 /* |
39 * Find out how much space is available in a nacl_io pipe. | 32 * Find out how much space is available in a nacl_io pipe. |
40 * Argument type is "int*" which will be set to the amount of space in the | 33 * Argument type is "int*" which will be set to the amount of space in the |
41 * pipe in bytes. | 34 * pipe in bytes. |
42 */ | 35 */ |
43 #define NACL_IOC_PIPE_GETOSPACE 0xadcd06 | 36 #define NACL_IOC_PIPE_GETOSPACE 0xadcd06 |
44 #define NACL_IOC_PIPE_GETISPACE 0xadcd07 | 37 #define NACL_IOC_PIPE_GETISPACE 0xadcd07 |
45 | 38 |
46 /* | 39 /* |
47 * ioctl used to pass messages from JavaScript to a node. | 40 * ioctl used to pass messages from JavaScript to a node. |
48 * Argument type is "struct PP_Var*". | 41 * Argument type is "struct PP_Var*". |
49 */ | 42 */ |
50 #define NACL_IOC_HANDLEMESSAGE 0xadcd05 | 43 #define NACL_IOC_HANDLEMESSAGE 0xadcd05 |
51 | 44 |
52 typedef char* naclioc_jspipe_name; | 45 typedef char* naclioc_jspipe_name; |
53 | 46 |
54 struct tioc_nacl_input_string { | |
55 size_t length; | |
56 const char* buffer; | |
57 }; | |
58 | |
59 typedef ssize_t (*tioc_nacl_output_handler_t)(const char* buf, | 47 typedef ssize_t (*tioc_nacl_output_handler_t)(const char* buf, |
60 size_t count, | 48 size_t count, |
61 void* user_data); | 49 void* user_data); |
62 | 50 |
63 struct tioc_nacl_output { | 51 struct tioc_nacl_output { |
64 tioc_nacl_output_handler_t handler; | 52 tioc_nacl_output_handler_t handler; |
65 void* user_data; | 53 void* user_data; |
66 }; | 54 }; |
67 | 55 |
68 | 56 |
69 #endif /* LIBRARIES_NACL_IO_NACL_IO_H_ */ | 57 #endif /* LIBRARIES_NACL_IO_NACL_IO_H_ */ |
OLD | NEW |