| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #if !defined(__NET_KSFT_H__)
- #define __NET_KSFT_H__
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- 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;
- }
- if (write(fd, msg, sizeof(msg)) < 0)
- perror("write()");
- 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;
- }
- if (read(fd, &byte, sizeof(byte)) < 0)
- perror("read()");
- if (fd != STDIN_FILENO)
- close(fd);
- }
- #endif
|