#include <rdma/uverbs_ioctl.h>
#include <rdma/rdma_user_ioctl.h>
#include <linux/bitops.h>
#include "rdma_core.h"
#include "uverbs.h"
static int ib_uverbs_notsupp(struct uverbs_attr_bundle *attrs)
{ … }
static void *uapi_add_elm(struct uverbs_api *uapi, u32 key, size_t alloc_size)
{ … }
static void *uapi_add_get_elm(struct uverbs_api *uapi, u32 key,
size_t alloc_size, bool *exists)
{ … }
static int uapi_create_write(struct uverbs_api *uapi,
struct ib_device *ibdev,
const struct uapi_definition *def,
u32 obj_key,
u32 *cur_method_key)
{ … }
static int uapi_merge_method(struct uverbs_api *uapi,
struct uverbs_api_object *obj_elm, u32 obj_key,
const struct uverbs_method_def *method,
bool is_driver)
{ … }
static int uapi_merge_obj_tree(struct uverbs_api *uapi,
const struct uverbs_object_def *obj,
bool is_driver)
{ … }
static int uapi_disable_elm(struct uverbs_api *uapi,
const struct uapi_definition *def,
u32 obj_key,
u32 method_key)
{ … }
static int uapi_merge_def(struct uverbs_api *uapi, struct ib_device *ibdev,
const struct uapi_definition *def_list,
bool is_driver)
{ … }
static int
uapi_finalize_ioctl_method(struct uverbs_api *uapi,
struct uverbs_api_ioctl_method *method_elm,
u32 method_key)
{ … }
static int uapi_finalize(struct uverbs_api *uapi)
{ … }
static void uapi_remove_range(struct uverbs_api *uapi, u32 start, u32 last)
{ … }
static void uapi_remove_object(struct uverbs_api *uapi, u32 obj_key)
{ … }
static void uapi_remove_method(struct uverbs_api *uapi, u32 method_key)
{ … }
static u32 uapi_get_obj_id(struct uverbs_attr_spec *spec)
{ … }
static void uapi_key_okay(u32 key)
{ … }
static void uapi_finalize_disable(struct uverbs_api *uapi)
{ … }
void uverbs_destroy_api(struct uverbs_api *uapi)
{ … }
static const struct uapi_definition uverbs_core_api[] = …;
struct uverbs_api *uverbs_alloc_api(struct ib_device *ibdev)
{ … }
void uverbs_disassociate_api_pre(struct ib_uverbs_device *uverbs_dev)
{ … }
void uverbs_disassociate_api(struct uverbs_api *uapi)
{ … }