rwd@NATASHA.MACH.CS.CMU.EDU (Randall Dean) (04/13/91)
Has anyone implimented shmget, shmat in terms of mach primitives? A simple external pager with its ports registered with the netmsgserver and the appropriate glue code would do the trick. -rwd
noro@ohara.info.waseda.ac.jp (Hideo Noro) (05/03/91)
Hello. I've been reading this news group for few weeks.
I wanna run some system on MACH2.5 (I use LUNA88K(omron)),
but MACH seems not to support shared memory system calls
(shm{get,at,dt,ctl}).
Does sombody know how to make shm* system calls compatible library,
or where I could anonymous ftp if possible?
The system uses shm* system calls below. So, not full-compatibility
shm* library (or advice how to make that) is welcome.
-------------------
shmget(XVREGION_KEY, 1024, 0666)
shmget(XVREGION_KEY, size, 00666 | IPC_CREAT)
shmat(id, 0, 0)
shmdt(id)
shmctl(id, IPC_RMID, 0)
shmctl(id, IPC_STAT, &buf) /* system references only buf.shm_atime */
-------------------
I don't know much of MACH, but think;
shmget(key, size, 0666 | IPC_CREAT):
use vm_allocate(target_task, address,
sizeof(struct shmid_ds) + size, TRUE),
vm_inherit(target_task, address,
sizeof(struct shmid_ds) + size, VM_INHERIT_SHARE),
and target_task has some relation to key,
returns some number related to address.
(also check key has already related some address or not.)
shmat(id, 0, 0):
returns (address + sizeof(struct shmid_ds)).
shmdt(id): nothing to do.
shmctl(id, IPC_STAT, &buf):
copies sizeof(struct shmid_ds) bytes of memory image
begin at address.
I don't know if these are correct or not. Since, I'm not sure
target_task can perform like 'key' which is used in shm*.
Any comments are welcome.
Thanks.
----
Hideo Noro
Ohara Lab., Dept. of Sci. and Eng., Waseda Univ., JAPAN
noro@ohara.info.waseda.ac.jprwd@NATASHA.MACH.CS.CMU.EDU (Randall Dean) (05/07/91)
I have most of the code written for a shared memory server whose interface is the system V shm* calls. It will require the relinking of programs which use this call against a new library, the running of the netmsgserver, netmemoryserver and a new shmserver. The machine I am actually targeting this for is the luna88k (omron). Unfortunately I don't have a working netmemoryserver or netmsgserver for this yet (both have minor bugs in them). When I am less busy and have a chance to track down these problems and finish the code, I will release it ASIS. -rwd