mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
Change some timer ioctls due to confliction
Change values of some timer ioctls to avoid confliction with FIO* ioctls. Use old ioctls if the timer protocol version doesn't match.
This commit is contained in:
parent
1aaf4a50af
commit
0d0e1a55c2
2 changed files with 31 additions and 8 deletions
|
|
@ -558,7 +558,7 @@ enum {
|
||||||
* Timer section - /dev/snd/timer
|
* Timer section - /dev/snd/timer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 3)
|
#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 4)
|
||||||
|
|
||||||
enum sndrv_timer_class {
|
enum sndrv_timer_class {
|
||||||
SNDRV_TIMER_CLASS_NONE = -1,
|
SNDRV_TIMER_CLASS_NONE = -1,
|
||||||
|
|
@ -671,10 +671,11 @@ enum {
|
||||||
SNDRV_TIMER_IOCTL_INFO = _IOR('T', 0x11, struct sndrv_timer_info),
|
SNDRV_TIMER_IOCTL_INFO = _IOR('T', 0x11, struct sndrv_timer_info),
|
||||||
SNDRV_TIMER_IOCTL_PARAMS = _IOW('T', 0x12, struct sndrv_timer_params),
|
SNDRV_TIMER_IOCTL_PARAMS = _IOW('T', 0x12, struct sndrv_timer_params),
|
||||||
SNDRV_TIMER_IOCTL_STATUS = _IOR('T', 0x14, struct sndrv_timer_status),
|
SNDRV_TIMER_IOCTL_STATUS = _IOR('T', 0x14, struct sndrv_timer_status),
|
||||||
SNDRV_TIMER_IOCTL_START = _IO('T', 0x20),
|
/* The following four ioctls are changed since 1.0.9 due to confliction */
|
||||||
SNDRV_TIMER_IOCTL_STOP = _IO('T', 0x21),
|
SNDRV_TIMER_IOCTL_START = _IO('T', 0xa0),
|
||||||
SNDRV_TIMER_IOCTL_CONTINUE = _IO('T', 0x22),
|
SNDRV_TIMER_IOCTL_STOP = _IO('T', 0xa1),
|
||||||
SNDRV_TIMER_IOCTL_PAUSE = _IO('T', 0x23),
|
SNDRV_TIMER_IOCTL_CONTINUE = _IO('T', 0xa2),
|
||||||
|
SNDRV_TIMER_IOCTL_PAUSE = _IO('T', 0xa3),
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sndrv_timer_read {
|
struct sndrv_timer_read {
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,13 @@ const char *_snd_module_timer_hw = "";
|
||||||
|
|
||||||
#define SNDRV_TIMER_IOCTL_STATUS_OLD _IOW('T', 0x14, struct sndrv_timer_status)
|
#define SNDRV_TIMER_IOCTL_STATUS_OLD _IOW('T', 0x14, struct sndrv_timer_status)
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SNDRV_TIMER_IOCTL_START_OLD = _IO('T', 0x20),
|
||||||
|
SNDRV_TIMER_IOCTL_STOP_OLD = _IO('T', 0x21),
|
||||||
|
SNDRV_TIMER_IOCTL_CONTINUE_OLD = _IO('T', 0x22),
|
||||||
|
SNDRV_TIMER_IOCTL_PAUSE_OLD = _IO('T', 0x23),
|
||||||
|
};
|
||||||
|
|
||||||
static int snd_timer_hw_close(snd_timer_t *handle)
|
static int snd_timer_hw_close(snd_timer_t *handle)
|
||||||
{
|
{
|
||||||
snd_timer_t *tmr = handle;
|
snd_timer_t *tmr = handle;
|
||||||
|
|
@ -140,11 +147,16 @@ static int snd_timer_hw_status(snd_timer_t *handle, snd_timer_status_t * status)
|
||||||
static int snd_timer_hw_start(snd_timer_t *handle)
|
static int snd_timer_hw_start(snd_timer_t *handle)
|
||||||
{
|
{
|
||||||
snd_timer_t *tmr;
|
snd_timer_t *tmr;
|
||||||
|
unsigned int cmd;
|
||||||
|
|
||||||
tmr = handle;
|
tmr = handle;
|
||||||
if (!tmr)
|
if (!tmr)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (ioctl(tmr->poll_fd, SNDRV_TIMER_IOCTL_START) < 0)
|
if (tmr->version < SNDRV_PROTOCOL_VERSION(2, 0, 4))
|
||||||
|
cmd = SNDRV_TIMER_IOCTL_START_OLD;
|
||||||
|
else
|
||||||
|
cmd = SNDRV_TIMER_IOCTL_START;
|
||||||
|
if (ioctl(tmr->poll_fd, cmd) < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -152,11 +164,16 @@ static int snd_timer_hw_start(snd_timer_t *handle)
|
||||||
static int snd_timer_hw_stop(snd_timer_t *handle)
|
static int snd_timer_hw_stop(snd_timer_t *handle)
|
||||||
{
|
{
|
||||||
snd_timer_t *tmr;
|
snd_timer_t *tmr;
|
||||||
|
unsigned int cmd;
|
||||||
|
|
||||||
tmr = handle;
|
tmr = handle;
|
||||||
if (!tmr)
|
if (!tmr)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (ioctl(tmr->poll_fd, SNDRV_TIMER_IOCTL_STOP) < 0)
|
if (tmr->version < SNDRV_PROTOCOL_VERSION(2, 0, 4))
|
||||||
|
cmd = SNDRV_TIMER_IOCTL_STOP_OLD;
|
||||||
|
else
|
||||||
|
cmd = SNDRV_TIMER_IOCTL_STOP;
|
||||||
|
if (ioctl(tmr->poll_fd, cmd) < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -164,11 +181,16 @@ static int snd_timer_hw_stop(snd_timer_t *handle)
|
||||||
static int snd_timer_hw_continue(snd_timer_t *handle)
|
static int snd_timer_hw_continue(snd_timer_t *handle)
|
||||||
{
|
{
|
||||||
snd_timer_t *tmr;
|
snd_timer_t *tmr;
|
||||||
|
unsigned int cmd;
|
||||||
|
|
||||||
tmr = handle;
|
tmr = handle;
|
||||||
if (!tmr)
|
if (!tmr)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (ioctl(tmr->poll_fd, SNDRV_TIMER_IOCTL_CONTINUE) < 0)
|
if (tmr->version < SNDRV_PROTOCOL_VERSION(2, 0, 4))
|
||||||
|
cmd = SNDRV_TIMER_IOCTL_CONTINUE_OLD;
|
||||||
|
else
|
||||||
|
cmd = SNDRV_TIMER_IOCTL_CONTINUE;
|
||||||
|
if (ioctl(tmr->poll_fd, cmd) < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue