lwp_ipc.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * Copyright (c) 2006-2020, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-10-12 Jesven first version
  9. */
  10. #ifndef LWP_IPC_H__
  11. #define LWP_IPC_H__
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. enum
  16. {
  17. RT_CHANNEL_RAW,
  18. RT_CHANNEL_BUFFER
  19. };
  20. struct rt_channel_msg
  21. {
  22. void *sender;
  23. int type;
  24. union
  25. {
  26. struct chbuf
  27. {
  28. void *buf;
  29. size_t length;
  30. } b;
  31. void* d;
  32. } u;
  33. };
  34. typedef struct rt_channel_msg *rt_channel_msg_t;
  35. int rt_channel_open(const char *name, int flags);
  36. rt_err_t rt_channel_close(int fd);
  37. rt_err_t rt_channel_send(int fd, rt_channel_msg_t data);
  38. rt_err_t rt_channel_send_recv(int fd, rt_channel_msg_t data, rt_channel_msg_t data_ret);
  39. rt_err_t rt_channel_send_recv_timeout(int fd, rt_channel_msg_t data, rt_channel_msg_t data_ret, rt_int32_t time);
  40. rt_err_t rt_channel_reply(int fd, rt_channel_msg_t data);
  41. rt_err_t rt_channel_recv(int fd, rt_channel_msg_t data);
  42. rt_err_t rt_channel_recv_timeout(int fd, rt_channel_msg_t data, rt_int32_t time);
  43. rt_err_t rt_channel_peek(int fd, rt_channel_msg_t data);
  44. rt_channel_t rt_raw_channel_open(const char *name, int flags);
  45. rt_err_t rt_raw_channel_close(rt_channel_t ch);
  46. rt_err_t rt_raw_channel_send(rt_channel_t ch, rt_channel_msg_t data);
  47. rt_err_t rt_raw_channel_send_recv(rt_channel_t ch, rt_channel_msg_t data, rt_channel_msg_t data_ret);
  48. rt_err_t rt_raw_channel_send_recv_timeout(rt_channel_t ch, rt_channel_msg_t data, rt_channel_msg_t data_ret, rt_int32_t time);
  49. rt_err_t rt_raw_channel_reply(rt_channel_t ch, rt_channel_msg_t data);
  50. rt_err_t rt_raw_channel_recv(rt_channel_t ch, rt_channel_msg_t data);
  51. rt_err_t rt_raw_channel_recv_timeout(rt_channel_t ch, rt_channel_msg_t data, rt_int32_t time);
  52. rt_err_t rt_raw_channel_peek(rt_channel_t ch, rt_channel_msg_t data);
  53. #ifdef __cplusplus
  54. }
  55. #endif
  56. #endif