4-stable termios diff behaviour lc/lc_r
Tijl Coosemans
tijl at ulyssis.org
Sun Aug 29 02:36:06 PDT 2004
Hi list,
I think I've found a possible bug in 4-stable, though I'm not that
kind of an expert so I'll leave that decision up to you.
Attached is a little test program that opens /dev/cuaa0 and tries to
read 4 bytes.
When compiled using "gcc vtime.c -o vtime" there's no problem. For
example, when you run vtime without anything attached to cuaa0, it'll
wait about 2 seconds and timeout, since VMIN=0 and VTIME=20.
When compiled using "gcc -pthread vtime.c -o vtime" however, the read
function returns immediately, which as far as I can understand, is not
what it's supposed to do.
Does anyone know if this intended or not, or how I can get the right
behaviour in a threaded program?
--
Tijl Coosemans
-------------- next part --------------
#include <fcntl.h>
#include <stdio.h>
#include <sys/types.h>
#include <termios.h>
#include <unistd.h>
int main(void) {
int fd, len;
struct termios termset;
uint8_t data[4];
fd = open("/dev/cuaa0", O_RDONLY);
tcgetattr(fd, &termset);
// cfmakeraw(&termset);
// cfsetspeed(&termset, B9600);
termset.c_cc[VMIN] = 0;
termset.c_cc[VTIME] = 20;
tcsetattr(fd, TCSANOW, &termset);
len = read(fd, (void *) data, 4);
printf("%d\n", len);
close(fd);
return 0;
}
More information about the freebsd-questions
mailing list