建立工程,成功创建两个虚拟串口
This commit is contained in:
105
source/OpenAMP/open-amp/lib/rpmsg/rpmsg_internal.h
Normal file
105
source/OpenAMP/open-amp/lib/rpmsg/rpmsg_internal.h
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _RPMSG_INTERNAL_H_
|
||||
#define _RPMSG_INTERNAL_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <openamp/rpmsg.h>
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef RPMSG_DEBUG
|
||||
#define RPMSG_ASSERT(_exp, _msg) do { \
|
||||
if (!(_exp)) { \
|
||||
openamp_print("FATAL: %s - _msg", __func__); \
|
||||
while (1) { \
|
||||
; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
#else
|
||||
#define RPMSG_ASSERT(_exp, _msg) do { \
|
||||
if (!(_exp)) \
|
||||
while (1) { \
|
||||
; \
|
||||
} \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#define RPMSG_LOCATE_DATA(p) ((unsigned char *)(p) + sizeof(struct rpmsg_hdr))
|
||||
/**
|
||||
* enum rpmsg_ns_flags - dynamic name service announcement flags
|
||||
*
|
||||
* @RPMSG_NS_CREATE: a new remote service was just created
|
||||
* @RPMSG_NS_DESTROY: a known remote service was just destroyed
|
||||
* @RPMSG_NS_CREATE_WITH_ACK: a new remote service was just created waiting
|
||||
* acknowledgment.
|
||||
*/
|
||||
enum rpmsg_ns_flags {
|
||||
RPMSG_NS_CREATE = 0,
|
||||
RPMSG_NS_DESTROY = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct rpmsg_hdr - common header for all rpmsg messages
|
||||
* @src: source address
|
||||
* @dst: destination address
|
||||
* @reserved: reserved for future use
|
||||
* @len: length of payload (in bytes)
|
||||
* @flags: message flags
|
||||
*
|
||||
* Every message sent(/received) on the rpmsg bus begins with this header.
|
||||
*/
|
||||
OPENAMP_PACKED_BEGIN
|
||||
struct rpmsg_hdr {
|
||||
uint32_t src;
|
||||
uint32_t dst;
|
||||
uint32_t reserved;
|
||||
uint16_t len;
|
||||
uint16_t flags;
|
||||
} OPENAMP_PACKED_END;
|
||||
|
||||
/**
|
||||
* struct rpmsg_ns_msg - dynamic name service announcement message
|
||||
* @name: name of remote service that is published
|
||||
* @addr: address of remote service that is published
|
||||
* @flags: indicates whether service is created or destroyed
|
||||
*
|
||||
* This message is sent across to publish a new service, or announce
|
||||
* about its removal. When we receive these messages, an appropriate
|
||||
* rpmsg channel (i.e device) is created/destroyed. In turn, the ->probe()
|
||||
* or ->remove() handler of the appropriate rpmsg driver will be invoked
|
||||
* (if/as-soon-as one is registered).
|
||||
*/
|
||||
OPENAMP_PACKED_BEGIN
|
||||
struct rpmsg_ns_msg {
|
||||
char name[RPMSG_NAME_SIZE];
|
||||
uint32_t addr;
|
||||
uint32_t flags;
|
||||
} OPENAMP_PACKED_END;
|
||||
|
||||
int rpmsg_send_ns_message(struct rpmsg_endpoint *ept, unsigned long flags);
|
||||
|
||||
struct rpmsg_endpoint *rpmsg_get_endpoint(struct rpmsg_device *rvdev,
|
||||
const char *name, uint32_t addr,
|
||||
uint32_t dest_addr);
|
||||
int rpmsg_register_endpoint(struct rpmsg_device *rdev,
|
||||
struct rpmsg_endpoint *ept);
|
||||
|
||||
static inline struct rpmsg_endpoint *
|
||||
rpmsg_get_ept_from_addr(struct rpmsg_device *rdev, uint32_t addr)
|
||||
{
|
||||
return rpmsg_get_endpoint(rdev, NULL, addr, RPMSG_ADDR_ANY);
|
||||
}
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _RPMSG_INTERNAL_H_ */
|
Reference in New Issue
Block a user