Browse thread
Re: Calling ioctl_ptr
- Xavier Leroy
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Xavier Leroy <xleroy@p...> |
| Subject: | Re: Calling ioctl_ptr |
> 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