From: Ben Nizette <bn-pV1zxKMKwgg3AZtZ2NlBNQ@public.gmane.org>
To: Jonathan Cameron <jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
Cc: mgross-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
Dmitry Torokhov <dtor-JGs/UdohzUI@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
LM Sensors <lm-sensors-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org>,
Jonathan Cameron
<Jonathan.Cameron-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
hmh-N3TV7GIv+o9fyO9Q7EP/yw@public.gmane.org,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [lm-sensors] Accelerometer etc subsystem (Update on progress)
Date: Sat, 28 Jun 2008 18:34:17 +1000 [thread overview]
Message-ID: <1214642057.4265.7.camel@moss.renham> (raw)
In-Reply-To: <4864B6D6.3020509-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
On Fri, 2008-06-27 at 10:45 +0100, Jonathan Cameron wrote:
> Ben Nizette wrote:
> > 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.
> Ok, there is a division here between interrupt handling on the host side
> which indeed should be turned on and off transparently by the driver
> and actually telling the sensor which interrupts to generate. In a sense
> this is simply a case of terminology and what is actually being requested
> is event notifications (which then match with those sent up to userspace).
Righteo, I suspected as much :-)
< snip good replies :-) >
>
> > 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?
> At the moment the ring buffer has to be a whole number of datums big.
> I'm inclined to keep it way and move more towards dynamic allocation
> such that it is true than to try handling split data reading sets.
Yup, agreed. Just so long as your code thinks about :-)
>
> > + 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)
> Ouch. That's an out and out bug!
> >
> > + 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;
> > }
> Good point, I'd forgotten you could do that with unions.
Cool, just watch endianness of course :-)
> >
> > struct datum {
> > union channel elements[3];
> > }
> >
> > or something.
> >
> > + len = sprintf(buf, "ring %d\n", val);
> > +
> > + return len;
> > +error_ret:
> > + return ret;
> > +}
> Good approach, I'll switch to that.
>
> >
> > 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.
> Not sure, I'll look into it.
kfifo won't be a drop in replacement, it's just a very simple ring fifo.
I suspect your higher level ring buffer accessors and allocators could
live on top of it though.
> >
> > Overall looking good and useful, can't wait 'till it's done :-)
> Thanks for the comments.
>
> Jonathan
np,
--Ben.
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
WARNING: multiple messages have this Message-ID (diff)
From: Ben Nizette <bn@niasdigital.com>
To: Jonathan Cameron <jic23@cam.ac.uk>
Cc: Jonathan Cameron <Jonathan.Cameron@gmail.com>,
mgross@linux.intel.com, Dmitry Torokhov <dtor@mail.ru>,
linux-kernel@vger.kernel.org,
LM Sensors <lm-sensors@lm-sensors.org>,
hmh@hmh.eng.br, spi-devel-general@lists.sourceforge.net,
Anton Vorontsov <avorontsov@ru.mvista.com>
Subject: Re: [lm-sensors] Accelerometer etc subsystem (Update on progress)
Date: Sat, 28 Jun 2008 08:34:17 +0000 [thread overview]
Message-ID: <1214642057.4265.7.camel@moss.renham> (raw)
In-Reply-To: <4864B6D6.3020509@cam.ac.uk>
On Fri, 2008-06-27 at 10:45 +0100, Jonathan Cameron wrote:
> Ben Nizette wrote:
> > 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.
> Ok, there is a division here between interrupt handling on the host side
> which indeed should be turned on and off transparently by the driver
> and actually telling the sensor which interrupts to generate. In a sense
> this is simply a case of terminology and what is actually being requested
> is event notifications (which then match with those sent up to userspace).
Righteo, I suspected as much :-)
< snip good replies :-) >
>
> > 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?
> At the moment the ring buffer has to be a whole number of datums big.
> I'm inclined to keep it way and move more towards dynamic allocation
> such that it is true than to try handling split data reading sets.
Yup, agreed. Just so long as your code thinks about :-)
>
> > + 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)
> Ouch. That's an out and out bug!
> >
> > + 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;
> > }
> Good point, I'd forgotten you could do that with unions.
Cool, just watch endianness of course :-)
> >
> > struct datum {
> > union channel elements[3];
> > }
> >
> > or something.
> >
> > + len = sprintf(buf, "ring %d\n", val);
> > +
> > + return len;
> > +error_ret:
> > + return ret;
> > +}
> Good approach, I'll switch to that.
>
> >
> > 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.
> Not sure, I'll look into it.
kfifo won't be a drop in replacement, it's just a very simple ring fifo.
I suspect your higher level ring buffer accessors and allocators could
live on top of it though.
> >
> > Overall looking good and useful, can't wait 'till it's done :-)
> Thanks for the comments.
>
> Jonathan
np,
--Ben.
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
WARNING: multiple messages have this Message-ID (diff)
From: Ben Nizette <bn@niasdigital.com>
To: Jonathan Cameron <jic23@cam.ac.uk>
Cc: Jonathan Cameron <Jonathan.Cameron@gmail.com>,
mgross@linux.intel.com, Dmitry Torokhov <dtor@mail.ru>,
linux-kernel@vger.kernel.org,
LM Sensors <lm-sensors@lm-sensors.org>,
hmh@hmh.eng.br, spi-devel-general@lists.sourceforge.net,
Anton Vorontsov <avorontsov@ru.mvista.com>
Subject: Re: [lm-sensors] Accelerometer etc subsystem (Update on progress)
Date: Sat, 28 Jun 2008 18:34:17 +1000 [thread overview]
Message-ID: <1214642057.4265.7.camel@moss.renham> (raw)
In-Reply-To: <4864B6D6.3020509@cam.ac.uk>
On Fri, 2008-06-27 at 10:45 +0100, Jonathan Cameron wrote:
> Ben Nizette wrote:
> > 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.
> Ok, there is a division here between interrupt handling on the host side
> which indeed should be turned on and off transparently by the driver
> and actually telling the sensor which interrupts to generate. In a sense
> this is simply a case of terminology and what is actually being requested
> is event notifications (which then match with those sent up to userspace).
Righteo, I suspected as much :-)
< snip good replies :-) >
>
> > 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?
> At the moment the ring buffer has to be a whole number of datums big.
> I'm inclined to keep it way and move more towards dynamic allocation
> such that it is true than to try handling split data reading sets.
Yup, agreed. Just so long as your code thinks about :-)
>
> > + 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)
> Ouch. That's an out and out bug!
> >
> > + 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;
> > }
> Good point, I'd forgotten you could do that with unions.
Cool, just watch endianness of course :-)
> >
> > struct datum {
> > union channel elements[3];
> > }
> >
> > or something.
> >
> > + len = sprintf(buf, "ring %d\n", val);
> > +
> > + return len;
> > +error_ret:
> > + return ret;
> > +}
> Good approach, I'll switch to that.
>
> >
> > 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.
> Not sure, I'll look into it.
kfifo won't be a drop in replacement, it's just a very simple ring fifo.
I suspect your higher level ring buffer accessors and allocators could
live on top of it though.
> >
> > Overall looking good and useful, can't wait 'till it's done :-)
> Thanks for the comments.
>
> Jonathan
np,
--Ben.
next prev parent reply other threads:[~2008-06-28 8:34 UTC|newest]
Thread overview: 86+ 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 10:04 ` Jonathan Cameron
2008-05-20 10:04 ` [lm-sensors] " Jonathan Cameron
2008-05-20 11:28 ` Jean Delvare
2008-05-20 11:28 ` [lm-sensors] Accelerometer, Jean Delvare
[not found] ` <20080520132817.03fb74ea-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-20 21:40 ` Accelerometer, Gyros and ADC's etc within the kernel Hans J. Koch
2008-05-20 21:40 ` Hans J. Koch
2008-05-20 21:40 ` [lm-sensors] Accelerometer, Hans J. Koch
2008-05-21 10:04 ` Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-21 10:04 ` [lm-sensors] Accelerometer, Jonathan Cameron
2008-05-21 13:20 ` Accelerometer, Gyros and ADC's etc within the kernel Jean Delvare
2008-05-21 13:20 ` [lm-sensors] Accelerometer, Jean Delvare
2008-05-21 13:49 ` Accelerometer, Gyros and ADC's etc within the kernel Dmitry Torokhov
2008-05-21 13:49 ` Dmitry Torokhov
2008-05-21 13:49 ` [lm-sensors] Accelerometer, Dmitry Torokhov
2008-05-21 14:09 ` Accelerometer, Gyros and ADC's etc within the kernel Henrique de Moraes Holschuh
2008-05-21 14:09 ` [lm-sensors] Accelerometer, Henrique de Moraes Holschuh
[not found] ` <20080521093520.ZZRA012-NG0XCrj25/nJrYCpivWRnl5pS2h4L8biXqFh9Ls21Oc@public.gmane.org>
2008-05-27 17:16 ` Accelerometer, Gyros and ADC's etc within the kernel Ben Dooks
2008-05-27 17:16 ` [spi-devel-general] " Ben Dooks
2008-05-27 17:16 ` [lm-sensors] [spi-devel-general] Accelerometer, Ben Dooks
[not found] ` <20080527171656.GA870-SMNkleLxa3Z6Wcw2j4pizdi2O/JbrIOy@public.gmane.org>
2008-05-27 19:01 ` Accelerometer, Gyros and ADC's etc within the kernel Dmitry Torokhov
2008-05-27 19:01 ` [spi-devel-general] " Dmitry Torokhov
2008-05-27 19:01 ` [lm-sensors] [spi-devel-general] Accelerometer, Dmitry Torokhov
2008-05-22 0:52 ` Accelerometer, Gyros and ADC's etc within the kernel David Brownell
2008-05-22 0:52 ` David Brownell
2008-05-22 0:52 ` [lm-sensors] Accelerometer, David Brownell
[not found] ` <200805211752.15670.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-05-22 9:35 ` Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-22 9:35 ` [spi-devel-general] " Jonathan Cameron
2008-05-22 9:35 ` [lm-sensors] [spi-devel-general] Accelerometer, Jonathan Cameron
[not found] ` <48353E45.2080903-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2008-05-26 16:23 ` Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-26 16:23 ` [spi-devel-general] " Jonathan Cameron
2008-05-26 16:23 ` [lm-sensors] [spi-devel-general] Accelerometer, Jonathan Cameron
2008-06-26 18:01 ` Accelerometer etc subsystem (Update on progress) Jonathan Cameron
2008-06-26 18:01 ` [lm-sensors] " Jonathan Cameron
[not found] ` <4863D97A.9090102-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-06-26 18:26 ` Jonathan Cameron
2008-06-26 18:26 ` Jonathan Cameron
2008-06-26 18:26 ` [lm-sensors] " Jonathan Cameron
2008-06-27 2:39 ` Randy Dunlap
2008-06-27 2:39 ` [lm-sensors] " Randy Dunlap
2008-06-27 3:29 ` Ben Nizette
2008-06-27 3:29 ` [lm-sensors] " Ben Nizette
[not found] ` <1214537367.8462.157.camel-L9Ekdhw1/RnCa3F4uneLBw@public.gmane.org>
2008-06-27 9:45 ` Jonathan Cameron
2008-06-27 9:45 ` Jonathan Cameron
2008-06-27 9:45 ` Jonathan Cameron
[not found] ` <4864B6D6.3020509-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2008-06-28 8:34 ` Ben Nizette [this message]
2008-06-28 8:34 ` Ben Nizette
2008-06-28 8:34 ` Ben Nizette
[not found] ` <1214642057.4265.7.camel-L9Ekdhw1/RnCa3F4uneLBw@public.gmane.org>
2008-06-28 15:34 ` Jonathan Cameron
2008-06-28 15:34 ` Jonathan Cameron
2008-06-28 15:34 ` Jonathan Cameron
[not found] ` <4832A211.4040206-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-05-20 17:50 ` Accelerometer, Gyros and ADC's etc within the kernel mark gross
2008-05-20 17:50 ` mark gross
2008-05-20 17:50 ` [lm-sensors] Accelerometer, mark gross
[not found] ` <20080520175041.GA30909-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2008-05-21 9:40 ` Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-21 9:40 ` [spi-devel-general] " Jonathan Cameron
2008-05-21 9:40 ` [lm-sensors] [spi-devel-general] Accelerometer, Jonathan Cameron
[not found] ` <4833EE22.80502-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2008-05-27 15:43 ` Accelerometer, Gyros and ADC's etc within the kernel mark gross
2008-05-27 15:43 ` [spi-devel-general] " mark gross
2008-05-27 15:43 ` [lm-sensors] [spi-devel-general] Accelerometer, mark gross
[not found] ` <20080527154331.GA29868-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2008-05-29 11:57 ` Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-29 11:57 ` [spi-devel-general] " Jonathan Cameron
2008-05-29 11:57 ` [lm-sensors] [spi-devel-general] Accelerometer, Jonathan Cameron
2008-05-22 0:53 ` Accelerometer, Gyros and ADC's etc within the kernel David Brownell
2008-05-22 0:53 ` David Brownell
2008-05-22 0:53 ` [lm-sensors] Accelerometer, David Brownell
2008-05-27 15:56 ` Accelerometer, Gyros and ADC's etc within the kernel mark gross
2008-05-27 15:56 ` [lm-sensors] Accelerometer, mark gross
[not found] ` <20080527155641.GB29868-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2008-05-27 23:42 ` Accelerometer, Gyros and ADC's etc within the kernel David Brownell
2008-05-27 23:42 ` David Brownell
2008-05-27 23:42 ` [lm-sensors] Accelerometer, David Brownell
2008-05-27 16:44 ` Accelerometer, Gyros and ADC's etc within the kernel Anton Vorontsov
2008-05-27 16:44 ` [spi-devel-general] " Anton Vorontsov
2008-05-27 16:44 ` [lm-sensors] [spi-devel-general] Accelerometer, Anton Vorontsov
2008-05-27 16:50 ` [spi-devel-general] Accelerometer, Gyros and ADC's etc within the kernel Ben Dooks
2008-05-27 16:50 ` [lm-sensors] [spi-devel-general] Accelerometer, Ben Dooks
2008-05-27 17:01 ` [spi-devel-general] Accelerometer, Gyros and ADC's etc within the kernel Anton Vorontsov
2008-05-27 17:01 ` [lm-sensors] [spi-devel-general] Accelerometer, Anton Vorontsov
[not found] ` <20080527165021.GA22585-SMNkleLxa3Z6Wcw2j4pizdi2O/JbrIOy@public.gmane.org>
2008-05-27 18:00 ` Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-27 18:00 ` [spi-devel-general] " Jonathan Cameron
2008-05-27 18:00 ` [lm-sensors] [spi-devel-general] Accelerometer, Jonathan Cameron
[not found] ` <483C4C58.5080301-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-05-27 18:12 ` Accelerometer, Gyros and ADC's etc within the kernel Ben Dooks
2008-05-27 18:12 ` [spi-devel-general] " Ben Dooks
2008-05-27 18:12 ` [lm-sensors] [spi-devel-general] Accelerometer, Ben Dooks
[not found] ` <20080527164415.GA27584-PHTr8nzUCjejyJ0x5qLZdcN33GVbZNy3@public.gmane.org>
2008-05-27 17:59 ` Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-27 17:59 ` [spi-devel-general] " Jonathan Cameron
2008-05-27 17:59 ` [lm-sensors] [spi-devel-general] Accelerometer, 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=1214642057.4265.7.camel@moss.renham \
--to=bn-pv1zxkmkwgg3aztz2nlbnq@public.gmane.org \
--cc=Jonathan.Cameron-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=dtor-JGs/UdohzUI@public.gmane.org \
--cc=hmh-N3TV7GIv+o9fyO9Q7EP/yw@public.gmane.org \
--cc=jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lm-sensors-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org \
--cc=mgross-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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.