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