| parrotcode: UNIX IO layer | |
| Contents | C |

src/io/io_unix.c - UNIX IO layer

This is the Parrot UNIX IO layer. It implements unbuffered, low-level, UNIX-specific functionality.
As "UNIX" is already a generalization, it may be necessary to create separate OS-specific layers for UNIX flavors, to avoid over-complicating this file.

APitUE - W. Richard Stevens, AT&T SFIO, Perl5 (Nick Ing-Simmons)

flags_to_unixflags suitable for passing to open() and fopen() in PIO_unix_open() and PIO_unix_fdopen() respectively.PIO_unix_initstd* IO handles.
Returns 0 on success and -1 on error.PIO_unix_open*spath.
flags is a bitwise or combination of PIO_F_* values.PIO_unix_asyncPARROT_ASYNC_DEVEL is defined.O_ASYNC flag on the IO file descriptor.PIO_unix_fdopenParrotIO with file descriptor fd.PIO_unix_close*io's file descriptor.PIO_unix_isattyfd is a console/tty.PIO_unix_getblksizefstat() and the stat buffer are used if available.BLKSIZE constant is returned if it was available at compile time,
otherwise PIO_BLKSIZE is returned.PIO_unix_flushflush is to ask the kernel to sync().sync() here?PIO_unix_readread() to return up to len bytes in the memory starting at buffer.PIO_unix_writewrite() to write len bytes from the memory starting at buffer to the file descriptor in *io.PIO_unix_seeklseek() to advance the read/write position on *io's file descriptor to offset bytes from the location indicated by whence.PIO_unix_tell*io's file discriptor.
Define PARROT_NET_DEVEL to enable networking.
These could be native extensions but they probably should be here if we wish to make them integrated with the async IO system.
Very minimal stubs for now, maybe someone will run with these.
PIO_sockaddr_inPIO_sockaddr_in() is not part of the layer and so must be extern.htons(),
inet_aton(),
etc.) and take this out of platform specific compilationPIO_unix_socketsocket() to create a socket with the specified address family,
socket type and protocol number.PIO_unix_connect*io's socket to address *r.PIO_unix_bind*io's socket to the local address and port specified by *l.PIO_unix_listenSTREAM or SEQ sockets.PIO_unix_acceptParrotIO socket.PIO_unix_send*s to *io's connected socket.PIO_unix_recv**s from *io's connected socket.PIO_unix_pollPIO_unix_pipeexec for now.
src/io/io_buf.c, src/io/io_passdown.c, src/io/io_stdio.c, src/io/io_unix.c, src/io/io_win32.c, src/io/io.c, src/io/io_private.h.

Initially written by Melvin Smith (mrjoltcola@mindspring.com).
|
|
|