Date: Fri, 31 May 1996 07:35:45 -0700 From: Tom Emerson <temerson@cyberpub.com> To: questions@freebsd.org Subject: IPC in release 2.0.5 Message-ID: <31AF03C1.36A6@cyberpub.com>
next in thread | raw e-mail | index | archive | help
I am working on a shared memory application, client and server. The system V shared memory system calls seem to be working correctly, but the semaphores I use occasionally do not. First I build an array of semaphore operations to perform, then use: /* operations can block; if successful return, then all were done * all array operations tried in order in kernel "atomically" */ if( semop( id, sops, curops ) == FAILURE ) return( FAILURE ); return SUCCESS; to make the kernel call. Often this works correctly...whichever (client or server) will be put to sleep by the kernel until the semaphore operation is freed and available to the caller. When it seems to fail, the caller is given an error code. Also, I tried the ftok() call, to create a unique key. But the function does not appear to be in any of the /usr/include/sys header files. Granted, I'm a version behind the current release, should I update our systems? Or, perhaps I have an error in my coding? Please let me know if you are confident that these semaphore calls do work correctly. PS: Tried my app under Solaris 2.4, didn't see same failure to the caller, rather my "binary" semaphore was suddenly a "counting" semaphore! (again, this may be due to error in coding) TIA Tom Emerson
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?31AF03C1.36A6>