Hi all,


I've encountered a problem in using serial ports (comm ports) with the latest cygwin snapshots.

The problem was first encountered in snapshot cygwin1-20040416.dll and with further testing i've
concluded that the issue remains with the most recent snapshots. These being:
- cygwin1-20040422.dll
- cygwin1-20040420.dll
- cygwin1-20040416.dll

The problem occurs when a call to open() is made. Under WIN XP the open fails
after a few seconds of blocking. Under WIN 2000, the open is successful however
calls to ioctl with TIOCMGET produce false results (i.e. obtaining the status
of DTR, RTS etc).

I think this is related to the changes 'Corinna Vinschen' made in the cygwin1-20040416.dll
snapshot, specifically:

(fhandler_base::open): Rearrange to use NtCreateFile instead of CreateFile.

This problem does not occur in snapshots previous to cygwin1-20040416.dll.

I've written a piece of code which demonstrates this issue, and have attached it to this
posting. I would appreciate it if people could verify this issue by running the attached
code.

To compile:
make all

To run:
./openfault

Tested system configurations:
- WIN XP
 256MB RAM
 P4 @ 1.6 GHz
 SP1

- WIN 2000
 192MB RAM
 P4 @ 1.2 GHz
 SP1


I've also attached the cygcheck for the WIN XP system.

george.

_________________________________________________________________
SEEK: Now with over 50,000 dream jobs! Click here: http://ninemsn.seek.com.au?hotmail
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>




int main(int argc, char *argv[]) {



  int flag = ( O_RDWR | O_NOCTTY | O_NDELAY );
  int handle = -1;
  char*  port = "/dev/ttyS0";

printf("Attempting to open port \"%s\"\n", port);

  if( (handle = open(port, flag)) == -1)
  {

/*
An error has occured in opening the port, log an error report
*/
printf("ERROR: An error has occured during opening of comport.\n");
printf(" Error number = [%d] => description: %s", errno, strerror(errno));

     exit(EXIT_FAILURE);
     return 0;

}

  printf("Success occured during opening of comport.\n");
  close(handle);

  exit(EXIT_SUCCESS);
  return 1;
}


Attachment: Makefile
Description: Binary data

Attachment: cygcheck.out
Description: Binary data

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to