| 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 |