123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- #ifndef _LINUX_RPMSG_RPC_H_
- #define _LINUX_RPMSG_RPC_H_
- #include <linux/ioctl.h>
- struct rppc_buf_fds {
- uint32_t num;
- int32_t *fds;
- };
- #define RPPC_IOC_MAGIC 'r'
- #define RPPC_IOC_CREATE _IOW(RPPC_IOC_MAGIC, 1, char *)
- #define RPPC_IOC_BUFREGISTER _IOW(RPPC_IOC_MAGIC, 2, struct rppc_buf_fds)
- #define RPPC_IOC_BUFUNREGISTER _IOW(RPPC_IOC_MAGIC, 3, struct rppc_buf_fds)
- #define RPPC_IOC_MAXNR (4)
- #define RPPC_MAX_PARAMETERS (10)
- #define RPPC_MAX_TRANSLATIONS (1024)
- #define RPPC_MAX_INST_NAMELEN (48)
- enum rppc_param_type {
- RPPC_PARAM_TYPE_UNKNOWN = 0,
- RPPC_PARAM_TYPE_ATOMIC,
- RPPC_PARAM_TYPE_PTR,
- RPPC_PARAM_TYPE_STRUCT,
- };
- struct rppc_param_translation {
- uint32_t index;
- ptrdiff_t offset;
- size_t base;
- int32_t fd;
- };
- struct rppc_param {
- uint32_t type;
- size_t size;
- size_t data;
- size_t base;
- int32_t fd;
- };
- struct rppc_function {
- uint32_t fxn_id;
- uint32_t num_params;
- struct rppc_param params[RPPC_MAX_PARAMETERS];
- uint32_t num_translations;
- struct rppc_param_translation translations[0];
- };
- struct rppc_function_return {
- uint32_t fxn_id;
- uint32_t status;
- };
- struct rppc_create_instance {
- char name[RPPC_MAX_INST_NAMELEN];
- };
- #define RPPC_DESC_EXEC_SYNC (0x0100)
- #define RPPC_DESC_TYPE_MASK (0x0F00)
- #define RPPC_SET_FXN_IDX(idx) (((idx) + 1) | 0x80000000)
- #define RPPC_FXN_MASK(idx) (((idx) - 1) & 0x7FFFFFFF)
- struct rppc_packet {
- uint16_t desc;
- uint16_t msg_id;
- uint32_t flags;
- uint32_t fxn_id;
- int32_t result;
- uint32_t data_size;
- uint8_t data[0];
- } __attribute__((packed));
- #endif
|