Re: [PATCH 2/6] hw/core/stream: Rename StreamSlave as StreamSink

2020-09-11 Thread Edgar E. Iglesias
On Fri, Sep 11, 2020 at 09:28:16AM +0200, Paolo Bonzini wrote:
> On 10/09/20 09:01, Philippe Mathieu-Daudé wrote:
> > In order to use inclusive terminology, rename 'slave stream'
> > as 'sink stream'.
> > 
> > Signed-off-by: Philippe Mathieu-Daudé 
> 
> From Edgar Iglesias:
> 
> Regarding streams, our stream module can be used to model a stream
> channel such as AXI stream but also other similar stream protocols. We
> actually don't use the AXI stream terminology [in hw/core/stream.c].
> E.g, we use buf instead of DATA, EOP (end-of-packet) instead of LAST and
> have a flow-control mechanism that doesn't refer to valid/ready.  IMO,
> since we're not matching specific protocol names, it would be fine to
> switch to generic terms like Source and Sink.
> 
> Therefore,
> 
> Acked-by: Paolo Bonzini 
>

Thanks Paolo,

Yes, looks good to me!
Reviewed-by: Edgar E. Iglesias 


 
> 
> > ---
> >  include/hw/ssi/xilinx_spips.h |  2 +-
> >  include/hw/stream.h   | 46 +--
> >  hw/core/stream.c  | 20 +++
> >  hw/dma/xilinx_axidma.c| 32 
> >  hw/net/xilinx_axienet.c   | 20 +++
> >  hw/ssi/xilinx_spips.c |  2 +-
> >  6 files changed, 61 insertions(+), 61 deletions(-)
> > 
> > diff --git a/include/hw/ssi/xilinx_spips.h b/include/hw/ssi/xilinx_spips.h
> > index 6a39b55a7bd..fde8a3ebda6 100644
> > --- a/include/hw/ssi/xilinx_spips.h
> > +++ b/include/hw/ssi/xilinx_spips.h
> > @@ -97,7 +97,7 @@ typedef struct {
> >  typedef struct {
> >  XilinxQSPIPS parent_obj;
> >  
> > -StreamSlave *dma;
> > +StreamSink *dma;
> >  int gqspi_irqline;
> >  
> >  uint32_t regs[XLNX_ZYNQMP_SPIPS_R_MAX];
> > diff --git a/include/hw/stream.h b/include/hw/stream.h
> > index ed09e83683d..8ca161991ca 100644
> > --- a/include/hw/stream.h
> > +++ b/include/hw/stream.h
> > @@ -3,52 +3,52 @@
> >  
> >  #include "qom/object.h"
> >  
> > -/* stream slave. Used until qdev provides a generic way.  */
> > -#define TYPE_STREAM_SLAVE "stream-slave"
> > +/* stream sink. Used until qdev provides a generic way.  */
> > +#define TYPE_STREAM_SINK "stream-slave"
> >  
> > -#define STREAM_SLAVE_CLASS(klass) \
> > - OBJECT_CLASS_CHECK(StreamSlaveClass, (klass), TYPE_STREAM_SLAVE)
> > -#define STREAM_SLAVE_GET_CLASS(obj) \
> > -OBJECT_GET_CLASS(StreamSlaveClass, (obj), TYPE_STREAM_SLAVE)
> > -#define STREAM_SLAVE(obj) \
> > - INTERFACE_CHECK(StreamSlave, (obj), TYPE_STREAM_SLAVE)
> > +#define STREAM_SINK_CLASS(klass) \
> > + OBJECT_CLASS_CHECK(StreamSinkClass, (klass), TYPE_STREAM_SINK)
> > +#define STREAM_SINK_GET_CLASS(obj) \
> > +OBJECT_GET_CLASS(StreamSinkClass, (obj), TYPE_STREAM_SINK)
> > +#define STREAM_SINK(obj) \
> > + INTERFACE_CHECK(StreamSink, (obj), TYPE_STREAM_SINK)
> >  
> > -typedef struct StreamSlave StreamSlave;
> > +typedef struct StreamSink StreamSink;
> >  
> >  typedef void (*StreamCanPushNotifyFn)(void *opaque);
> >  
> > -typedef struct StreamSlaveClass {
> > +typedef struct StreamSinkClass {
> >  InterfaceClass parent;
> >  /**
> > - * can push - determine if a stream slave is capable of accepting at 
> > least
> > + * can push - determine if a stream sink is capable of accepting at 
> > least
> >   * one byte of data. Returns false if cannot accept. If not 
> > implemented, the
> > - * slave is assumed to always be capable of receiving.
> > - * @notify: Optional callback that the slave will call when the slave 
> > is
> > + * sink is assumed to always be capable of receiving.
> > + * @notify: Optional callback that the sink will call when the sink is
> >   * capable of receiving again. Only called if false is returned.
> >   * @notify_opaque: opaque data to pass to notify call.
> >   */
> > -bool (*can_push)(StreamSlave *obj, StreamCanPushNotifyFn notify,
> > +bool (*can_push)(StreamSink *obj, StreamCanPushNotifyFn notify,
> >   void *notify_opaque);
> >  /**
> > - * push - push data to a Stream slave. The number of bytes pushed is
> > - * returned. If the slave short returns, the master must wait before 
> > trying
> > - * again, the slave may continue to just return 0 waiting for the vm 
> > time to
> > + * push - push data to a Stream sink. The number of bytes pushed is
> > + * returned. If the sink short returns, the master must wait before 
> > trying
> > + * again, the sink may continue to just return 0 waiting for the vm 
> > time to
> >   * advance. The can_push() function can be used to trap the point in 
> > time
> > - * where the slave is ready to receive again, otherwise polling on a 
> > QEMU
> > + * where the sink is ready to receive again, otherwise polling on a 
> > QEMU
> >   * timer will work.
> > - * @obj: Stream slave to push to
> > + * @obj: Stream sink to push to
> >   * @buf: Data to write
> >   * @len: Maximum number of bytes 

Re: [PATCH 2/6] hw/core/stream: Rename StreamSlave as StreamSink

2020-09-11 Thread Paolo Bonzini
On 10/09/20 09:01, Philippe Mathieu-Daudé wrote:
> In order to use inclusive terminology, rename 'slave stream'
> as 'sink stream'.
> 
> Signed-off-by: Philippe Mathieu-Daudé 

>From Edgar Iglesias:

Regarding streams, our stream module can be used to model a stream
channel such as AXI stream but also other similar stream protocols. We
actually don't use the AXI stream terminology [in hw/core/stream.c].
E.g, we use buf instead of DATA, EOP (end-of-packet) instead of LAST and
have a flow-control mechanism that doesn't refer to valid/ready.  IMO,
since we're not matching specific protocol names, it would be fine to
switch to generic terms like Source and Sink.

Therefore,

Acked-by: Paolo Bonzini 

Paolo

> ---
>  include/hw/ssi/xilinx_spips.h |  2 +-
>  include/hw/stream.h   | 46 +--
>  hw/core/stream.c  | 20 +++
>  hw/dma/xilinx_axidma.c| 32 
>  hw/net/xilinx_axienet.c   | 20 +++
>  hw/ssi/xilinx_spips.c |  2 +-
>  6 files changed, 61 insertions(+), 61 deletions(-)
> 
> diff --git a/include/hw/ssi/xilinx_spips.h b/include/hw/ssi/xilinx_spips.h
> index 6a39b55a7bd..fde8a3ebda6 100644
> --- a/include/hw/ssi/xilinx_spips.h
> +++ b/include/hw/ssi/xilinx_spips.h
> @@ -97,7 +97,7 @@ typedef struct {
>  typedef struct {
>  XilinxQSPIPS parent_obj;
>  
> -StreamSlave *dma;
> +StreamSink *dma;
>  int gqspi_irqline;
>  
>  uint32_t regs[XLNX_ZYNQMP_SPIPS_R_MAX];
> diff --git a/include/hw/stream.h b/include/hw/stream.h
> index ed09e83683d..8ca161991ca 100644
> --- a/include/hw/stream.h
> +++ b/include/hw/stream.h
> @@ -3,52 +3,52 @@
>  
>  #include "qom/object.h"
>  
> -/* stream slave. Used until qdev provides a generic way.  */
> -#define TYPE_STREAM_SLAVE "stream-slave"
> +/* stream sink. Used until qdev provides a generic way.  */
> +#define TYPE_STREAM_SINK "stream-slave"
>  
> -#define STREAM_SLAVE_CLASS(klass) \
> - OBJECT_CLASS_CHECK(StreamSlaveClass, (klass), TYPE_STREAM_SLAVE)
> -#define STREAM_SLAVE_GET_CLASS(obj) \
> -OBJECT_GET_CLASS(StreamSlaveClass, (obj), TYPE_STREAM_SLAVE)
> -#define STREAM_SLAVE(obj) \
> - INTERFACE_CHECK(StreamSlave, (obj), TYPE_STREAM_SLAVE)
> +#define STREAM_SINK_CLASS(klass) \
> + OBJECT_CLASS_CHECK(StreamSinkClass, (klass), TYPE_STREAM_SINK)
> +#define STREAM_SINK_GET_CLASS(obj) \
> +OBJECT_GET_CLASS(StreamSinkClass, (obj), TYPE_STREAM_SINK)
> +#define STREAM_SINK(obj) \
> + INTERFACE_CHECK(StreamSink, (obj), TYPE_STREAM_SINK)
>  
> -typedef struct StreamSlave StreamSlave;
> +typedef struct StreamSink StreamSink;
>  
>  typedef void (*StreamCanPushNotifyFn)(void *opaque);
>  
> -typedef struct StreamSlaveClass {
> +typedef struct StreamSinkClass {
>  InterfaceClass parent;
>  /**
> - * can push - determine if a stream slave is capable of accepting at 
> least
> + * can push - determine if a stream sink is capable of accepting at least
>   * one byte of data. Returns false if cannot accept. If not implemented, 
> the
> - * slave is assumed to always be capable of receiving.
> - * @notify: Optional callback that the slave will call when the slave is
> + * sink is assumed to always be capable of receiving.
> + * @notify: Optional callback that the sink will call when the sink is
>   * capable of receiving again. Only called if false is returned.
>   * @notify_opaque: opaque data to pass to notify call.
>   */
> -bool (*can_push)(StreamSlave *obj, StreamCanPushNotifyFn notify,
> +bool (*can_push)(StreamSink *obj, StreamCanPushNotifyFn notify,
>   void *notify_opaque);
>  /**
> - * push - push data to a Stream slave. The number of bytes pushed is
> - * returned. If the slave short returns, the master must wait before 
> trying
> - * again, the slave may continue to just return 0 waiting for the vm 
> time to
> + * push - push data to a Stream sink. The number of bytes pushed is
> + * returned. If the sink short returns, the master must wait before 
> trying
> + * again, the sink may continue to just return 0 waiting for the vm time 
> to
>   * advance. The can_push() function can be used to trap the point in time
> - * where the slave is ready to receive again, otherwise polling on a QEMU
> + * where the sink is ready to receive again, otherwise polling on a QEMU
>   * timer will work.
> - * @obj: Stream slave to push to
> + * @obj: Stream sink to push to
>   * @buf: Data to write
>   * @len: Maximum number of bytes to write
>   * @eop: End of packet flag
>   */
> -size_t (*push)(StreamSlave *obj, unsigned char *buf, size_t len, bool 
> eop);
> -} StreamSlaveClass;
> +size_t (*push)(StreamSink *obj, unsigned char *buf, size_t len, bool 
> eop);
> +} StreamSinkClass;
>  
>  size_t
> -stream_push(StreamSlave *sink, uint8_t *buf, size_t len, bool eop);
> 

Re: [PATCH 2/6] hw/core/stream: Rename StreamSlave as StreamSink

2020-09-10 Thread Philippe Mathieu-Daudé
On 9/10/20 9:01 AM, Philippe Mathieu-Daudé wrote:
> In order to use inclusive terminology, rename 'slave stream'
> as 'sink stream'.
> 
> Signed-off-by: Philippe Mathieu-Daudé 
> ---
[...]
> diff --git a/include/hw/stream.h b/include/hw/stream.h
> index ed09e83683d..8ca161991ca 100644
> --- a/include/hw/stream.h
> +++ b/include/hw/stream.h
> @@ -3,52 +3,52 @@
>  
>  #include "qom/object.h"
>  
> -/* stream slave. Used until qdev provides a generic way.  */
> -#define TYPE_STREAM_SLAVE "stream-slave"
> +/* stream sink. Used until qdev provides a generic way.  */
> +#define TYPE_STREAM_SINK "stream-slave"
>  
> -#define STREAM_SLAVE_CLASS(klass) \
> - OBJECT_CLASS_CHECK(StreamSlaveClass, (klass), TYPE_STREAM_SLAVE)
> -#define STREAM_SLAVE_GET_CLASS(obj) \
> -OBJECT_GET_CLASS(StreamSlaveClass, (obj), TYPE_STREAM_SLAVE)
> -#define STREAM_SLAVE(obj) \
> - INTERFACE_CHECK(StreamSlave, (obj), TYPE_STREAM_SLAVE)
> +#define STREAM_SINK_CLASS(klass) \
> + OBJECT_CLASS_CHECK(StreamSinkClass, (klass), TYPE_STREAM_SINK)
> +#define STREAM_SINK_GET_CLASS(obj) \
> +OBJECT_GET_CLASS(StreamSinkClass, (obj), TYPE_STREAM_SINK)
> +#define STREAM_SINK(obj) \
> + INTERFACE_CHECK(StreamSink, (obj), TYPE_STREAM_SINK)

Hmm being an interface, is it better to name it TYPE_SINK_STREAM?