IB/uverbs: Remove struct uverbs_root_spec and all supporting code
Everything now uses the uverbs_uapi data structure. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
@@ -114,46 +114,6 @@ struct uverbs_attr_spec {
|
||||
} u2;
|
||||
};
|
||||
|
||||
struct uverbs_attr_spec_hash {
|
||||
size_t num_attrs;
|
||||
unsigned long *mandatory_attrs_bitmask;
|
||||
struct uverbs_attr_spec attrs[0];
|
||||
};
|
||||
|
||||
struct uverbs_attr_bundle;
|
||||
struct ib_uverbs_file;
|
||||
|
||||
struct uverbs_method_spec {
|
||||
/* Combination of bits from enum UVERBS_ACTION_FLAG_XXXX */
|
||||
u32 flags;
|
||||
size_t num_buckets;
|
||||
size_t num_child_attrs;
|
||||
int (*handler)(struct ib_uverbs_file *ufile,
|
||||
struct uverbs_attr_bundle *ctx);
|
||||
struct uverbs_attr_spec_hash *attr_buckets[0];
|
||||
};
|
||||
|
||||
struct uverbs_method_spec_hash {
|
||||
size_t num_methods;
|
||||
struct uverbs_method_spec *methods[0];
|
||||
};
|
||||
|
||||
struct uverbs_object_spec {
|
||||
const struct uverbs_obj_type *type_attrs;
|
||||
size_t num_buckets;
|
||||
struct uverbs_method_spec_hash *method_buckets[0];
|
||||
};
|
||||
|
||||
struct uverbs_object_spec_hash {
|
||||
size_t num_objects;
|
||||
struct uverbs_object_spec *objects[0];
|
||||
};
|
||||
|
||||
struct uverbs_root_spec {
|
||||
size_t num_buckets;
|
||||
struct uverbs_object_spec_hash *object_buckets[0];
|
||||
};
|
||||
|
||||
/*
|
||||
* Information about the API is loaded into a radix tree. For IOCTL we start
|
||||
* with a tuple of:
|
||||
@@ -673,55 +633,4 @@ static inline __malloc void *uverbs_zalloc(struct uverbs_attr_bundle *bundle,
|
||||
}
|
||||
#endif
|
||||
|
||||
/* =================================================
|
||||
* Definitions -> Specs infrastructure
|
||||
* =================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
* uverbs_alloc_spec_tree - Merges different common and driver specific feature
|
||||
* into one parsing tree that every uverbs command will be parsed upon.
|
||||
*
|
||||
* @num_trees: Number of trees in the array @trees.
|
||||
* @trees: Array of pointers to tree root definitions to merge. Each such tree
|
||||
* possibly contains objects, methods and attributes definitions.
|
||||
*
|
||||
* Returns:
|
||||
* uverbs_root_spec *: The root of the merged parsing tree.
|
||||
* On error, we return an error code. Error is checked via IS_ERR.
|
||||
*
|
||||
* The following merges could take place:
|
||||
* a. Two trees representing the same method with different handler
|
||||
* -> We take the handler of the tree that its handler != NULL
|
||||
* and its index in the trees array is greater. The incentive for that
|
||||
* is that developers are expected to first merge common trees and then
|
||||
* merge trees that gives specialized the behaviour.
|
||||
* b. Two trees representing the same object with different
|
||||
* type_attrs (struct uverbs_obj_type):
|
||||
* -> We take the type_attrs of the tree that its type_attr != NULL
|
||||
* and its index in the trees array is greater. This could be used
|
||||
* in order to override the free function, allocation size, etc.
|
||||
* c. Two trees representing the same method attribute (same id but possibly
|
||||
* different attributes):
|
||||
* -> ERROR (-ENOENT), we believe that's not the programmer's intent.
|
||||
*
|
||||
* An object without any methods is considered invalid and will abort the
|
||||
* function with -ENOENT error.
|
||||
*/
|
||||
#if IS_ENABLED(CONFIG_INFINIBAND_USER_ACCESS)
|
||||
struct uverbs_root_spec *uverbs_alloc_spec_tree(unsigned int num_trees,
|
||||
const struct uverbs_object_tree_def **trees);
|
||||
void uverbs_free_spec_tree(struct uverbs_root_spec *root);
|
||||
#else
|
||||
static inline struct uverbs_root_spec *uverbs_alloc_spec_tree(unsigned int num_trees,
|
||||
const struct uverbs_object_tree_def **trees)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void uverbs_free_spec_tree(struct uverbs_root_spec *root)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user