Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rpmsg: Hide rpmsg indirection tables

Move the device and endpoint indirection tables to the rpmsg internal
header file, to hide them from the public API.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>

+50 -47
+3
drivers/rpmsg/rpmsg_core.c
··· 20 20 #define pr_fmt(fmt) "%s: " fmt, __func__ 21 21 22 22 #include <linux/kernel.h> 23 + #include <linux/module.h> 23 24 #include <linux/rpmsg.h> 25 + #include <linux/of_device.h> 26 + #include <linux/slab.h> 24 27 25 28 #include "rpmsg_internal.h" 26 29
+47
drivers/rpmsg/rpmsg_internal.h
··· 25 25 #define to_rpmsg_device(d) container_of(d, struct rpmsg_device, dev) 26 26 #define to_rpmsg_driver(d) container_of(d, struct rpmsg_driver, drv) 27 27 28 + /** 29 + * struct rpmsg_device_ops - indirection table for the rpmsg_device operations 30 + * @create_ept: create backend-specific endpoint, requried 31 + * @announce_create: announce presence of new channel, optional 32 + * @announce_destroy: announce destruction of channel, optional 33 + * 34 + * Indirection table for the operations that a rpmsg backend should implement. 35 + * @announce_create and @announce_destroy are optional as the backend might 36 + * advertise new channels implicitly by creating the endpoints. 37 + */ 38 + struct rpmsg_device_ops { 39 + struct rpmsg_endpoint *(*create_ept)(struct rpmsg_device *rpdev, 40 + rpmsg_rx_cb_t cb, void *priv, 41 + struct rpmsg_channel_info chinfo); 42 + 43 + int (*announce_create)(struct rpmsg_device *ept); 44 + int (*announce_destroy)(struct rpmsg_device *ept); 45 + }; 46 + 47 + /** 48 + * struct rpmsg_endpoint_ops - indirection table for rpmsg_endpoint operations 49 + * @destroy_ept: destroy the given endpoint, required 50 + * @send: see @rpmsg_send(), required 51 + * @sendto: see @rpmsg_sendto(), optional 52 + * @send_offchannel: see @rpmsg_send_offchannel(), optional 53 + * @trysend: see @rpmsg_trysend(), required 54 + * @trysendto: see @rpmsg_trysendto(), optional 55 + * @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional 56 + * 57 + * Indirection table for the operations that a rpmsg backend should implement. 58 + * In addition to @destroy_ept, the backend must at least implement @send and 59 + * @trysend, while the variants sending data off-channel are optional. 60 + */ 61 + struct rpmsg_endpoint_ops { 62 + void (*destroy_ept)(struct rpmsg_endpoint *ept); 63 + 64 + int (*send)(struct rpmsg_endpoint *ept, void *data, int len); 65 + int (*sendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst); 66 + int (*send_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst, 67 + void *data, int len); 68 + 69 + int (*trysend)(struct rpmsg_endpoint *ept, void *data, int len); 70 + int (*trysendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst); 71 + int (*trysend_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst, 72 + void *data, int len); 73 + }; 74 + 28 75 int rpmsg_register_device(struct rpmsg_device *rpdev); 29 76 int rpmsg_unregister_device(struct device *parent, 30 77 struct rpmsg_channel_info *chinfo);
-47
include/linux/rpmsg.h
··· 138 138 typedef void (*rpmsg_rx_cb_t)(struct rpmsg_device *, void *, int, void *, u32); 139 139 140 140 /** 141 - * struct rpmsg_device_ops - indirection table for the rpmsg_device operations 142 - * @create_ept: create backend-specific endpoint, requried 143 - * @announce_create: announce presence of new channel, optional 144 - * @announce_destroy: announce destruction of channel, optional 145 - * 146 - * Indirection table for the operations that a rpmsg backend should implement. 147 - * @announce_create and @announce_destroy are optional as the backend might 148 - * advertise new channels implicitly by creating the endpoints. 149 - */ 150 - struct rpmsg_device_ops { 151 - struct rpmsg_endpoint *(*create_ept)(struct rpmsg_device *rpdev, 152 - rpmsg_rx_cb_t cb, void *priv, 153 - struct rpmsg_channel_info chinfo); 154 - 155 - int (*announce_create)(struct rpmsg_device *ept); 156 - int (*announce_destroy)(struct rpmsg_device *ept); 157 - }; 158 - 159 - /** 160 141 * struct rpmsg_endpoint - binds a local rpmsg address to its user 161 142 * @rpdev: rpmsg channel device 162 143 * @refcount: when this drops to zero, the ept is deallocated ··· 169 188 void *priv; 170 189 171 190 const struct rpmsg_endpoint_ops *ops; 172 - }; 173 - 174 - /** 175 - * struct rpmsg_endpoint_ops - indirection table for rpmsg_endpoint operations 176 - * @destroy_ept: destroy the given endpoint, required 177 - * @send: see @rpmsg_send(), required 178 - * @sendto: see @rpmsg_sendto(), optional 179 - * @send_offchannel: see @rpmsg_send_offchannel(), optional 180 - * @trysend: see @rpmsg_trysend(), required 181 - * @trysendto: see @rpmsg_trysendto(), optional 182 - * @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional 183 - * 184 - * Indirection table for the operations that a rpmsg backend should implement. 185 - * In addition to @destroy_ept, the backend must at least implement @send and 186 - * @trysend, while the variants sending data off-channel are optional. 187 - */ 188 - struct rpmsg_endpoint_ops { 189 - void (*destroy_ept)(struct rpmsg_endpoint *ept); 190 - 191 - int (*send)(struct rpmsg_endpoint *ept, void *data, int len); 192 - int (*sendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst); 193 - int (*send_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst, 194 - void *data, int len); 195 - 196 - int (*trysend)(struct rpmsg_endpoint *ept, void *data, int len); 197 - int (*trysendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst); 198 - int (*trysend_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst, 199 - void *data, int len); 200 191 }; 201 192 202 193 /**