[PATCH v1] libcamera: ipc_unixsocket: Share stdin and stdout with IPA proxy

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Nov 6 16:59:48 CET 2024


Hi Julien,

Quoting Julien Vuillaumier (2024-11-06 15:43:06)
> When IPA is running in isolated mode, at IPA process creation time
> all the inherited file descriptors are closed in the new process
> after the fork, with the exception of the file descriptor relevant
> to the IPC peer Unix socket.
> 
> In order to enable the IPA logging in the console, add stdout and
> stderr to the list of file descriptors to be shared with the
> isolated process.
> 
> Signed-off-by: Julien Vuillaumier <julien.vuillaumier at nxp.com>
> ---
>  src/libcamera/ipc_pipe_unixsocket.cpp | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/libcamera/ipc_pipe_unixsocket.cpp b/src/libcamera/ipc_pipe_unixsocket.cpp
> index 668ec73b..9ca219dc 100644
> --- a/src/libcamera/ipc_pipe_unixsocket.cpp
> +++ b/src/libcamera/ipc_pipe_unixsocket.cpp
> @@ -7,6 +7,7 @@
>  
>  #include "libcamera/internal/ipc_pipe_unixsocket.h"
>  
> +#include <unistd.h>
>  #include <vector>
>  
>  #include <libcamera/base/event_dispatcher.h>
> @@ -42,6 +43,10 @@ IPCPipeUnixSocket::IPCPipeUnixSocket(const char *ipaModulePath,
>         args.push_back(std::to_string(fd.get()));
>         fds.push_back(fd.get());
>  
> +       /* Share stdout and stderr with the proxy for logging purpose */
> +       fds.push_back(STDOUT_FILENO);
> +       fds.push_back(STDERR_FILENO);
> +

Is this all that's required ? Is there a corresponding change in the
proxy to tie the spawned process stdout/stderr to these fds ?

--
Kieran


>         proc_ = std::make_unique<Process>();
>         int ret = proc_->start(ipaProxyWorkerPath, args, fds);
>         if (ret) {
> -- 
> 2.34.1
>


More information about the libcamera-devel mailing list