[ovs-dev] [PATCH 3/3] command-line: add ovs_cmdl_context
Ben Pfaff
blp at nicira.com
Mon Mar 16 21:33:38 UTC 2015
On Mon, Mar 16, 2015 at 05:16:57PM -0400, Russell Bryant wrote:
> On 03/16/2015 05:08 PM, Ben Pfaff wrote:
> > On Mon, Mar 16, 2015 at 12:01:56PM -0400, Russell Bryant wrote:
> >> I started working on a new command line utility that used this shared
> >> code. I wanted the ability to pass some data from common
> >> initialization code to all of the commands. You can find a similar
> >> pattern in ovs-vsctl.
> >>
> >> This patch updates the command handler to take a new struct,
> >> ovs_cmdl_context, instead of argc and argv directly. It includes argc
> >> and argv, but also includes an opaque type (void *), where the user of
> >> this API can attach its custom data it wants passed along to command
> >> handlers.
> >>
> >> This patch affected the ovstest sub-programs, as well. The patch
> >> includes a bit of an odd hack to OVSTEST_REGISTER() to avoid making
> >> the main() function of the sub-programs take a ovs_cmdl_context.
> >> The test main() functions still receive argc and argv directly, as
> >> that seems more natural. The test-subprograms themselves are able to
> >> make use of a context internally, though.
> >>
> >> Signed-off-by: Russell Bryant <rbryant at redhat.com>
> >
> > Thanks for the patch!
> >
> > I'm happy with this idea, although in writing it myself I would have a
> > hard time deciding whether to include the void * pointer or to expect
> > the caller to embed the structure into a larger one that could contain
> > additional data.
>
> Hm, sure, that works too. I can't say I have much of a preference. I'd
> be happy to change to the other if you'd prefer.
>
> I suppose embedding is slightly more efficient, though I don't expect
> any of this to be in performance critical code paths.
It's not worth changing; just thinking out loud.
More information about the dev
mailing list