On Thu, 2013-11-14 at 17:12 -0500, David Miller wrote: > From: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> > 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 -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html