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