浏览代码

* Small fixes for EAGAIN. bunxfunc only has comments added.

marco 22 年之前
父节点
当前提交
359a077da1
共有 2 个文件被更改,包括 11 次插入5 次删除
  1. 5 2
      rtl/bsd/bunxfunc.inc
  2. 6 3
      rtl/bsd/osmain.inc

+ 5 - 2
rtl/bsd/bunxfunc.inc

@@ -151,7 +151,7 @@ begin
         time_to_sleep.tv_nsec := 0;
         if (FPnanosleep(@time_to_sleep, @time_remaining) <> -1) Then
          Exit(0);
-        if (geterrno <> ESysEINTR) Then
+        if (geterrno <> ESysEINTR) Then	// EAGAIN?
          Exit (seconds);                     { best guess }
         FPsleep:= time_remaining.tv_sec;
         if   (time_remaining.tv_nsec <> 0) Then
@@ -454,7 +454,10 @@ end;
 
 {
  $Log$
- Revision 1.5  2003-10-26 17:01:04  marco
+ Revision 1.6  2003-11-18 10:12:25  marco
+  * Small fixes for EAGAIN. bunxfunc only has comments added.
+
+ Revision 1.5  2003/10/26 17:01:04  marco
   * moved sigprocmask to system
 
  Revision 1.4  2003/09/27 13:45:58  peter

+ 6 - 3
rtl/bsd/osmain.inc

@@ -209,7 +209,7 @@ Function Do_Write(Handle,Addr,Len:Longint):longint;
 Begin
   repeat
     Do_Write:=Fpwrite(Handle,pchar(addr),len);
-  until ErrNo<>ESysEINTR;
+  until (ErrNo<>ESysEINTR) and (Errno<>ESysEAgain);
   If Do_Write<0 Then
    Begin
     Errno2InOutRes;
@@ -224,7 +224,7 @@ Function Do_Read(Handle,Addr,Len:Longint):Longint;
 Begin
   repeat
     Do_Read:=Fpread(Handle,pchar(addr),len);
-  until ErrNo<>ESysEINTR;
+  until (ErrNo<>ESysEINTR) and (ErrNo<>ESysEAgain);
   If Do_Read<0 Then
    Begin
     Errno2InOutRes;
@@ -670,7 +670,10 @@ End.
 
 {
    $Log$
-   Revision 1.5  2003-10-27 17:12:45  marco
+   Revision 1.6  2003-11-18 10:12:25  marco
+    * Small fixes for EAGAIN. bunxfunc only has comments added.
+
+   Revision 1.5  2003/10/27 17:12:45  marco
     * fixes for signal handling.
 
    Revision 1.4  2003/10/26 17:01:04  marco