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_unix
flags
suitable for passing to open()
and fopen()
in PIO_unix_open()
and PIO_unix_fdopen()
respectively.PIO_unix_init
std*
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_async
PARROT_ASYNC_DEVEL
is defined.O_ASYNC
flag on the IO file descriptor.PIO_unix_fdopen
ParrotIO
with file descriptor fd
.PIO_unix_close
*io
's file descriptor.PIO_unix_isatty
fd
is a console/tty.PIO_unix_getblksize
fstat()
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_flush
flush
is to ask the kernel to sync()
.sync()
here?PIO_unix_read
read()
to return up to len
bytes in the memory starting at buffer
.PIO_unix_write
write()
to write len
bytes from the memory starting at buffer
to the file descriptor in *io
.PIO_unix_seek
lseek()
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_in
PIO_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_socket
socket()
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_listen
STREAM
or SEQ
sockets.PIO_unix_accept
ParrotIO
socket.PIO_unix_send
*s
to *io
's connected socket.PIO_unix_recv
**s
from *io
's connected socket.PIO_unix_poll
PIO_unix_pipe
exec
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).
|