class: UnixOperatingSystem::FileDescriptorHandle
authorStefan Vogel <sv@exept.de>
Fri, 16 May 2014 09:02:44 +0200
changeset 16464 a695c2af61fd
parent 16463 2b3728727f5e
child 16465 c3666f7943af
class: UnixOperatingSystem::FileDescriptorHandle no need to disable the signal after wait - it is done by ProcessorScheduler now
UnixOperatingSystem.st
--- a/UnixOperatingSystem.st	Fri May 16 09:00:05 2014 +0200
+++ b/UnixOperatingSystem.st	Fri May 16 09:02:44 2014 +0200
@@ -11108,24 +11108,23 @@
     |inputSema hasData wasBlocked|
 
     fd isNil ifTrue:[^ self error:#errorNotOpen].
+    self canReadWithoutBlocking ifTrue:[
+        ^ false.
+    ].
 
     wasBlocked := OperatingSystem blockInterrupts.
-    hasData := self canReadWithoutBlocking.
-    hasData ifFalse:[
-	inputSema := Semaphore new name:'readWait'.
-	[
-	    timeout notNil ifTrue:[
-		Processor signal:inputSema afterMilliseconds:timeout
-	    ].
-	    Processor signal:inputSema onInput:fd.
-	    Processor activeProcess state:#ioWait.
-	    inputSema wait.
-	    Processor disableSemaphore:inputSema.
-	    hasData := self canReadWithoutBlocking.
-	] ifCurtailed:[
-	    Processor disableSemaphore:inputSema.
-	    wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
-	]
+    inputSema := Semaphore new name:'readWait'.
+    [
+        timeout notNil ifTrue:[
+            Processor signal:inputSema afterMilliseconds:timeout
+        ].
+        Processor signal:inputSema onInput:fd.
+        Processor activeProcess state:#ioWait.
+        inputSema wait.
+        hasData := self canReadWithoutBlocking.
+    ] ifCurtailed:[
+        Processor disableSemaphore:inputSema.
+        wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
     ].
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
     ^ hasData not
@@ -11141,24 +11140,23 @@
     |outputSema canWrite wasBlocked|
 
     fd isNil ifTrue:[^ self error:#errorNotOpen].
+    self canWriteWithoutBlocking ifTrue:[
+        ^ false.
+    ].
 
     wasBlocked := OperatingSystem blockInterrupts.
-    canWrite := self canWriteWithoutBlocking.
-    canWrite ifFalse:[
-	outputSema := Semaphore new name:'writeWait'.
-	[
-	    timeout notNil ifTrue:[
-		Processor signal:outputSema afterMilliseconds:timeout
-	    ].
-	    Processor signal:outputSema onOutput:fd.
-	    Processor activeProcess state:#ioWait.
-	    outputSema wait.
-	    Processor disableSemaphore:outputSema.
-	    canWrite := self canWriteWithoutBlocking.
-	] ifCurtailed:[
-	    Processor disableSemaphore:outputSema.
-	    wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
-	]
+    outputSema := Semaphore new name:'writeWait'.
+    [
+        timeout notNil ifTrue:[
+            Processor signal:outputSema afterMilliseconds:timeout
+        ].
+        Processor signal:outputSema onOutput:fd.
+        Processor activeProcess state:#ioWait.
+        outputSema wait.
+        canWrite := self canWriteWithoutBlocking.
+    ] ifCurtailed:[
+        Processor disableSemaphore:outputSema.
+        wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
     ].
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
     ^ canWrite not
@@ -13272,11 +13270,11 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.361 2014-05-11 14:06:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.362 2014-05-16 07:02:44 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.361 2014-05-11 14:06:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.362 2014-05-16 07:02:44 stefan Exp $'
 ! !