Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Mar 2001 09:36:38 +0200
From:      "Ari Suutari" <ari@suutari.iki.fi>
To:        "Peter Eccles" <peter@pm.cse.rmit.edu.au>, <freebsd-java@FreeBSD.ORG>
Subject:   Re: current commmapi native drivers (patches included)
Message-ID:  <000e01c0a547$04859be0$0e05a8c0@coffee>
References:  <20010228194546.A58208@mirriwinni.cse.rmit.edu.au>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

------=_NextPart_000_000B_01C0A557.C6D9BC70
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hi again,


> Ive seen messages on this list about patches, but haven't found any
> references to where they might be found.  
> 

    Here are patches for FreeBSD CommAPI that replace
    select with poll. They also change serial parameters so
    that instead of reading one character at time inter-character
    timer is used to bursts of characters (which should be more
    efficient).

    I have been using this version with native FreeBSD jdk 1.2.2
    for some time and it seems to work OK.

        Ari S.



------=_NextPart_000_000B_01C0A557.C6D9BC70
Content-Type: application/octet-stream;
	name="commapi.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="commapi.patch"

*** orig/FreeBSD_CommAPI/src/org/freebsd/io/comm/libSerial.c	Mon Jul 19 =
11:45:04 1999=0A=
--- FreeBSD_CommAPI/src/org/freebsd/io/comm/libSerial.c	Mon Mar  5 =
17:21:42 2001=0A=
***************=0A=
*** 38,43 ****=0A=
--- 38,44 ----=0A=
  #include <errno.h>=0A=
  #include <string.h>=0A=
  #include <sys/ioctl.h>=0A=
+ #include <poll.h>=0A=
  #include <fcntl.h>=0A=
  #include <termios.h>=0A=
  #include <sys/time.h>=0A=
***************=0A=
*** 579,588 ****=0A=
  {      =0A=
  	int state,old_state;=0A=
  	int fd;=0A=
- 	fd_set rfds;=0A=
- 	struct timeval sleep;=0A=
  	int size;=0A=
  	int ret;=0A=
  	=0A=
          jfieldID jfield;  =0A=
          jmethodID method, interrupt;=0A=
--- 580,588 ----=0A=
  {      =0A=
  	int state,old_state;=0A=
  	int fd;=0A=
  	int size;=0A=
  	int ret;=0A=
+ 	struct pollfd pf;=0A=
  	=0A=
          jfieldID jfield;  =0A=
          jmethodID method, interrupt;=0A=
***************=0A=
*** 595,613 ****=0A=
          jthread =3D (*env)->FindClass( env, "java/lang/Thread" );=0A=
          interrupt =3D (*env)->GetStaticMethodID( env, jthread, =
"interrupted", "()Z" );=0A=
                                                                         =
         =0A=
!         FD_ZERO( &rfds );=0A=
!         FD_SET( fd, &rfds );=0A=
!         sleep.tv_sec =3D 1; /* Check every 1 second, or on receive =
data */=0A=
!         sleep.tv_usec =3D 0;=0A=
           =0A=
          /* Initialization of the current tty state */=0A=
          ioctl( fd, TIOCMGET, &old_state);                              =
                                            =0A=
    =0A=
    	while( !interrupted ) =0A=
    	{=0A=
    		do =0A=
    			{=0A=
!   			ret=3Dselect( fd + 1, &rfds, NULL, NULL, &sleep );=0A=
    			}  =0A=
    		while ( (ret < 0) && (errno=3D=3DEINTR));=0A=
   =0A=
--- 595,615 ----=0A=
          jthread =3D (*env)->FindClass( env, "java/lang/Thread" );=0A=
          interrupt =3D (*env)->GetStaticMethodID( env, jthread, =
"interrupted", "()Z" );=0A=
                                                                         =
         =0A=
! 	pf.fd =3D fd;=0A=
! 	pf.events =3D POLLIN;=0A=
! 	pf.revents =3D POLLIN;=0A=
           =0A=
          /* Initialization of the current tty state */=0A=
          ioctl( fd, TIOCMGET, &old_state);                              =
                                            =0A=
    =0A=
    	while( !interrupted ) =0A=
    	{=0A=
+ /*=0A=
+  * Let other threads do their work.=0A=
+  */=0A=
    		do =0A=
    			{=0A=
! 			ret =3D poll (&pf, 1, 1000);=0A=
    			}  =0A=
    		while ( (ret < 0) && (errno=3D=3DEINTR));=0A=
   =0A=

------=_NextPart_000_000B_01C0A557.C6D9BC70--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-java" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000e01c0a547$04859be0$0e05a8c0>