Re: ttys0 code freezes 5.4 release-p1 badly

From: Doug White <dwhite_at_gumbysoft.com>
Date: Sun, 19 Jun 2005 18:07:55 -0700 (PDT)
On Wed, 15 Jun 2005, snort Snort wrote:

> The following ttys0 code freezes 5.4 release-p1 badly:

I can reproduce no freeze of the system. The open of a /dev/tty* device
blocks until carrier is raised on the line, so the process will block
until I connect a null-modem cable to the port and start up a comm program
on another host.

Since you are trying to communicate with a modem, you want to open
/dev/cuaa0 (or /dev/cuaD0 on -CURRENT). cua* doesn't block on carrier.

> #include <stdio.h> /* Standard input/output
> definitions */
> #include <string.h> /* String function definitions */
> #include <unistd.h> /* UNIX standard function
> definitions */
> #include <fcntl.h> /* File control definitions */
> #include <errno.h> /* Error number definitions */
> #include <termios.h> /* POSIX terminal control
> definitions */
>
> /*
> * 'open_port()' - Open serial port 1.
> *
> * Returns the file descriptor on success or -1 on
> error.
> */
>
> int
> open_port(void)
> {
> int fd; /* File descriptor for the port */
>
>
> fd = open("/dev/ttyd0", O_RDWR | O_NOCTTY | O_NDELAY);
> if (fd == -1)
> {
> /*
> could not open the port.
> */
>
> perror("open_port: Unable to open /dev/ttyS0 - ");
> }
> else
> fcntl(fd, F_SETFL, 0);
> return (fd);
> }
>
> int
> write_port(int fd)
> {
> int n = write(fd, "ATZ\r", 4);
> if (n < 0) {
> fputs("write() of 4 bytes failed!\n", stderr);
> return 0;
> }
> return n;
> }
>
> void
> read_port(int fd)
> {
> fcntl(fd, F_SETFL, FNDELAY);
> //fcntl(fd, F_SETFL, 0);
> }
>
> void
> close_port(int fd)
> {
> close(fd);
> }
>
> int main()
> {
> int fd = open_port();
> if (write_port(fd) < 0)
> return 1;
> read_port(fd);
> close_port(fd);
> }
>
> Dose anyone know what is problem and how to fix it?
>
> Thanks
> Sam
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
>

-- 
Doug White                    |  FreeBSD: The Power to Serve
dwhite_at_gumbysoft.com          |  www.FreeBSD.org
Received on Sun Jun 19 2005 - 23:07:55 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:37 UTC