[SLOF] [PATCH v2 1/2] usb/storage: Invert the logic of the IF-statements
Laurent Vivier
lvivier at redhat.com
Thu Dec 13 07:02:42 AEDT 2018
On 12/12/2018 20:23, Thomas Huth wrote:
> On 2018-12-12 15:31, Laurent Vivier wrote:
>> to prepare write implementation
>>
>> Signed-off-by: Laurent Vivier <lvivier at redhat.com>
>> ---
>> slof/fs/usb/dev-storage.fs | 39 +++++++++++++++++++-------------------
>> 1 file changed, 19 insertions(+), 20 deletions(-)
>>
>> diff --git a/slof/fs/usb/dev-storage.fs b/slof/fs/usb/dev-storage.fs
>> index 94f8421..fe5af1c 100644
>> --- a/slof/fs/usb/dev-storage.fs
>> +++ b/slof/fs/usb/dev-storage.fs
>> @@ -107,23 +107,23 @@ scsi-open
>> TO resp-size
>> TO resp-buffer
>> udev USB_PIPE_OUT td-buf td-buf-phys dma-buf-phys usb>cmd 1F
>> - usb-transfer-bulk IF \ transfer CBW
>> - resp-size IF
>> - d# 125 us
>> - udev USB_PIPE_IN td-buf td-buf-phys resp-buffer resp-size
>> - usb-transfer-bulk 1 = not IF \ transfer data
>> - usb-disk-debug? IF ." Data phase failed " cr THEN
>> - \ FALSE EXIT
>> - \ in case of a stall/halted endpoint we clear the halt
>> - \ Fall through and try reading the CSW
>> - THEN
>> - THEN
>> - d# 125 us
>> - udev USB_PIPE_IN td-buf td-buf-phys dma-buf-phys usb>csw 0D
>> - usb-transfer-bulk \ transfer CSW
>> - ELSE
>> - FALSE EXIT
>> + usb-transfer-bulk 1 = not IF
>
> In case you respin: Replace "= not" with "<>".
> (sorry for not noticing this in v1 already!)
>
>> + FALSE EXIT
>> THEN
>> + \ transfer CBW
>> + resp-size IF
>> + d# 125 us
>> + udev USB_PIPE_IN td-buf td-buf-phys resp-buffer resp-size
>> + usb-transfer-bulk 1 = not IF \ transfer data
>
> You only moved the code, but in case you respin, "= not" could be
> replaced with "<>" here, too.
>
>> + usb-disk-debug? IF ." Data phase failed " cr THEN
>> + \ FALSE EXIT
>> + \ in case of a stall/halted endpoint we clear the halt
>> + \ Fall through and try reading the CSW
>> + THEN
>> + THEN
>> + d# 125 us
>> + udev USB_PIPE_IN td-buf td-buf-phys dma-buf-phys usb>csw 0D
>> + usb-transfer-bulk \ transfer CSW
>> ;
>>
>> STRUCT \ cbw
>> @@ -189,12 +189,11 @@ CONSTANT cbw-length
>>
>> \ Send it
>> dma-buf-phys usb>data usb-buf-len
>> - do-bulk-command IF
>> - dma-buf usb>data usb-buf-addr usb-buf-len move
>> - ELSE
>> - ." USB-DISK: Bulk commad failed!" cr
>> + do-bulk-command 1 = not IF
>
> "= not" ==> "<>"
>
> Or maybe you could even simply say:
>
> do-bulk-command not IF
>
> ... since the C functions are simply returning "bool"s - and the
> IF-statement in Forth does not care whether the "true" value on the
> stack is -1 or 1.
... but "not" doesn't like it:
0 > 0 not . -1 ok
0 > 1 not . -2 ok
0 > -1 not . 0 ok
I'm going to change the "=" by "<>" in the series.
Thanks,
Laurent
More information about the SLOF
mailing list