9 #include "sim_vhpi_c.h"
11 /* Should we exit simulation on ctrl-c or pass it through? */
12 #define EXIT_ON_CTRL_C
14 static struct termios oldt
;
16 static void disable_raw_mode(void)
18 tcsetattr(STDIN_FILENO
, TCSANOW
, &oldt
);
21 static void enable_raw_mode(void)
23 static bool initialized
= false;
26 static struct termios newt
;
28 tcgetattr(STDIN_FILENO
, &oldt
);
34 tcsetattr(STDIN_FILENO
, TCSANOW
, &newt
);
36 atexit(disable_raw_mode
);
40 void sim_console_read(unsigned char *__rt
)
43 unsigned long val
= 0;
47 ret
= read(STDIN_FILENO
, &val
, 1);
49 fprintf(stderr
, "%s: read of stdin returns %d\n", __func__
, ret
);
53 //fprintf(stderr, "read returns %c\n", val);
55 to_std_logic_vector(val
, __rt
, 64);
58 void sim_console_poll(unsigned char *__rt
)
61 struct pollfd fdset
[1];
66 memset(fdset
, 0, sizeof(fdset
));
68 fdset
[0].fd
= STDIN_FILENO
;
69 fdset
[0].events
= POLLIN
;
71 ret
= poll(fdset
, 1, 0);
72 //fprintf(stderr, "poll returns %d\n", ret);
75 if (fdset
[0].revents
& POLLIN
)
77 // fprintf(stderr, "poll revents: 0x%x\n", fdset[0].revents);
80 to_std_logic_vector(val
, __rt
, 64);
83 void sim_console_write(unsigned char *__rs
)
87 val
= from_std_logic_vector(__rs
, 64);
89 fprintf(stderr
, "%c", val
);