From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.6.10/8.6.6) id LAA11728 for caml-redistribution; Tue, 5 Mar 1996 11:29:26 +0100 Received: (from xleroy@localhost) by pauillac.inria.fr (8.6.10/8.6.6) id VAA02627; Mon, 4 Mar 1996 21:32:45 +0100 From: Xavier Leroy Message-Id: <199603042032.VAA02627@pauillac.inria.fr> Subject: Re: Calling ioctl_ptr To: johnm@vlibs.com (John Gerard Malecki) Date: Mon, 4 Mar 1996 21:32:45 +0100 (MET) Cc: caml-list@pauillac.inria.fr In-Reply-To: <199602292019.MAA03081@owl.vlibs.com> from "John Gerard Malecki" at Feb 29, 96 12:19:36 pm MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: weis > I need to explicitly manipulate modem/rs-232 control lines on a 32 bit > sun-0s4.1 system. I was going to invoke ioctl_ptr to do the job. > > The first argument to ioctl_ptr is an int. The bits which determine a > modem control line request are 30 and 31. Is there a trick I can use > to set only bit 30 and not 31 and vice-versa? I'm afraid not. That's a weakness of the tagged data representation scheme used in Caml Light and other ML implementations. The "unix" library provides a reasonably high-level interface to the POSIX termios functions, which provide some control on the rs-232 signals. If that's not sufficient, I'd recommend that you write small C wrappers around the ioctls you need. This will not only solve the problem with 31 vs. 32 bit integers, but also allow the use of symbolic names for ioctl codes, something not easily done in Caml. Although most of the Unix system calls have a reasonably nice presentation in Caml, ioctl and fcntl do not, and are fairly hard to use in any language other than C. - Xavier Leroy