xref: /qemu/hw/core/stream.c (revision 51b19950ca62abce05b00eef30d9ebbfb8b15f46)
118c86e2bSPeter Maydell #include "qemu/osdep.h"
283c9f4caSPaolo Bonzini #include "hw/stream.h"
30b8fa32fSMarkus Armbruster #include "qemu/module.h"
4669b4983SPeter A. G. Crosthwaite 
535e60bfdSPeter Crosthwaite size_t
6*51b19950SEdgar E. Iglesias stream_push(StreamSlave *sink, uint8_t *buf, size_t len, bool eop)
7669b4983SPeter A. G. Crosthwaite {
8669b4983SPeter A. G. Crosthwaite     StreamSlaveClass *k =  STREAM_SLAVE_GET_CLASS(sink);
9669b4983SPeter A. G. Crosthwaite 
10*51b19950SEdgar E. Iglesias     return k->push(sink, buf, len, eop);
1135e60bfdSPeter Crosthwaite }
1235e60bfdSPeter Crosthwaite 
1335e60bfdSPeter Crosthwaite bool
1435e60bfdSPeter Crosthwaite stream_can_push(StreamSlave *sink, StreamCanPushNotifyFn notify,
1535e60bfdSPeter Crosthwaite                 void *notify_opaque)
1635e60bfdSPeter Crosthwaite {
1735e60bfdSPeter Crosthwaite     StreamSlaveClass *k =  STREAM_SLAVE_GET_CLASS(sink);
1835e60bfdSPeter Crosthwaite 
1935e60bfdSPeter Crosthwaite     return k->can_push ? k->can_push(sink, notify, notify_opaque) : true;
20669b4983SPeter A. G. Crosthwaite }
21669b4983SPeter A. G. Crosthwaite 
228c43a6f0SAndreas Färber static const TypeInfo stream_slave_info = {
23669b4983SPeter A. G. Crosthwaite     .name          = TYPE_STREAM_SLAVE,
24669b4983SPeter A. G. Crosthwaite     .parent        = TYPE_INTERFACE,
25669b4983SPeter A. G. Crosthwaite     .class_size = sizeof(StreamSlaveClass),
26669b4983SPeter A. G. Crosthwaite };
27669b4983SPeter A. G. Crosthwaite 
28669b4983SPeter A. G. Crosthwaite 
29669b4983SPeter A. G. Crosthwaite static void stream_slave_register_types(void)
30669b4983SPeter A. G. Crosthwaite {
31669b4983SPeter A. G. Crosthwaite     type_register_static(&stream_slave_info);
32669b4983SPeter A. G. Crosthwaite }
33669b4983SPeter A. G. Crosthwaite 
34669b4983SPeter A. G. Crosthwaite type_init(stream_slave_register_types)
35