From: Ben Nizette <bn@niasdigital.com>
To: Jonathan Cameron <Jonathan.Cameron@gmail.com>
Cc: Jean Delvare <khali@linux-fr.org>,
linux-kernel@vger.kernel.org,
spi-devel-general@lists.sourceforge.net,
LM Sensors <lm-sensors@lm-sensors.org>,
Dmitry Torokhov <dtor@mail.ru>, Ben Dooks <ben@fluff.org>,
mgross@linux.intel.com, hmh@hmh.eng.br,
"Hans J. Koch" <hjk@linutronix.de>,
Anton Vorontsov <avorontsov@ru.mvista.com>
Subject: Re: Accelerometer etc subsystem (Update on progress)
Date: Fri, 27 Jun 2008 13:29:27 +1000 [thread overview]
Message-ID: <1214537367.8462.157.camel@moss.renham> (raw)
In-Reply-To: <4863D97A.9090102@gmail.com>
On Thu, 2008-06-26 at 19:01 +0100, Jonathan Cameron wrote:
> Sysfs - Parameter Control - gain / offsets etc
> State control, turn interrupts on and off etc.
As in turn userspace [interrupt] event notification on and off? I would
have thought it'd be the kernel driver's responsibility to turn the
device's interrupt generation on and off according to needs for
data/events etc.
I know this is in a rough state but a few comments anyway. First, there
are heaps of casts-of-void-pointers (eg casts of kmalloc returns) which
are superfluous and hard readability 'coz you have to split the line to
fit in 80cols.
And hardcoded type-size assumptions everywhere. Don't be scared of
sizeof ;-)
> Anyhow, all comments welcome. Can anyone think of a better name?
> (I'm not keen on industrialio. It's too long if nothing else!
> It will do as a working title for now)
I don't mind industrial io but as a function prefix, iio works better.
I can't see it being used elsewhere.
also:
+/* As the ring buffer contents are device dependent this functionality
+ * must remain part of the driver and not the ring buffer subsystem */
+static ssize_t
+lis3l02dq_read_accel_from_ring(struct industrialio_ring_buffer *ring,
+ int element, char *buf)
+{
+ int val, ret, len;
+ uint16_t temp;
+ char *data, *datalock;
+
+ data = kmalloc(8, GFP_KERNEL);
+ if (data == NULL) {
+ ret = -ENOMEM;
+ goto error_ret;
+ }
+ ret = industrialio_read_last_from_ring(ring, data);
+ datalock = data + 2*element;
I haven't looked deeply at the ringbuffer code but can you guarantee
that later elements are at higher addresses than the lower ones? As in,
can one datum in the the ring buffer wrap to the beginning again?
+ kfree(data);
You free the data before you use it? Though you are using it through a
different pointer below. I wouldn't be scared of allocating 8 bytes on
the stack rather than kmalloc'ing (unless you expect this to be called
in a deep callchain)
+ temp = (((uint16_t)((datalock[1]))) << 8)
+ | (uint16_t)(datalock[0]);
+ val = *((int16_t *)(&temp));
All this data/datalock/bitshuffle nonsense would be nicer if you just
used structs and unions, yeah?
union channel {
char data[2];
int16_t val;
}
struct datum {
union channel elements[3];
}
or something.
+ len = sprintf(buf, "ring %d\n", val);
+
+ return len;
+error_ret:
+ return ret;
+}
Incidentally, is there much that your ringbuffer can do which kfifo
can't? Apart from having a bunch of extra nice accessor-helpers sitting
on the top.
Overall looking good and useful, can't wait 'till it's done :-)
--Ben.
next prev parent reply other threads:[~2008-06-27 3:29 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-20 10:04 Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-20 11:28 ` Jean Delvare
2008-05-20 21:40 ` Hans J. Koch
2008-05-21 10:04 ` Jonathan Cameron
2008-05-21 13:20 ` Jean Delvare
2008-05-21 13:49 ` Dmitry Torokhov
2008-05-21 14:09 ` Henrique de Moraes Holschuh
2008-05-27 17:16 ` [spi-devel-general] " Ben Dooks
2008-05-27 19:01 ` Dmitry Torokhov
2008-05-22 0:52 ` David Brownell
2008-05-22 9:35 ` [spi-devel-general] " Jonathan Cameron
2008-05-26 16:23 ` Jonathan Cameron
2008-06-26 18:01 ` Accelerometer etc subsystem (Update on progress) Jonathan Cameron
2008-06-26 18:26 ` Jonathan Cameron
2008-06-27 2:39 ` Randy Dunlap
2008-06-27 3:29 ` Ben Nizette [this message]
2008-06-27 9:45 ` [lm-sensors] " Jonathan Cameron
2008-06-28 8:34 ` Ben Nizette
2008-06-28 15:34 ` Jonathan Cameron
2008-05-20 17:50 ` Accelerometer, Gyros and ADC's etc within the kernel mark gross
2008-05-21 9:40 ` [spi-devel-general] " Jonathan Cameron
2008-05-27 15:43 ` mark gross
2008-05-29 11:57 ` Jonathan Cameron
2008-05-22 0:53 ` David Brownell
2008-05-27 15:56 ` mark gross
2008-05-27 23:42 ` David Brownell
2008-05-27 16:44 ` [spi-devel-general] " Anton Vorontsov
2008-05-27 16:50 ` Ben Dooks
2008-05-27 17:01 ` Anton Vorontsov
2008-05-27 18:00 ` Jonathan Cameron
2008-05-27 18:12 ` Ben Dooks
2008-05-27 17:59 ` Jonathan Cameron
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=1214537367.8462.157.camel@moss.renham \
--to=bn@niasdigital.com \
--cc=Jonathan.Cameron@gmail.com \
--cc=avorontsov@ru.mvista.com \
--cc=ben@fluff.org \
--cc=dtor@mail.ru \
--cc=hjk@linutronix.de \
--cc=hmh@hmh.eng.br \
--cc=khali@linux-fr.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lm-sensors@lm-sensors.org \
--cc=mgross@linux.intel.com \
--cc=spi-devel-general@lists.sourceforge.net \
/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