Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2#if !defined(__NET_KSFT_H__)
3#define __NET_KSFT_H__
4
5#include <stdio.h>
6#include <stdlib.h>
7#include <unistd.h>
8
9static inline void ksft_ready(void)
10{
11 const char msg[7] = "ready\n";
12 char *env_str;
13 int fd;
14
15 env_str = getenv("KSFT_READY_FD");
16 if (env_str) {
17 fd = atoi(env_str);
18 if (!fd) {
19 fprintf(stderr, "invalid KSFT_READY_FD = '%s'\n",
20 env_str);
21 return;
22 }
23 } else {
24 fd = STDOUT_FILENO;
25 }
26
27 write(fd, msg, sizeof(msg));
28 if (fd != STDOUT_FILENO)
29 close(fd);
30}
31
32static inline void ksft_wait(void)
33{
34 char *env_str;
35 char byte;
36 int fd;
37
38 env_str = getenv("KSFT_WAIT_FD");
39 if (env_str) {
40 fd = atoi(env_str);
41 if (!fd) {
42 fprintf(stderr, "invalid KSFT_WAIT_FD = '%s'\n",
43 env_str);
44 return;
45 }
46 } else {
47 /* Not running in KSFT env, wait for input from STDIN instead */
48 fd = STDIN_FILENO;
49 }
50
51 read(fd, &byte, sizeof(byte));
52 if (fd != STDIN_FILENO)
53 close(fd);
54}
55
56#endif