/* Copyright 2013 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef LIBRARIES_NACL_IO_IOCTL_H_ #define LIBRARIES_NACL_IO_IOCTL_H_ #include <sys/types.h> /* * ioctl to feed input to a tty node. Accepts a pointer to the following * struct (tioc_nacl_input_string), which contains a pointer to an array * of characters. */ #define TIOCNACLINPUT 0xadcd02 /* * ioctl to register an output handler with the tty node. Will fail * with EALREADY if a handler is already registered. Expects an * argument of type tioc_nacl_output. The handler will be called during * calls to write() on the thread that calls write(), or, for echoed input * during the TIOCNACLINPUT ioctl() on the thread calling ioctl(). The * handler should return the number of bytes written/handled, or -errno * if an error occured. */ #define TIOCNACLOUTPUT 0xadcd03 /* * ioctl used to set a name for a JavaScript pipe. The name * is a string that is used to uniquely identify messages posted to and from * JavaScript which signifies that the message is destined for a * particular pipe device. For this reason each device must have a * unique prefix. Until a prefix is set on a given pipe any I/O operations * will return EIO. */ #define TIOCNACLPIPENAME 0xadcd04 typedef char* tioc_nacl_jspipe_name; struct tioc_nacl_input_string { size_t length; const char* buffer; }; typedef ssize_t (*tioc_nacl_output_handler_t)(const char* buf, size_t count, void* user_data); struct tioc_nacl_output { tioc_nacl_output_handler_t handler; void* user_data; }; #endif /* LIBRARIES_NACL_IO_NACL_IO_H_ */