From: Florian Schmidt <mista.tapas@gmx.net>
To: Lee Revell <rlrevell@joe-job.com>
Cc: tapas <tapas@affenbande.org>, Ingo Molnar <mingo@elte.hu>,
Paul Davis <paul@linuxaudiosystems.com>,
Jaroslav Kysela <perex@suse.cz>,
jackit-devel@lists.sourceforge.net,
alsa-devel <alsa-devel@lists.sourceforge.net>
Subject: Re: Re: [Jackit-devel] irq handler top half timestamps
Date: Mon, 20 Dec 2004 16:08:55 +0100 [thread overview]
Message-ID: <20041220160855.699a1014@mango.fruits.de> (raw)
In-Reply-To: <1103499499.32415.35.camel@krustophenia.net>
On Sun, 19 Dec 2004 18:38:19 -0500
Lee Revell <rlrevell@joe-job.com> wrote:
> OK the interrupt handler calls snd_pcm_period_elapsed, which calls
> snd_pcm_update_hw_ptr_interrupt, which calls snd_pcm_update_hw_ptr_pos.
> snd_pcm_update_hw_ptr_pos does this (from alsa-kernel/core/pcm-lib.c):
>
> 151 pos = substream->ops->pointer(substream);
> 152 if (pos == SNDRV_PCM_POS_XRUN)
> 153 return pos; /* XRUN */
> 154 if (runtime->tstamp_mode & SNDRV_PCM_TSTAMP_MMAP)
> 155 snd_timestamp_now((snd_timestamp_t*)&runtime->status->tstamp, runtime->tstamp_timespec);
I see. And all these calls have constant execution time?
>
> Here is snd_timestamp_now (from alsa-kernel/include/core.h):
>
> 464 static inline void snd_timestamp_now(struct timespec *tstamp, int timespec)
> 465 {
> 466 struct timeval val;
> 467 /* FIXME: use a linear time source */
> 468 do_gettimeofday(&val);
> 469 tstamp->tv_sec = val.tv_sec;
> 470 tstamp->tv_nsec = val.tv_usec;
> 471 if (timespec)
> 472 tstamp->tv_nsec *= 1000L;
> 473 }
>
> Note the FIXME.
>
> So this timestamp should be OK for our purposes. Note the pointer
> callback is called before the timestamp is taken, so this will introduce
> variable delay as the pointer callback is different in every driver and
> requires accessing the PCI bus to read the pointer from the hardware.
>
> The API function to get the timestamp is snd_pcm_status_get_tstamp,
> defined in alsa-lib/src/pcm/pcm.c.
Hmm,
how is do_gettimeofday implemented? Is it based on the TSC? It seems it
is for X86 which has a TSC. into arch/i386/kernel/time.c also points out
that it is subject to adjustments due to NTP.
I suppose it would be better to get the TSC timestamp directly as Ingo's
patch produces for RP kernels. OTOH gettimeofday is a more general API
and i suppose it should provide the best timestamping mechanism a
platform can offer, right?
I might be talking out of my behind here though. As i don't know pretty
much anything about ALSA nor kernel internals..
Flo
--
Palimm Palimm!
http://affenbande.org/~tapas/
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
next prev parent reply other threads:[~2004-12-20 15:08 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20041209180706.GA11397@elte.hu>
[not found] ` <200412091819.iB9IJiLX013123@localhost.localdomain>
[not found] ` <20041209183342.GB13132@elte.hu>
[not found] ` <20041209220741.7562b6a0@mango.fruits.de>
2004-12-09 21:10 ` irq handler top half timestamps Lee Revell
2004-12-10 1:35 ` Re: [Jackit-devel] " Florian Schmidt
2004-12-10 7:52 ` [Alsa-devel] " Jaroslav Kysela
2004-12-10 17:23 ` Florian Schmidt
2004-12-10 17:17 ` Re: [Jackit-devel] " Paul Davis
2004-12-10 17:54 ` [Alsa-devel] " Florian Schmidt
2004-12-10 19:00 ` Re: [Jackit-devel] " Lee Revell
2004-12-10 20:51 ` Paul Davis
2004-12-10 21:01 ` Lee Revell
2004-12-11 0:56 ` Florian Schmidt
2004-12-11 2:22 ` Florian Schmidt
2004-12-15 23:32 ` [Alsa-devel] " Florian Schmidt
2004-12-16 9:18 ` Ingo Molnar
2004-12-16 16:33 ` tapas
2004-12-16 18:35 ` Re: [Jackit-devel] " Lee Revell
2004-12-19 23:45 ` Florian Schmidt
2004-12-19 23:38 ` [Alsa-devel] " Lee Revell
2004-12-20 15:08 ` Florian Schmidt [this message]
2004-12-21 1:30 ` Florian Schmidt
2004-12-21 1:49 ` Re: [Jackit-devel] " Lee Revell
2004-12-11 3:17 ` [Alsa-devel] " Lee Revell
2004-12-20 10:57 ` Re: [Jackit-devel] " Martijn Sipkema
2004-12-20 11:10 ` Clemens Ladisch
2004-12-20 11:50 ` Martijn Sipkema
2004-12-20 11:52 ` [Alsa-devel] " James Courtier-Dutton
2004-12-10 7:41 ` Jaroslav Kysela
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20041220160855.699a1014@mango.fruits.de \
--to=mista.tapas@gmx.net \
--cc=alsa-devel@lists.sourceforge.net \
--cc=jackit-devel@lists.sourceforge.net \
--cc=mingo@elte.hu \
--cc=paul@linuxaudiosystems.com \
--cc=perex@suse.cz \
--cc=rlrevell@joe-job.com \
--cc=tapas@affenbande.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox