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  * occurred.
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