Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages | Examples

Low Level I/O
[C Runtime Library.]

Collaboration diagram for Low Level I/O:


Detailed Description

Low level input and output operations.

 #include <io.h> 

Standard C runtime file interface to Nut/OS devices.


Defines

#define _O_RDONLY   0x0000
#define _O_WRONLY   0x0001
#define _O_RDWR   0x0002
#define _O_APPEND   0x0008
#define _O_CREAT   0x0100
#define _O_TRUNC   0x0200
#define _O_EXCL   0x0400
#define _O_TEXT   0x4000
#define _O_BINARY   0x8000
#define IOCTL_GETSTATUS   0x0001
#define IOCTL_SETSTATUS   0x0002
#define IOCTL_SETBUFFERMODE   0x0003
#define IOCTL_GETBUFFERMODE   0x0004
#define IOCTL_GETOUTBUFSIZE   0x0005
#define IOCTL_SETOUTBUFSIZE   0x0006
#define IOCTL_GETINBUFSIZE   0x0007
#define IOCTL_SETINBUFSIZE   0x0008
#define IOCTL_FLUSHOUTBUF   0x0009
 Flush the output buffer.
#define IOCTL_GETFILESIZE   0x000A
 Return the number of bytes currently available in the input buffer.
#define IOCTL_GETOUTBUFCOUNT   0x000B
 Return the number of bytes currently available in the input buffer.
#define IOCTL_GETINBUFCOUNT   0x000C
 Return the number of bytes currently available in the output buffer.

Functions

int _close (int fd)
 Close a file, device or socket.
long _filelength (int fd)
 Return the length of a file.
int _ioctl (int fd, int cmd, void *data)
 Perform device specific control functions.
int _open (CONST char *name, int mode)
 Open a file.
int _read (int fd, void *buffer, unsigned int count)
 Read data from a file, device or socket.
int _seek (int fd, long offset, int origin)
 Move read/write position of a file.
long _tell (int fd)
 Return the read/write position of a stream.
int _write (int fd, CONST void *data, unsigned int count)
 Write data to a file, device or socket.
int _write_P (int fd, PGM_P data, unsigned int count)
 Writes data from program space to a file, device or socket.


Define Documentation

#define _O_RDONLY   0x0000
 

Read only.

#define _O_WRONLY   0x0001
 

Write only.

#define _O_RDWR   0x0002
 

Read and write.

#define _O_APPEND   0x0008
 

Start writing at the end.

#define _O_CREAT   0x0100
 

Create file if it does not exist.

#define _O_TRUNC   0x0200
 

Truncate file if it exists.

#define _O_EXCL   0x0400
 

Open only if it does not exist.

#define _O_TEXT   0x4000
 

EOL translation.

#define _O_BINARY   0x8000
 

Raw mode.

#define IOCTL_FLUSHOUTBUF   0x0009
 

Flush the output buffer.

Currently not provided by any known device.


Function Documentation

int _close int  fd  ) 
 

Close a file, device or socket.

The calling thread may be suspended until all buffered output data has been written.

Parameters:
fd Descriptor of a previously opened file, device or connected socket.
Returns:
0 if the file was successfully closed or -1 to indicate an error.

long _filelength int  fd  ) 
 

Return the length of a file.

Parameters:
fd Descriptor of a previously opened file, device or connected socket.
Returns:
Filelength in bytes or -1 in case of an error.

int _ioctl int  fd,
int  cmd,
void *  data
 

Perform device specific control functions.

Check the specific device driver for a list of supported control functions.

Parameters:
fd Descriptor of a previously opened device or connected socket.
cmd Requested control function.
data Points to a buffer that contains any data required for the given control function or receives data from that function.

int _open CONST char *  name,
int  mode
 

Open a file.

Parameters:
name The name of a registered device, optionally followed by a colon and a filename.
mode Operation mode. May be any of the following:
  • _O_APPEND Always write at the end.
  • _O_BINARY Raw mode.
  • _O_CREAT Create file if it does not exist.
  • _O_EXCL Open only if it does not exist.
  • _O_RDONLY Read only.
  • _O_RDWR Read and write.
  • _O_TEXT End of line translation.
  • _O_TRUNC Truncate file if it exists.
  • _O_WRONLY Write only.
Returns:
File descriptor for the opened file or -1 to indicate an error.

int _read int  fd,
void *  buffer,
unsigned int  count
 

Read data from a file, device or socket.

Parameters:
fd Descriptor of a previously opened file, device or connected socket.
buffer Pointer to the buffer that receives the data.
count Maximum number of bytes to read.
Returns:
The number of bytes read, which may be less than the number of bytes specified. A return value of -1 indicates an error.
Examples:
playmp3/playmp3.c, and uart/uart.c.

int _seek int  fd,
long  offset,
int  origin
 

Move read/write position of a file.

Parameters:
fd Descriptor of a previously opened file, device or connected socket.
offset Number of bytes from initial position.
origin Initial position to seek from.
Returns:
0 if no error occured -1 on error. errno is set

long _tell int  fd  ) 
 

Return the read/write position of a stream.

Parameters:
fd Descriptor of a previously opened file, device or connected socket.
Returns:
The current position or -1 on error.

int _write int  fd,
CONST void *  data,
unsigned int  count
 

Write data to a file, device or socket.

Parameters:
fd Descriptor of a previously opened file, device or connected socket.
data Pointer to data in program space to be written.
count Number of bytes to write.
Returns:
The number of bytes written, which may be less than the number of bytes specified. A return value of -1 indicates an error.
Note:
The write implementation of the underlying driver does not need to be thread-safe. Parallel writes using device usartavr will lead to intermixed data (if data doesn't fit into ringbuffer on the first try )
Examples:
uart/uart.c.

int _write_P int  fd,
PGM_P  data,
unsigned int  count
 

Writes data from program space to a file, device or socket.

Similar to _write() except that the data is located in program memory.

Parameters:
fd Descriptor of a previously opened file, device or connected socket.
data Pointer to data in program space to be written.
count Number of bytes to write.
Returns:
The number of bytes written, which may be less than the number of bytes specified. A return value of -1 indicates an error.
Note:
The write implementation of the underlying driver does not need to be thread-safe. Parallel writes using device usartavr will lead to intermixed data (if data doesn't fit into ringbuffer on the first try )
Examples:
uart/uart.c.


© 2000-2006 by egnite Software GmbH - visit http://www.ethernut.de/