lwp_ipc.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. RT_CHANNEL_FD
  20. };
  21. struct rt_channel_msg
  22. {
  23. void *sender;
  24. int type;
  25. union
  26. {
  27. struct chbuf
  28. {
  29. void *buf;
  30. size_t length;
  31. } b;
  32. struct chfd
  33. {
  34. void *file;
  35. int fd;
  36. } fd;
  37. void* d;
  38. } u;
  39. };
  40. typedef struct rt_channel_msg *rt_channel_msg_t;
  41. int rt_channel_open(const char *name, int flags);
  42. rt_err_t rt_channel_close(int fd);
  43. rt_err_t rt_channel_send(int fd, rt_channel_msg_t data);
  44. rt_err_t rt_channel_send_recv(int fd, rt_channel_msg_t data, rt_channel_msg_t data_ret);
  45. 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);
  46. rt_err_t rt_channel_reply(int fd, rt_channel_msg_t data);
  47. rt_err_t rt_channel_recv(int fd, rt_channel_msg_t data);
  48. rt_err_t rt_channel_recv_timeout(int fd, rt_channel_msg_t data, rt_int32_t time);
  49. rt_err_t rt_channel_peek(int fd, rt_channel_msg_t data);
  50. rt_channel_t rt_raw_channel_open(const char *name, int flags);
  51. rt_err_t rt_raw_channel_close(rt_channel_t ch);
  52. rt_err_t rt_raw_channel_send(rt_channel_t ch, rt_channel_msg_t data);
  53. rt_err_t rt_raw_channel_send_recv(rt_channel_t ch, rt_channel_msg_t data, rt_channel_msg_t data_ret);
  54. 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);
  55. rt_err_t rt_raw_channel_reply(rt_channel_t ch, rt_channel_msg_t data);
  56. rt_err_t rt_raw_channel_recv(rt_channel_t ch, rt_channel_msg_t data);
  57. rt_err_t rt_raw_channel_recv_timeout(rt_channel_t ch, rt_channel_msg_t data, rt_int32_t time);
  58. rt_err_t rt_raw_channel_peek(rt_channel_t ch, rt_channel_msg_t data);
  59. rt_err_t rt_channel_component_init(void);
  60. #ifdef __cplusplus
  61. }
  62. #endif
  63. #endif