Re: shmat problem

From: Dirk Bull (dirkbull102@hotmail.com)
Date: Mon Jan 06 2003 - 09:53:41 EST


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/



This archive was generated by hypermail 2b29 : Tue Jan 07 2003 - 22:00:31 EST