浏览代码

* Do not use lo(ofs) in fpmmap id TsysParam type is as large as off_t type and suppress warning

git-svn-id: trunk@21544 -
pierre 13 年之前
父节点
当前提交
68367ea82e
共有 1 个文件被更改,包括 10 次插入0 次删除
  1. 10 0
      rtl/linux/ossysc.inc

+ 10 - 0
rtl/linux/ossysc.inc

@@ -493,15 +493,25 @@ end;
 {$else OLDMMAP}
 {$else OLDMMAP}
 {$ifdef MMAP2}
 {$ifdef MMAP2}
 begin
 begin
+  {$if sizeof(TSysParam)>=sizeof(off_t)}
+  Fpmmap:= pointer(do_syscall(syscall_nr_mmap2,TSysParam(adr),TSysParam(len),
+    TSysParam(prot),TSysParam(flags),TSysParam(fd),TSysParam(off)));
+  {$else off_t is larger than TsysParam }
   {$message warning need mmap64 syscall, hi(off) not used}
   {$message warning need mmap64 syscall, hi(off) not used}
   Fpmmap:= pointer(do_syscall(syscall_nr_mmap2,TSysParam(adr),TSysParam(len),
   Fpmmap:= pointer(do_syscall(syscall_nr_mmap2,TSysParam(adr),TSysParam(len),
     TSysParam(prot),TSysParam(flags),TSysParam(fd),TSysParam(lo(off))));
     TSysParam(prot),TSysParam(flags),TSysParam(fd),TSysParam(lo(off))));
+ {$endif}
 end;
 end;
 {$else MMAP2}
 {$else MMAP2}
 begin
 begin
+  {$if sizeof(TSysParam)>=sizeof(off_t)}
+  Fpmmap:= pointer(do_syscall(syscall_nr_mmap,TSysParam(adr),TSysParam(len),
+    TSysParam(prot),TSysParam(flags),TSysParam(fd),TSysParam(off)));
+  {$else off_t is larger than TsysParam }
   {$message warning need mmap64 syscall, hi(off) not used}
   {$message warning need mmap64 syscall, hi(off) not used}
   Fpmmap:= pointer(do_syscall(syscall_nr_mmap,TSysParam(adr),TSysParam(len),
   Fpmmap:= pointer(do_syscall(syscall_nr_mmap,TSysParam(adr),TSysParam(len),
     TSysParam(prot),TSysParam(flags),TSysParam(fd),TSysParam(lo(off))));
     TSysParam(prot),TSysParam(flags),TSysParam(fd),TSysParam(lo(off))));
+ {$endif}
 end;
 end;
 {$endif MMAP2}
 {$endif MMAP2}
 {$endif OLDMMAP}
 {$endif OLDMMAP}