Messages in this thread |  | | From | "Dirk Bull" <> | Subject | Re: shmat problem | Date | Mon, 06 Jan 2003 14:53:41 +0000 |
| |
Doug, thanks for the reply. I've set SHM_RND in the call and used "__attribute__ ((aligned(4096)))" during the the declaration of variable global01_ (as shown below) such that it is aligned on a page boundary. I'm porting code that was written for a Unix system to Linux and the example shown below is how the code is implemented on Unix.
The example included executed correctly on : mandrake - ? (Can't remember, but it was an old version)
but fails to work on: redhat - 2.2.14-5.0 debian - 2.2.9 mandrake - 2.4.19-16mdk
We are currently working on mandrake - kernel 2.4.19-16mdk.
Dirk
------------------------------------------------------------------------------- Example program: -------------------------------------------------------------------------------
#include <stdio.h> #include <sys/ipc.h> #include <sys/shm.h> #include <errno.h>
#define SHM_MODE (SHM_R | SHM_W)
union { long IN[2048]; } global01_ __attribute__ ((aligned(4096)));
int main(void) { int shmid; char *shmptr;
if ( (shmid = shmget(IPC_PRIVATE, sizeof(global01_), SHM_MODE)) < 0){ printf("shmget error: %d %s\n",errno, strerror(errno)); exit(0); }
if ( (shmptr = shmat(shmid, &global01_, SHM_RND)) == (void *) -1) printf("shmat error: %d %s\n",errno, strerror(errno)); else printf("shared memory attached from %x to %x\n", shmptr, shmptr+sizeof(global01_));
if (shmctl(shmid, IPC_RMID, 0) < 0) printf("shmctl error: %d %s\n",errno, strerror(errno));
exit(0); }
_________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |