From: Rodolfo Giometti <giometti@enneenne.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: linux-kernel@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] LinuxPPS - definitive version
Date: Mon, 23 Jul 2007 18:04:02 +0200 [thread overview]
Message-ID: <20070723160402.GA4074@enneenne.com> (raw)
In-Reply-To: <1185197716.14697.244.camel@pmac.infradead.org>
On Mon, Jul 23, 2007 at 02:35:16PM +0100, David Woodhouse wrote:
>
> s/Documentaion/Documentation/ in the last line of Documentation/pps/pps.txt
Fixed.
> Please feed it to scripts/checkpatch.pl -- you can ignore all the
> warnings about lines greater than 80 characters, and the complete crap
> about "declaring multiple variables together should be avoided", but
> some of what it points out is valid. Including the one about 'volatile'
Ok, I'll do it.
> -- your explanation lacked credibility. If you really need 'volatile'
> then put it at the places you actually need it; not the declaration of
> the structure.
About this debate, please, take a look at the pps_event() function:
void pps_event(int source, int event, void *data)
{
struct timespec __ts;
struct pps_ktime ts;
/* First of all we get the time stamp... */
getnstimeofday(&__ts);
/* ... and translate it to PPS time data struct */
ts.sec = __ts.tv_sec;
ts.nsec = __ts.tv_nsec;
if ((event & (PPS_CAPTUREASSERT | PPS_CAPTURECLEAR)) == 0 ) {
pps_err("unknow event (%x) for source %d", event, source);
return;
}
/* We wish not using locks at all into this function... a possible
* solution is to check the "info" field against the pointer to
* "dummy_info".
* If "info" points to "dummy_info" we can return doing nothing since,
* even if a new PPS source is registered by another CPU we can
* safely not register current event.
* If "info" points to a valid PPS source's info data we can continue
* without problem since, even if current PPS source is deregistered
* by another CPU, we still continue writing data into a valid area
* (dummy_info).
*/
if (pps_source[source].info == &dummy_info)
return;
/* Must call the echo function? */
if ((pps_source[source].params.mode & (PPS_ECHOASSERT | PPS_ECHOCLEAR)))
pps_source[source].info->echo(source, event, data);
/* Check the event */
pps_source[source].current_mode = pps_source[source].params.mode;
if (event & PPS_CAPTUREASSERT) {
/* We have to add an offset? */
if (pps_source[source].params.mode & PPS_OFFSETASSERT)
pps_add_offset(&ts,
&pps_source[source].params.assert_off_tu);
/* Save the time stamp */
pps_source[source].assert_tu = ts;
pps_source[source].assert_sequence++;
pps_dbg("capture assert seq #%u for source %d",
pps_source[source].assert_sequence, source);
}
if (event & PPS_CAPTURECLEAR) {
/* We have to add an offset? */
if (pps_source[source].params.mode & PPS_OFFSETCLEAR)
pps_add_offset(&ts,
&pps_source[source].params.clear_off_tu);
/* Save the time stamp */
pps_source[source].clear_tu = ts;
pps_source[source].clear_sequence++;
pps_dbg("capture clear seq #%u for source %d",
pps_source[source].clear_sequence, source);
}
pps_source[source].go = ~0;
wake_up_interruptible(&pps_source[source].queue);
}
The problems should arise at:
if (pps_source[source].info == &dummy_info)
return;
but as explained into the comment there should be no problems at
all...
About "where" to put the "volatile" attribute I don't understand what
you mean... such attribute is needed (IMHO) for "assert_sequence"&C,
where should I put it? :-o
> You've also reverted to structures which vary between 32-bit and 64-bit
> userspace, because they use 'long' and 'struct timespec', but you
> haven't provided the compat_* routines which are then necessary.
As already suggested I used fixed size variables. See the new struct
"struct pps_ktime".
> +typedef int pps_handle_t; /* represents a PPS source */
> +typedef unsigned long pps_seq_t; /* sequence number */
> +typedef struct ntp_fp ntp_fp_t; /* NTP-compatible time stamp */
> +typedef union pps_timeu pps_timeu_t; /* generic data type to represent time s
> tamps */
> +typedef struct pps_info pps_info_t;
> +typedef struct pps_params pps_params_t;
>
> Don't do this for the structures. It's dubious enough for the integer
> types.
Such code is for userland since RFC2783 requires such types... I moved
all userland code into Documentation/pps/timepps.h which can be used
by userland programs whose require RFC compatibility.
I'll post a new patch ASAP.
Ciao,
Rodolfo
--
GNU/Linux Solutions e-mail: giometti@enneenne.com
Linux Device Driver giometti@gnudd.com
Embedded Systems giometti@linux.it
UNIX programming phone: +39 349 2432127
next prev parent reply other threads:[~2007-07-23 16:02 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-17 18:05 [PATCH] LinuxPPS - definitive version Rodolfo Giometti
2007-07-23 13:35 ` David Woodhouse
2007-07-23 16:04 ` Rodolfo Giometti [this message]
2007-07-23 19:28 ` Andrew Morton
2007-07-23 19:48 ` David Woodhouse
2007-07-24 8:00 ` Rodolfo Giometti
2007-07-24 13:49 ` David Woodhouse
2007-07-24 14:20 ` Rodolfo Giometti
2007-07-24 14:46 ` David Woodhouse
2007-07-24 14:52 ` David Woodhouse
2007-07-24 16:01 ` Rodolfo Giometti
2007-07-27 18:44 ` LinuxPPS & spinlocks Rodolfo Giometti
2007-07-27 19:08 ` Chris Friesen
2007-07-27 19:28 ` Rodolfo Giometti
2007-07-27 19:40 ` Chris Friesen
2007-07-27 19:45 ` Rodolfo Giometti
2007-07-27 20:47 ` Satyam Sharma
2007-07-27 23:41 ` Satyam Sharma
2007-07-29 9:50 ` Rodolfo Giometti
2007-07-30 5:03 ` Satyam Sharma
2007-07-30 8:51 ` Rodolfo Giometti
2007-07-30 9:20 ` Satyam Sharma
2007-08-01 22:14 ` Christopher Hoover
2007-08-01 23:03 ` Satyam Sharma
2007-07-29 9:57 ` Rodolfo Giometti
2007-07-29 10:00 ` Rodolfo Giometti
2007-07-30 5:09 ` Satyam Sharma
2007-07-30 8:53 ` Rodolfo Giometti
2007-07-30 9:31 ` Satyam Sharma
2007-07-29 9:17 ` Rodolfo Giometti
2007-07-30 4:19 ` Satyam Sharma
2007-07-30 8:32 ` Rodolfo Giometti
2007-07-30 9:07 ` Satyam Sharma
2007-07-30 14:55 ` Rodolfo Giometti
2007-07-30 22:01 ` Satyam Sharma
2007-07-31 8:20 ` Rodolfo Giometti
2007-07-31 18:49 ` Satyam Sharma
2007-07-31 19:44 ` Rodolfo Giometti
2007-07-31 21:15 ` Satyam Sharma
2007-07-24 14:31 ` [PATCH] LinuxPPS - definitive version Rodolfo Giometti
2007-07-24 14:45 ` David Woodhouse
2007-07-24 16:09 ` Rodolfo Giometti
2007-07-26 19:52 ` Roman Zippel
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=20070723160402.GA4074@enneenne.com \
--to=giometti@enneenne.com \
--cc=akpm@linux-foundation.org \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.