From: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: connector.c
Date: Fri, 01 Apr 2005 12:03:15 +0400 [thread overview]
Message-ID: <1112342595.9334.120.camel@uganda> (raw)
In-Reply-To: <20050331234213.0c06ba71.akpm@osdl.org>
[-- Attachment #1: Type: text/plain, Size: 3486 bytes --]
On Thu, 2005-03-31 at 23:42 -0800, Andrew Morton wrote:
> Evgeniy Polyakov <johnpol@2ka.mipt.ru> wrote:
> >
> > > What happens if we expect a reply to our message but userspace never sends
> > > one? Does the kernel leak memory? Do other processes hang?
> >
> > It is only advice, one may easily skip seq/ack initialization.
> > I could remove it totally from the header, but decided to
> > place it to force people to use more reliable protocols over netlink
> > by introducing such overhead.
>
> hm. I don't know what that means.
Messages that are passed between agents must have only id,
but I decided to force people to use provided seq/ack fields
to store there some information about message order.
Neither kernel nor userspace requires that fields to be
somehow initialized.
> > > > nlh = NLMSG_PUT(skb, 0, msg->seq, NLMSG_DONE, size - sizeof(*nlh));
> > > >
> > > > data = (struct cn_msg *)NLMSG_DATA(nlh);
> > >
> > > Unneeded typecast.
> >
> > Is it really an issue?
>
> Well it adds clutter, but more significantly the cast defeats typechecking.
> If someone was to change NLMSG_DATA() to return something other than
> void*, the compiler wouldn't complain.
>
> > >
> > > Why is spin_lock_bh() being used here?
> >
> > skb may be delivered in soft irq context, and may race with sending.
> > And actually it can be sent from irq context, like it is done in test
> > module.
>
> But spin_lock_bh() in irq context will deadlock if interruptible context is
> also doing spin_lock_bh().
skbs are delivered in softirq context and, yes,
I need to exactly point that sending also must be limited to soft irq
context.
> > > What's all the above code doing? What do `a' and `b' mean? Needs
> > > commentary and better-chosen identifiers.
> >
> > It searches for idx and val to match requested notification,
> > if "a" is true - idx is found, if b - val is found.
>
> Let me rephrase: please comment the code and choose identifiers in a manner
> which makes it clearer what's going on.
Sure.
> > > Please document all functions with comments. Functions which constitute
> > > part of the external API should be commented using the kernel-doc format.
> >
> > There is Documentation/connector/connector.txt which describes all
> > exported functions and structures.
> > Should it be ported to docbook?
>
> connector.txt is pitched at about the right level: an in-kernel and
> userspace API description. It's rather unclear with respect to mesage
> directions though - whether the callback is invoked after kernel->user
> messages, or for user->kernel or what, for example. Some clarification
> there would help.
Callback is invoked each time message is received - either
from userspace [original aim] or from kernelspace
[one can send notification request or just send a message from one
kernelspace subsystem to another].
Callback can also be called when notification for given idx/val range
was requested and new callback is being registered/unregistered
which mathces given idx/val range.
> But an API description is a different thing from code commentary which
> explains the internal design - the latter should be coupled to the code
> itself.
I will begin create in-code documentation after all technical issues
are resolved. Patches will be ready soon I think.
--
Evgeniy Polyakov
Crash is better than data corruption -- Arthur Grabowski
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2005-04-01 7:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-01 1:30 connector.c Andrew Morton
2005-04-01 2:41 ` connector.c Tommy Reynolds
2005-04-01 14:29 ` connector.c Matthias Urlichs
2005-04-01 17:36 ` connector.c Paul Jackson
2005-04-01 7:07 ` connector.c Evgeniy Polyakov
2005-04-01 7:42 ` connector.c Andrew Morton
2005-04-01 8:03 ` Evgeniy Polyakov [this message]
2005-04-01 8:02 ` connector.c Andrew Morton
2005-04-01 8:28 ` connector.c Evgeniy Polyakov
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=1112342595.9334.120.camel@uganda \
--to=johnpol@2ka.mipt.ru \
--cc=akpm@osdl.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox