Messages in this thread | | | Subject | Problems with read() on /proc/devices with x86_64 system | From | Martin Schlemmer <> | Date | Wed, 22 Feb 2006 21:07:45 +0200 |
| |
Hi,
Not sure when it started, but 2.6.16-rc[1234] at least have problems with unbuffered read() and /proc/devices on my x86_64 box. I first picked it up with dmsetup that did not want to work properly built against klibc (glibc with fread() worked fine though, as it mmap()'d the file).
Following code (from HPA and klibc mailing lists), when compiled and run with /proc/devices only reads the first two lines and then exits normally, where with any other file works as expected.
----- #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <sys/stat.h>
int main(int argc, char *argv[]) { char c; int i, fd, rv;
for ( i = 1 ; i < argc ; i++ ) { fd = open(argv[i], O_RDONLY); if ( fd < 0 ) { perror(argv[i]); exit(1); }
while ( (rv = read(fd, &c, 1)) ) { if ( rv == -1 ) { if ( errno == EINTR || errno == EAGAIN ) continue;
perror(argv[i]); exit(1); } putchar(c); }
close(fd); }
return 0; } -----
Output over here:
----- # ./readbychar.klibc /proc/devices Character devices: 1 mem # -----
Thanks,
-- Martin Schlemmer
[unhandled content-type:application/pgp-signature] | |