lseek() on entries in /proc/device-tree returns EINVAL
Timur Tabi
timur at freescale.com
Thu Apr 17 06:57:59 EST 2008
I'm writing a utility that parses the device tree in /proc/device-tree, and in
order to read a property into memory, I have to first find out how large it is.
So I have the following code:
off_t off;
int f;
f = open(filename, O_RDONLY);
if (f == -1) {
perror(__func__);
return NULL;
}
off = lseek(f, 0, SEEK_END);
if (off == -1) {
perror(__func__);
goto fail;
}
The lseek() call returns -1, and errno is set to EINVAL. According to the man
page, this means:
EINVAL The whence argument is not a proper value, or the resulting
file offset would be negative for a regular file, block special
file, or directory.
Is there a limitation for the implementation of /proc/device-tree that prevents
lseek() from working? If so, how do I determine the size of a property?
--
Timur Tabi
Linux kernel developer at Freescale
More information about the Linuxppc-dev
mailing list