Search
lxdream.org :: lxdream/src/ioutil.h
lxdream 0.9.1
released Jun 29
Download Now
filename src/ioutil.h
changeset 1077:136fc24d17ef
prevsrc/netutil.h@1021:848db285a184
next1204:c4b725d901b1
author nkeynes
date Wed Oct 07 17:53:56 2009 +1000 (14 years ago)
permissions -rw-r--r--
last change Create a host attachment for the SCIF serial port. By default, uses /dev/console
Add general fd listening to netutil, and rename to ioutil
Add SCIF update on port read/write - fixes KOS timing problems but needs to
be redone properly.
view annotate diff log raw
     1 /**
     2  * $Id$
     3  * 
     4  * GDB RDP server stub - SH4 + ARM
     5  *
     6  * Copyright (c) 2009 Nathan Keynes.
     7  *
     8  * This program is free software; you can redistribute it and/or modify
     9  * it under the terms of the GNU General Public License as published by
    10  * the Free Software Foundation; either version 2 of the License, or
    11  * (at your option) any later version.
    12  *
    13  * This program is distributed in the hope that it will be useful,
    14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16  * GNU General Public License for more details.
    17  */
    19 #ifndef lxdream_netutil_H
    20 #define lxdream_netutil_H 1
    22 #include <netinet/in.h>
    23 #include "lxdream.h"
    25 typedef void *io_listener_t;
    27 /**
    28  * Construct a server socket listening on the given interface and port. If port
    29  * is 0, a dynamic port will be bound instead. 
    30  * This method does not register a listener.
    31  * @return newly created socket fd, or -1 on failure.
    32  */ 
    33 int io_create_server_socket(const char *interface, int port );
    35 /**
    36  * Callback invoked when data is available from the remote peer, or when the peer
    37  * connects/disconnects.
    38  * 
    39  * @param fd     file descriptor of the connected socket
    40  * @param data   data supplied when the callback was registered
    41  * @return TRUE to maintain the connection, FALSE to immediately disconnected + close.
    42  */
    43 typedef gboolean (*io_callback_t)( int fd, void *data );
    45 /**
    46  * Register a TCP server socket listener on an already open (and listening) 
    47  * socket. The socket must not have been previously registered.
    48  * @return NULL on failure, otherwise an io listener handle.
    49  * 
    50  * Note: Implementation is platform specific
    51  */ 
    52 io_listener_t io_register_tcp_listener( int fd, io_callback_t callback, void *data, void (*dealloc)(void*) );
    54 /**
    55  * Register an I/O listener on an open file descriptor. The fd must not have
    56  * been previously registered.
    57  * @return TRUE on success, FALSE on failure.
    58  */
    59 io_listener_t io_register_listener( int fd, io_callback_t callback, void *data, void (*dealloc)(void *) );
    61 /**
    62  * Unregister a socket that was previously registered with the system. This
    63  * does not close the socket, but will remove any callbacks associated with the socket.
    64  */ 
    65 void io_unregister_listener( io_listener_t handle );
    67 #endif /* !lxdream_netutil_H */
.