ALSA: xen-front: Implement Xen event channel handling

Handle Xen event channels:
  - create for all configured streams and publish
    corresponding ring references and event channels in Xen store,
    so backend can connect
  - implement event channels interrupt handlers
  - create and destroy event channels with respect to Xen bus state

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Oleksandr Andrushchenko
2018-05-14 09:27:39 +03:00
committed by Takashi Iwai
parent fd3b36045c
commit 788ef64a2c
5 changed files with 604 additions and 2 deletions

View File

@@ -18,9 +18,11 @@
#include <xen/interface/io/sndif.h>
#include "xen_snd_front.h"
#include "xen_snd_front_evtchnl.h"
static void xen_snd_drv_fini(struct xen_snd_front_info *front_info)
{
xen_snd_front_evtchnl_free_all(front_info);
}
static int sndback_initwait(struct xen_snd_front_info *front_info)
@@ -32,7 +34,12 @@ static int sndback_initwait(struct xen_snd_front_info *front_info)
if (ret < 0)
return ret;
return 0;
/* create event channels for all streams and publish */
ret = xen_snd_front_evtchnl_create_all(front_info, num_streams);
if (ret < 0)
return ret;
return xen_snd_front_evtchnl_publish_all(front_info);
}
static int sndback_connect(struct xen_snd_front_info *front_info)