From: Johannes Berg <johannes@sipsolutions.net>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org, linux-wimax@intel.com,
bsingharora@gmail.com, netfilter-devel@vger.kernel.org,
alex.bluesman.smirnov@gmail.com, dbaryshkov@gmail.com
Subject: Re: [PATCH 0/9] genetlink: reduce ops size and complexity (v2)
Date: Fri, 15 Nov 2013 14:18:35 +0100 [thread overview]
Message-ID: <1384521515.14295.2.camel@jlt4.sipsolutions.net> (raw)
In-Reply-To: <20131114.171204.1979806323628158355.davem@davemloft.net>
On Thu, 2013-11-14 at 17:12 -0500, David Miller wrote:
> From: Johannes Berg <johannes@sipsolutions.net>
> Date: Thu, 14 Nov 2013 17:14:38 +0100
>
> > As before - reduce the complexity and data/code size of genetlink ops
> > by making them an array rather than a linked list. Most users already
> > use an array thanks to genl_register_family_with_ops(), so convert the
> > remaining ones allowing us to get rid of the list head in each op.
> >
> > Also make them const, this just makes sense at that point and the security
> > people like making function pointers const as well :-)
>
> I have to say, this is an absolutely fantastic space usage and
> complexity improvement.
:-)
FWIW, we can also clean up the two registration functions now and make
it just a single one (actually we could have done that before as well,
passing NULL for ops, but hey, now it's even easier). I'll send a patch
for that.
I've been eyeing the multicast groups as well, but the code using them
is nicer if it's not an array. With an array, you'd have to do something
like
send_event(&my_mcast_groups[1]);
instead of
send_event(&my_foo_mcast_group);
which is a bit odd.
We could instead register an array of pointers to the groups:
static const struct mcast_group *my_groups[] = {
&my_foo_mcast_group,
...
};
and pass this to the family - that'd still be less space (one pointer
for each group rather than two in a linked list) and still allow all
groups and this array to be const, but it's not quite as big a
saving ...
Thoughts?
johannes
next prev parent reply other threads:[~2013-11-15 13:18 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 9:14 [RFC 0/7] genetlink: reduce ops size and complexity Johannes Berg
2013-11-14 9:14 ` [RFC 1/7] taskstats: use genl_register_family_with_ops() Johannes Berg
2013-11-14 9:14 ` [RFC 2/7] hsr: " Johannes Berg
2013-11-14 9:14 ` [RFC 3/7] ieee802154: " Johannes Berg
2013-11-14 9:14 ` [RFC 4/7] wimax: " Johannes Berg
2013-11-14 9:14 ` [RFC 5/7] genetlink: remove genl_register_ops/genl_unregister_ops Johannes Berg
2013-11-14 9:14 ` [RFC 6/7] genetlink: register family ops as array Johannes Berg
2013-11-14 9:14 ` [RFC 7/7] genetlink: allow making ops const Johannes Berg
2013-11-14 13:41 ` [RFC 8/7] genetlink: make all genl_ops users const Johannes Berg
2013-11-14 14:01 ` [RFC 9/7] genetlink: make genl_ops flags a u8 and move to end Johannes Berg
2013-11-14 14:36 ` [RFC 0/7] genetlink: reduce ops size and complexity Johannes Berg
2013-11-14 16:02 ` Johannes Berg
2013-11-14 16:14 ` [PATCH 0/9] genetlink: reduce ops size and complexity (v2) Johannes Berg
2013-11-14 16:14 ` [PATCH 1/9] taskstats: use genl_register_family_with_ops() Johannes Berg
2013-11-14 16:14 ` [PATCH 2/9] hsr: " Johannes Berg
2013-11-14 16:14 ` [PATCH 3/9] ieee802154: " Johannes Berg
2013-11-14 16:14 ` [PATCH 4/9] wimax: " Johannes Berg
2013-11-14 16:14 ` [PATCH 5/9] genetlink: remove genl_register_ops/genl_unregister_ops Johannes Berg
2013-11-14 16:14 ` [PATCH 6/9] genetlink: register family ops as array Johannes Berg
2013-11-14 16:14 ` [PATCH 7/9] genetlink: allow making ops const Johannes Berg
2013-11-14 16:14 ` [PATCH 8/9] genetlink: make all genl_ops users const Johannes Berg
2013-11-14 16:14 ` [PATCH 9/9] genetlink: make genl_ops flags a u8 and move to end Johannes Berg
2013-11-14 22:12 ` [PATCH 0/9] genetlink: reduce ops size and complexity (v2) David Miller
2013-11-15 13:18 ` Johannes Berg [this message]
2013-11-15 13:23 ` Johannes Berg
2013-11-15 14:45 ` Jamal Hadi Salim
2013-11-16 1:54 ` David Miller
2013-11-16 1:53 ` David Miller
2013-11-17 9:12 ` Johannes Berg
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=1384521515.14295.2.camel@jlt4.sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=alex.bluesman.smirnov@gmail.com \
--cc=bsingharora@gmail.com \
--cc=davem@davemloft.net \
--cc=dbaryshkov@gmail.com \
--cc=linux-wimax@intel.com \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@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;
as well as URLs for NNTP newsgroup(s).