读书人

共享内存怎么固定逻辑地址(映射地址

发布时间: 2012-02-14 19:19:19 作者: rapoo

共享内存,如何固定逻辑地址(映射地址)问题
我想使用固定逻辑地址(映射地址),以使用指针访问,
在linux和Solaris上没有问题,但是移植到AIX上,不能固定逻辑地址,导致非法访问。
请问,如何在AIX上固定逻辑地址(映射地址)
代码中获取共享内存首地址语句如下:
shmat(shm_id, (void*)0x4000000000, SHM_RND);
SHM_RND这个选项怎么使用?
网上都是说了这个SHM_RND的效果,但是没有例子。

请帮忙。

[解决办法]
写了个简单程序测试了一下,没有问题呀。
系统
AIX P550 3 5 0000DF83D600
编译命令 cc -q64

C/C++ code
#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <assert.h>#include <stdio.h>intmain(int argc, char *argv[]){        key_t shmkey;        int shmid;        char *addr;        size_t size;        int rc;        size = 1024 * 1024;        shmkey = ftok(argv[0], 1);        shmid = shmget(shmkey, size, IPC_CREAT | 0666);        printf("shmid=%d\n", shmid);        addr = shmat(shmid, (void *)0x0700000000000000, SHM_RND);        printf("addr=%p\n", addr);        assert(0 != addr);        memset(addr, 0, size);        rc = shmdt(addr);        printf("rc=%d\n", rc);        rc = shmctl(shmid, IPC_RMID, 0);        assert(0 == rc);        return 0;} 

读书人网 >UNIXLINUX

热点推荐