return -1;
}
- if (map->nsegs == 1 && map->seg[0].fd < 0) {
+ if (map->nsegs == 1 && map->seg[0].fd < 0 && map->seg[0].read == nil) {
*x = addr;
return 1;
}
return -1;
}
- if (map->nsegs == 1 && map->seg[0].fd < 0) {
+ if (map->nsegs == 1 && map->seg[0].fd < 0 && map->seg[0].read == nil) {
*x = addr;
return 1;
}
return -1;
}
- if (map->nsegs == 1 && map->seg[0].fd < 0) {
+ if (map->nsegs == 1 && map->seg[0].fd < 0 && map->seg[0].read == nil) {
*x = addr;
return 1;
}
return -1;
}
- if (map->nsegs == 1 && map->seg[0].fd < 0) {
+ if (map->nsegs == 1 && map->seg[0].fd < 0 && map->seg[0].read == nil) {
cp = (uchar*)&addr;
while (cp < (uchar*)(&addr+1) && size-- > 0)
*x++ = *cp++;
char a[8192];
uvlong off;
} cache;
+
+ if(s->read != nil)
+ return s->read(s->fd, buf, n, off);
if(s->cache){
base = off&~(sizeof cache.a-1);
s = reloc(map, addr, (vlong*)&off);
if (!s)
return -1;
- if (s->fd < 0) {
+ if (s->fd < 0 && s->read == nil) {
werrstr("unreadable map");
return -1;
}