Services and Modeling for Embedded Software Development
Embecosm divider strip
Prev  Next

5.3.12.  Set Position in a File, lseek

For a namespace clean function, implement _lseek, otherwise implement lseek. The detailed implementation will depend on the file handling functionality available.

A minimal implementation has no file system, so this function can return 0, indicating that the only stream (standard output) is positioned at the start of file.

#include <errno.h>

#undef errno
extern int  errno;

int
_lseek (int   file,
        int   offset,
        int   whence)
{
  return  0;

}       /* _lseek () */
	  

The OpenRISC 1000  version is a little more detailed, returning zero only if the stream is standard output, standard error or (for the UART version of the BSP) standard input. Otherwise -1 is returned and an appropriate error code set in errno.

#include <errno.h>
#include <unistd.h>

#undef errno
extern int  errno;

int
_lseek (int   file,
        int   offset,
        int   whence)
{
  if ((STDOUT_FILENO == file) || (STDERR_FILENO == file))
    {
      return  0;
    }
  else
    {
      errno = EBADF;
      return  (long) -1;
    }
}       /* _lseek () */
	  

The UART version is almost identical, but also succeeds for standard input.

Embecosm divider strip