[SLOF] [PATCH v2 1/2] usb/storage: Invert the logic of the IF-statements
Thomas Huth
thuth at redhat.com
Thu Dec 13 06:23:39 AEDT 2018
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.
> + ." USB-DISK: Bulk command failed!" cr
> 0 0 -1 EXIT
> THEN
> + dma-buf usb>data usb-buf-addr usb-buf-len move
>
> dma-buf usb>csw to csw-addr
> csw-addr csw>sig l@ 55534253 <> IF
>
The code looks indeed better the way you cleaned this up!
With or without the "= not" rework:
Reviewed-by: Thomas Huth <thuth at redhat.com>
More information about the SLOF
mailing list