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 (12 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.
file annotate diff log raw
nkeynes@998
     1
/**
nkeynes@1021
     2
 * $Id$
nkeynes@998
     3
 * 
nkeynes@998
     4
 * GDB RDP server stub - SH4 + ARM
nkeynes@998
     5
 *
nkeynes@998
     6
 * Copyright (c) 2009 Nathan Keynes.
nkeynes@998
     7
 *
nkeynes@998
     8
 * This program is free software; you can redistribute it and/or modify
nkeynes@998
     9
 * it under the terms of the GNU General Public License as published by
nkeynes@998
    10
 * the Free Software Foundation; either version 2 of the License, or
nkeynes@998
    11
 * (at your option) any later version.
nkeynes@998
    12
 *
nkeynes@998
    13
 * This program is distributed in the hope that it will be useful,
nkeynes@998
    14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
nkeynes@998
    15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
nkeynes@998
    16
 * GNU General Public License for more details.
nkeynes@998
    17
 */
nkeynes@998
    18
nkeynes@998
    19
#ifndef lxdream_netutil_H
nkeynes@998
    20
#define lxdream_netutil_H 1
nkeynes@998
    21
nkeynes@998
    22
#include <netinet/in.h>
nkeynes@998
    23
#include "lxdream.h"
nkeynes@998
    24
nkeynes@1077
    25
typedef void *io_listener_t;
nkeynes@1077
    26
nkeynes@998
    27
/**
nkeynes@998
    28
 * Construct a server socket listening on the given interface and port. If port
nkeynes@998
    29
 * is 0, a dynamic port will be bound instead. 
nkeynes@998
    30
 * This method does not register a listener.
nkeynes@998
    31
 * @return newly created socket fd, or -1 on failure.
nkeynes@998
    32
 */ 
nkeynes@1077
    33
int io_create_server_socket(const char *interface, int port );
nkeynes@998
    34
nkeynes@998
    35
/**
nkeynes@998
    36
 * Callback invoked when data is available from the remote peer, or when the peer
nkeynes@998
    37
 * connects/disconnects.
nkeynes@998
    38
 * 
nkeynes@998
    39
 * @param fd     file descriptor of the connected socket
nkeynes@998
    40
 * @param data   data supplied when the callback was registered
nkeynes@998
    41
 * @return TRUE to maintain the connection, FALSE to immediately disconnected + close.
nkeynes@998
    42
 */
nkeynes@1077
    43
typedef gboolean (*io_callback_t)( int fd, void *data );
nkeynes@998
    44
nkeynes@998
    45
/**
nkeynes@998
    46
 * Register a TCP server socket listener on an already open (and listening) 
nkeynes@998
    47
 * socket. The socket must not have been previously registered.
nkeynes@1077
    48
 * @return NULL on failure, otherwise an io listener handle.
nkeynes@998
    49
 * 
nkeynes@998
    50
 * Note: Implementation is platform specific
nkeynes@998
    51
 */ 
nkeynes@1077
    52
io_listener_t io_register_tcp_listener( int fd, io_callback_t callback, void *data, void (*dealloc)(void*) );
nkeynes@1077
    53
nkeynes@1077
    54
/**
nkeynes@1077
    55
 * Register an I/O listener on an open file descriptor. The fd must not have
nkeynes@1077
    56
 * been previously registered.
nkeynes@1077
    57
 * @return TRUE on success, FALSE on failure.
nkeynes@1077
    58
 */
nkeynes@1077
    59
io_listener_t io_register_listener( int fd, io_callback_t callback, void *data, void (*dealloc)(void *) );
nkeynes@998
    60
nkeynes@998
    61
/**
nkeynes@998
    62
 * Unregister a socket that was previously registered with the system. This
nkeynes@998
    63
 * does not close the socket, but will remove any callbacks associated with the socket.
nkeynes@998
    64
 */ 
nkeynes@1077
    65
void io_unregister_listener( io_listener_t handle );
nkeynes@998
    66
nkeynes@998
    67
#endif /* !lxdream_netutil_H */
.