Path: utzoo!utgpu!attcan!uunet!seismo!sundc!pitstop!sun!decwrl!ucbvax!ucdavis!iris!tuck From: tuck@iris.ucdavis.edu (Devon Tuck) Newsgroups: comp.unix.xenix Subject: Shared Memory Problem Message-ID: <3246@ucdavis.ucdavis.edu> Date: 4 Nov 88 12:09:45 GMT Sender: uucp@ucdavis.ucdavis.edu Reply-To: tuck@iris.ucdavis.edu (Devon Tuck) Organization: Hydrologic Engineering Center US Army Core of Engineers Davis, California Lines: 27 I am in the process of converting an asynchronous I/O-based system, designed to poll a line from the National Weather Service for data, written in FORTRAN, to our Xenix 386/20 system. It is necessary for at least 3 different programs to have access to an input buffer which is constantly being filled. It would be convinient if there were some way to use C's shared memory routines, shmctl(), shmget(), shmat() to keep all of the Fortran programs' buffer referencing the same piece of memory dynamically. My problem is this, I need to either find a way to simulate a "monitor common block" in LPI-FORTRAN, *or* find a way to change the address of each program's buffer pointer so they all reference the same chunk of C shared memory, so that I may immediately obtain new buffer input in each of the programs. The closest solution I have found, is to create a host subroutine which passes the buffer array of a program into shared memory, loads it with the new information, and then returns it. The problem with this is, the loop which checks for this new information will most probably be an infinite loop, and continual execution of the shared memory routine could seriously degrade performance. Any ideas? +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Devon Tuck {tuck@iris.ucdavis.edu} Xenix Sys-Admin, Hydrologic Engineering Center Technical Assistance Division US Army Core of Engineers, Davis, CA. (916) 756-1104 ext. 18 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+