O_DIRECT读写出错
nmzrl 2006-08-30 05:59:30 我用/dev/mem的mmap得到一段内存,然后通过O_DIRECT方式读一个文件的内容,可是老出现错误:Bad address,请问这是怎么回事,有何解决办法呀
解化代码如下:
int main()
{
if((fd = open("/dev/mem",O_RDWR,S_IRUSR | S_IWUSR)) != -1)
{
v = mmap(0, length, PROT_READ | PROT_WRITE, MAP_SHARED,fd,400M);
if ( (int)v == -1)
{
exit(1);
}
} else exit(1);
memset(v,'a', length);
int m_fd = open("a", O_CREAT | O_RDWR | O_DIRECT);
/*m_fd判断*/
int pagesize=getpagesize();/*页对其*/
char* alignedbuff=(char*)((((int unsigned)v+pagesize-1)/pagesize)*pagesize);
int ret = write(m_fd, alignedbuff, 4096);
if (ret != 4096)
printf("Error at write(): %s\n",strerror(errno));
return 0;
}