
For a namespace clean function, implement
_fstat, otherwise implement
fstat. The detailed implementation will
depend on the file handling functionality available.
A minimal implementation should assume that all files are character special devices and populate the status data structure accordingly.
#include <sys/stat.h>
int
_fstat (int file,
struct stat *st)
{
st->st_mode = S_IFCHR;
return 0;
} /* _fstat () */
The OpenRISC 1000 implementation requires two versions of this, one for the BSP using the console for output and one for the BSP using a UART and supporting both standard input and standard output.
Without a UART, the implementation still checks that the file descriptor is one of the two that are supported, and otherwise returns an error.
#include <errno.h>
#include <sys/stat.h>
#include <unistd.h>
#undef errno
extern int errno;
int
_fstat (int file,
struct stat *st)
{
if ((STDOUT_FILENO == file) || (STDERR_FILENO == file))
{
st->st_mode = S_IFCHR;
return 0;
}
else
{
errno = EBADF;
return -1;
}
} /* _fstat () */
The implementation when a UART is available is almost identical,
except that STDIN_FILENO is also an acceptable
file for which status can be provided.
