root/native_client_sdk/src/libraries/nacl_io/ioctl.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


/* 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_ */

/* [<][>][^][v][top][bottom][index][help] */