From 7ff976dab392a82f4307b58b36c6551612fa7e5f Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Tue, 7 Dec 2021 02:18:58 -0500 Subject: [PATCH] [posix] [pipe] add IPC for POSIX and add pipe for it --- components/drivers/Kconfig | 6 +----- components/drivers/include/ipc/pipe.h | 6 ------ components/drivers/src/pipe.c | 26 +++++++++++++------------- components/libc/posix/Kconfig | 2 ++ components/libc/posix/ipc/Kconfig | 17 +++++++++++++++++ 5 files changed, 33 insertions(+), 24 deletions(-) create mode 100644 components/libc/posix/ipc/Kconfig diff --git a/components/drivers/Kconfig b/components/drivers/Kconfig index 159a6cbda3..8d340da3f5 100755 --- a/components/drivers/Kconfig +++ b/components/drivers/Kconfig @@ -5,10 +5,6 @@ config RT_USING_DEVICE_IPC default y if RT_USING_DEVICE_IPC - config RT_PIPE_BUFSZ - int "Set pipe buffer size" - default 512 - config RT_USING_SYSTEM_WORKQUEUE bool "Using system default workqueue" default n @@ -18,7 +14,7 @@ if RT_USING_DEVICE_IPC int "The stack size for system workqueue thread" default 2048 - config RT_SYSTEM_WORKQUEUE_PRIORITY + config RT_SYSTEM_WORKQUEUE_PRIORITY int "The priority level of system workqueue thread" default 23 endif diff --git a/components/drivers/include/ipc/pipe.h b/components/drivers/include/ipc/pipe.h index a45e8ae002..7d271c3a04 100644 --- a/components/drivers/include/ipc/pipe.h +++ b/components/drivers/include/ipc/pipe.h @@ -15,12 +15,6 @@ #include #include -#ifndef RT_PIPE_BUFSZ -#define PIPE_BUFSZ 512 -#else -#define PIPE_BUFSZ RT_PIPE_BUFSZ -#endif - struct rt_pipe_device { struct rt_device parent; diff --git a/components/drivers/src/pipe.c b/components/drivers/src/pipe.c index 89b544bc4e..8f9a62e05b 100644 --- a/components/drivers/src/pipe.c +++ b/components/drivers/src/pipe.c @@ -13,7 +13,7 @@ #include #include -#ifdef RT_USING_POSIX_DEVIO +#if defined(RT_USING_POSIX_DEVIO) && defined(RT_USING_POSIX_PIPE) #include #include #include @@ -320,9 +320,9 @@ static const struct dfs_file_ops pipe_fops = RT_NULL, pipe_fops_poll, }; -#endif /* RT_USING_POSIX_DEVIO */ +#endif /* defined(RT_USING_POSIX_DEVIO) && defined(RT_USING_POSIX_PIPE) */ -rt_err_t rt_pipe_open(rt_device_t device, rt_uint16_t oflag) +static rt_err_t rt_pipe_open(rt_device_t device, rt_uint16_t oflag) { rt_pipe_t *pipe = (rt_pipe_t *)device; rt_err_t ret = RT_EOK; @@ -350,7 +350,7 @@ __exit: return ret; } -rt_err_t rt_pipe_close(rt_device_t device) +static rt_err_t rt_pipe_close(rt_device_t device) { rt_pipe_t *pipe = (rt_pipe_t *)device; @@ -368,7 +368,7 @@ rt_err_t rt_pipe_close(rt_device_t device) return RT_EOK; } -rt_size_t rt_pipe_read(rt_device_t device, rt_off_t pos, void *buffer, rt_size_t count) +static rt_size_t rt_pipe_read(rt_device_t device, rt_off_t pos, void *buffer, rt_size_t count) { uint8_t *pbuf; rt_size_t read_bytes = 0; @@ -396,7 +396,7 @@ rt_size_t rt_pipe_read(rt_device_t device, rt_off_t pos, void *buffer, rt_size_t return read_bytes; } -rt_size_t rt_pipe_write(rt_device_t device, rt_off_t pos, const void *buffer, rt_size_t count) +static rt_size_t rt_pipe_write(rt_device_t device, rt_off_t pos, const void *buffer, rt_size_t count) { uint8_t *pbuf; rt_size_t write_bytes = 0; @@ -424,7 +424,7 @@ rt_size_t rt_pipe_write(rt_device_t device, rt_off_t pos, const void *buffer, rt return write_bytes; } -rt_err_t rt_pipe_control(rt_device_t dev, int cmd, void *args) +static rt_err_t rt_pipe_control(rt_device_t dev, int cmd, void *args) { return RT_EOK; } @@ -479,9 +479,9 @@ rt_pipe_t *rt_pipe_create(const char *name, int bufsz) rt_free(pipe); return RT_NULL; } -#ifdef RT_USING_POSIX_DEVIO +#if defined(RT_USING_POSIX_DEVIO) && defined(RT_USING_POSIX_PIPE) dev->fops = (void*)&pipe_fops; -#endif /* RT_USING_POSIX_DEVIO */ +#endif return pipe; } @@ -529,7 +529,7 @@ int rt_pipe_delete(const char *name) return result; } -#ifdef RT_USING_POSIX_DEVIO +#if defined(RT_USING_POSIX_DEVIO) && defined(RT_USING_POSIX_PIPE) int pipe(int fildes[2]) { rt_pipe_t *pipe; @@ -539,7 +539,7 @@ int pipe(int fildes[2]) rt_snprintf(dname, sizeof(dname), "pipe%d", pipeno++); - pipe = rt_pipe_create(dname, PIPE_BUFSZ); + pipe = rt_pipe_create(dname, RT_USING_POSIX_PIPE_SIZE); if (pipe == RT_NULL) { return -1; @@ -567,7 +567,7 @@ int mkfifo(const char *path, mode_t mode) { rt_pipe_t *pipe; - pipe = rt_pipe_create(path, PIPE_BUFSZ); + pipe = rt_pipe_create(path, RT_USING_POSIX_PIPE_SIZE); if (pipe == RT_NULL) { return -1; @@ -575,4 +575,4 @@ int mkfifo(const char *path, mode_t mode) return 0; } -#endif /* RT_USING_POSIX_DEVIO */ +#endif /* defined(RT_USING_POSIX_DEVIO) && defined(RT_USING_POSIX_PIPE) */ diff --git a/components/libc/posix/Kconfig b/components/libc/posix/Kconfig index db83269dd0..52b5fdc948 100644 --- a/components/libc/posix/Kconfig +++ b/components/libc/posix/Kconfig @@ -55,4 +55,6 @@ if RT_USING_PTHREADS default 8 endif +source "$RTT_DIR/components/libc/posix/ipc/Kconfig" + endmenu diff --git a/components/libc/posix/ipc/Kconfig b/components/libc/posix/ipc/Kconfig new file mode 100644 index 0000000000..f5ec6ad040 --- /dev/null +++ b/components/libc/posix/ipc/Kconfig @@ -0,0 +1,17 @@ +menu "Interprocess Communication (IPC)" + +config RT_USING_POSIX_PIPE + bool "Enable pipe and FIFO" + select RT_USING_POSIX_FS + select RT_USING_POSIX_DEVIO + select RT_USING_POSIX_POLL + default n + +config RT_USING_POSIX_PIPE_SIZE + int "Set pipe buffer size" + depends on RT_USING_POSIX_PIPE + default 512 + +comment "Socket is in the 'Network' category" + +endmenu