From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: "Hefty, Sean" <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: Matan Barak
<matanb-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>,
Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Liran Liss <liranl-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Yishai Hadas <yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Tal Alon <talal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Christoph Lameter <cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org>,
"Weiny, Ira" <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Majd Dibbiny <majd-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH for-next 03/13] IB/core: Add new ioctl interface
Date: Wed, 14 Jun 2017 11:39:40 -0600 [thread overview]
Message-ID: <20170614173940.GA15278@obsidianresearch.com> (raw)
In-Reply-To: <1828884A29C6694DAF28B7E6B8A82373AB1436F6-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
On Wed, Jun 14, 2017 at 05:25:42PM +0000, Hefty, Sean wrote:
> > Let's start from the root of the parsing tree. at the top level we
> > have the root of the parsing tree ("uverbs_spec_root"). The root has
> > several "type_groups", one for each "namespace".
> > Currently, two "namespace"s are declared - common and driver
> > ("vendor_chain" here, should be changed to "driver").
> > Each "type_group" contains a few "type"s. "type" has several
> > "action_group"s, one for each "namespace". Each "action_group"
> > contains several "action"s.
> > Each "action" contains groups of "attr_spec", one for each namespace.
> > Finally, "attr_spec" contains attributes ("attrs").
> > Each attribute is of one of the following classes: ptr_in, ptr_out,
> > idr or fd (in the future, we might add a few more like "flags").
>
> Again, I think the approach looks good. I can see *how* the
> relationships between structures are defined by looking at the
> struct definitions. What's not clear is *why* those relationships
> exist. I really do think trying to use standard object-oriented
> terminology helps convey the latter.
I think it will help a lot as well.
> > > type_group -> namespace (?)
> >
> > I currently use "namespace" term to differentiate between the groups
> > of the entities. For example, in each layer of the hierarchy we
> > (possibly) have a namespace of common entities and driver-specific
> > entities.
Why do we even need this concept to have a name? At the end of the day
I thought it was just restricting what ID ranges are usable in
different parts of the code?
Just calling the numbers assigned to the driver 'driver specific ids's
woudl seem to be an improvement..
> > > type -> class or obj_class
> >
> > I use the term "class" for the nature of the actual attributes
> > ("attrs"). Each attribute is one of the following classes: idr, fd,
> > ptr_in or ptr_out.
Those would be commonly called types..
> > > action_group -> operations or methods or functions
> > > action -> op_def or method_def or func_def
> > > attr_spec_group -> param_list or op_param_list or func_param_list
> > ...
> >
> > I used the term "group" to emphasize that these aren't just a random
> > collection of params in a lit.
> > Grouping this entities together has a specific meaning.
>
> But *what* is that meaning? That's what I'd like the name to
> convey. I thought the grouping was because the attributes were a
> set of parameters being passed into a single
> function/operation/action/method.
Me too..
> > > common_chain -> common_params
> > > vendor_chain -> vendor_params
> >
> > I agree the term "chain" is problematic. Regarding the drawing above -
> > "common_params" and "driver_params" seems fine.
.. again, remove vendor from everything, these are driver specific
things..
> > > TYPE_IDR -> TYPE_KOBJ (kernel object)
> > >
> > What about fds (like completion_channel)? They're KOBJs too.
>
> How about KSTRUCT or IDR_OBJ? The fact that we're using an IDR
> seems like an internal implementation detail of the framework.
I think it is trying to say TYPE_OBJECT_ID, TYPE_FD_NUM, etc ?
Eg it informs the user what the attribute is. In our system an object
id is a 32 bit unsigned value with ~0 as the invalid, fd is a signed
integer open fd with -1 as invalid, etc
> > >> enum uverbs_attr_type {
> > >> UVERBS_ATTR_TYPE_NA,
> > >> + UVERBS_ATTR_TYPE_PTR_IN,
> > >> + UVERBS_ATTR_TYPE_PTR_OUT,
> > >> UVERBS_ATTR_TYPE_IDR,
> > >
> > > This is really indicating that we're dealing with a kernel object of
> > some sort, not the actual indexer.
> > >
> >
> > Yeah, but FDs could represent kernel objects too. The meaning here are
> > kernel objects that resides in the idr.
> > What do you propose?
UVERBS_ATTR_TYPE_OBJECT_ID ?
> > >> +enum uverbs_attr_spec_flags {
> > >> + UVERBS_ATTR_SPEC_F_MANDATORY = 1U << 0,
> > >> + /* Support extending attributes by length */
> > >> + UVERBS_ATTR_SPEC_F_MIN_SZ = 1U << 1,
> > >> +};
> > >
> > > Don't use named enums for bit flags. The result of ORing flags ends
> > up as a non-enum value.
> > >
> >
> > Sure
Isn't this common place in the kernel now? The enum should be
anonymous for this usage though.
There are advantages to using enums vs #define for constants..
> > >> +struct uverbs_action {
> > >> + struct uverbs_attr_spec_group **attr_groups;
Please make sure you get your consts right so stuff can live in
rodata.. I would expect this to be const??
Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-06-14 17:39 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-07 12:22 [PATCH for-next 00/13] IB/core: SG IOCTL based RDMA ABI Matan Barak
[not found] ` <1496838172-39671-1-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-06-07 12:22 ` [PATCH for-next 01/13] IB/core: Add a generic way to execute an operation on a uobject Matan Barak
2017-06-07 12:22 ` [PATCH for-next 02/13] IB/core: Add support to finalize objects in one transaction Matan Barak
[not found] ` <1496838172-39671-3-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-06-08 23:51 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373AB141A91-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-06-11 8:16 ` Matan Barak
[not found] ` <CAAKD3BCpRwiCejxuKiP07q-jGoRF1W8Ovs5aMt07uO2gAc1Qug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-06-21 15:33 ` Dennis Dalessandro
[not found] ` <37c8c95b-eec5-af5c-8d72-eea429d84818-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-06-29 16:41 ` Matan Barak
2017-06-07 12:22 ` [PATCH for-next 03/13] IB/core: Add new ioctl interface Matan Barak
[not found] ` <1496838172-39671-4-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-06-13 22:48 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373AB143340-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-06-14 8:39 ` Matan Barak
[not found] ` <CAAKD3BArF5U49WQ2PcYjpSbPpQmyubJQ6vKKUer_L05QBQpT0w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-06-14 17:25 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373AB1436F6-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-06-14 17:39 ` Jason Gunthorpe [this message]
[not found] ` <20170614173940.GA15278-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-06-14 17:46 ` Hefty, Sean
2017-06-15 11:51 ` Matan Barak
2017-06-15 11:50 ` Matan Barak
[not found] ` <CAAKD3BA+Bpwbx+pZivK_+jRLc9kCrvhQkPy4tKcaTqUZhfRiOg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-06-15 16:57 ` Jason Gunthorpe
[not found] ` <20170615165751.GB23773-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-06-20 12:03 ` Matan Barak
2017-06-20 15:38 ` Jason Gunthorpe
[not found] ` <20170620153855.GA29283-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-06-29 16:38 ` Matan Barak
2017-06-07 12:22 ` [PATCH for-next 04/13] IB/core: Declare a type instead of declaring only type attributes Matan Barak
2017-06-07 12:22 ` [PATCH for-next 05/13] IB/core: Add DEVICE type and root types structure Matan Barak
2017-06-07 12:22 ` [PATCH for-next 06/13] IB/core: Initialize uverbs types specification Matan Barak
2017-06-07 12:22 ` [PATCH for-next 07/13] IB/core: Add macros for declaring actions and attributes Matan Barak
2017-06-07 12:22 ` [PATCH for-next 08/13] IB/core: Explicitly destroy an object while keeping uobject Matan Barak
2017-06-07 12:22 ` [PATCH for-next 09/13] IB/core: Export ioctl enum types to user-space Matan Barak
2017-06-07 12:22 ` [PATCH for-next 10/13] IB/core: Add legacy driver's user-data Matan Barak
2017-06-07 12:22 ` [PATCH for-next 11/13] IB/core: Add completion queue (cq) object actions Matan Barak
2017-06-07 12:22 ` [PATCH for-next 12/13] IB/core: Assign root to all drivers Matan Barak
2017-06-07 12:22 ` [PATCH for-next 13/13] IB/core: Expose ioctl interface through experimental Kconfig Matan Barak
2017-06-07 15:53 ` [PATCH for-next 00/13] IB/core: SG IOCTL based RDMA ABI Jason Gunthorpe
[not found] ` <20170607155323.GB30124-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-06-08 14:09 ` Matan Barak
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=20170614173940.GA15278@obsidianresearch.com \
--to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
--cc=cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=liranl-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=majd-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=matanb-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org \
--cc=matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=talal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=yishaih-VPRAkNaXOzVWk0Htik3J/w@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox