首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

共享内存,怎么固定逻辑地址(映射地址)有关问题

2012-02-14 
共享内存,如何固定逻辑地址(映射地址)问题我想使用固定逻辑地址(映射地址),以使用指针访问,在linux和Solar

共享内存,如何固定逻辑地址(映射地址)问题
我想使用固定逻辑地址(映射地址),以使用指针访问, 
在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;} 

热点排行