diff options
author | David Li <dvdli@google.com> | 2021-07-01 01:57:03 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-07-01 01:57:03 +0000 |
commit | 97b72a05e199e23fd7f94a6fb0f1f12478f06cf1 (patch) | |
tree | c1fdd4e6db06429e7a726e1453292e3179f810ef | |
parent | 8abc00660876849c1daaa89fc3f9039ec99931f7 (diff) | |
parent | 6d0fa28a0330aec87fc1b7156f8c67f61aad2943 (diff) | |
download | tinyalsa-97b72a05e199e23fd7f94a6fb0f1f12478f06cf1.tar.gz |
store error messages into the bad_pcm am: 70f656f3af am: 6d0fa28a03
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/tinyalsa/+/15151679
Change-Id: I46141f07039a0dd030b61c50ece996d2c8a307a0
-rw-r--r-- | pcm.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -912,8 +912,10 @@ struct pcm *pcm_open(unsigned int card, unsigned int device, return &bad_pcm; /* TODO: could support default config here */ } pcm = calloc(1, sizeof(struct pcm)); - if (!pcm) + if (!pcm) { + oops(&bad_pcm, ENOMEM, "can't allocate PCM object"); return &bad_pcm; /* TODO: could support default config here */ + } pcm->config = *config; pcm->flags = flags; @@ -927,13 +929,13 @@ struct pcm *pcm_open(unsigned int card, unsigned int device, pcm->fd = pcm->ops->open(card, device, flags, &pcm->data, pcm->snd_node); if (pcm->fd < 0) { - oops(pcm, errno, "cannot open device %u for card %u", + oops(&bad_pcm, errno, "cannot open device %u for card %u", device, card); goto fail_open; } if (pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_INFO, &info)) { - oops(pcm, errno, "cannot get info"); + oops(&bad_pcm, errno, "cannot get info"); goto fail_close; } pcm->subdevice = info.subdevice; @@ -955,7 +957,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device, if (flags & PCM_NOIRQ) { if (!(flags & PCM_MMAP)) { - oops(pcm, EINVAL, "noirq only currently supported with mmap()."); + oops(&bad_pcm, EINVAL, "noirq only currently supported with mmap()."); goto fail_close; } @@ -971,7 +973,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device, SNDRV_PCM_ACCESS_RW_INTERLEAVED); if (pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_HW_PARAMS, ¶ms)) { - oops(pcm, errno, "cannot set hw params"); + oops(&bad_pcm, errno, "cannot set hw params"); goto fail_close; } @@ -985,7 +987,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device, pcm_frames_to_bytes(pcm, pcm->buffer_size), PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, 0); if (pcm->mmap_buffer == MAP_FAILED) { - oops(pcm, errno, "failed to mmap buffer %d bytes\n", + oops(&bad_pcm, errno, "failed to mmap buffer %d bytes\n", pcm_frames_to_bytes(pcm, pcm->buffer_size)); goto fail_close; } @@ -1033,13 +1035,13 @@ struct pcm *pcm_open(unsigned int card, unsigned int device, pcm->boundary *= 2; if (pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_SW_PARAMS, &sparams)) { - oops(pcm, errno, "cannot set sw params"); + oops(&bad_pcm, errno, "cannot set sw params"); goto fail; } rc = pcm_hw_mmap_status(pcm); if (rc < 0) { - oops(pcm, errno, "mmap status failed"); + oops(&bad_pcm, errno, "mmap status failed"); goto fail; } @@ -1048,7 +1050,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device, int arg = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC; rc = pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_TTSTAMP, &arg); if (rc < 0) { - oops(pcm, errno, "cannot set timestamp type"); + oops(&bad_pcm, errno, "cannot set timestamp type"); goto fail; } } |