/* SPDX-License-Identifier: GPL-2.0 */ #if !defined(__NET_KSFT_H__) #define __NET_KSFT_H__ #include #include #include static inline void ksft_ready(void) { const char msg[7] = "ready\n"; char *env_str; int fd; env_str = getenv("KSFT_READY_FD"); if (env_str) { fd = atoi(env_str); if (!fd) { fprintf(stderr, "invalid KSFT_READY_FD = '%s'\n", env_str); return; } } else { fd = STDOUT_FILENO; } write(fd, msg, sizeof(msg)); if (fd != STDOUT_FILENO) close(fd); } static inline void ksft_wait(void) { char *env_str; char byte; int fd; env_str = getenv("KSFT_WAIT_FD"); if (env_str) { fd = atoi(env_str); if (!fd) { fprintf(stderr, "invalid KSFT_WAIT_FD = '%s'\n", env_str); return; } } else { /* Not running in KSFT env, wait for input from STDIN instead */ fd = STDIN_FILENO; } read(fd, &byte, sizeof(byte)); if (fd != STDIN_FILENO) close(fd); } #endif