Commit aec62507bb6a14b02575f40ec84f617b935043d3
1 parent
1cd548ee
Enable serial (tty) support on Solaris host, by Marion Hakanson.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3018 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
15 additions
and
14 deletions
vl.c
| @@ -1764,17 +1764,19 @@ static CharDriverState *qemu_chr_open_stdio(void) | @@ -1764,17 +1764,19 @@ static CharDriverState *qemu_chr_open_stdio(void) | ||
| 1764 | return chr; | 1764 | return chr; |
| 1765 | } | 1765 | } |
| 1766 | 1766 | ||
| 1767 | -#if defined(__linux__) | 1767 | +#if defined(__linux__) || defined(__sun__) |
| 1768 | static CharDriverState *qemu_chr_open_pty(void) | 1768 | static CharDriverState *qemu_chr_open_pty(void) |
| 1769 | { | 1769 | { |
| 1770 | struct termios tty; | 1770 | struct termios tty; |
| 1771 | char slave_name[1024]; | 1771 | char slave_name[1024]; |
| 1772 | int master_fd, slave_fd; | 1772 | int master_fd, slave_fd; |
| 1773 | 1773 | ||
| 1774 | +#if defined(__linux__) | ||
| 1774 | /* Not satisfying */ | 1775 | /* Not satisfying */ |
| 1775 | if (openpty(&master_fd, &slave_fd, slave_name, NULL, NULL) < 0) { | 1776 | if (openpty(&master_fd, &slave_fd, slave_name, NULL, NULL) < 0) { |
| 1776 | return NULL; | 1777 | return NULL; |
| 1777 | } | 1778 | } |
| 1779 | +#endif | ||
| 1778 | 1780 | ||
| 1779 | /* Disabling local echo and line-buffered output */ | 1781 | /* Disabling local echo and line-buffered output */ |
| 1780 | tcgetattr (master_fd, &tty); | 1782 | tcgetattr (master_fd, &tty); |
| @@ -1921,7 +1923,14 @@ static CharDriverState *qemu_chr_open_tty(const char *filename) | @@ -1921,7 +1923,14 @@ static CharDriverState *qemu_chr_open_tty(const char *filename) | ||
| 1921 | qemu_chr_reset(chr); | 1923 | qemu_chr_reset(chr); |
| 1922 | return chr; | 1924 | return chr; |
| 1923 | } | 1925 | } |
| 1926 | +#else /* ! __linux__ && ! __sun__ */ | ||
| 1927 | +static CharDriverState *qemu_chr_open_pty(void) | ||
| 1928 | +{ | ||
| 1929 | + return NULL; | ||
| 1930 | +} | ||
| 1931 | +#endif /* __linux__ || __sun__ */ | ||
| 1924 | 1932 | ||
| 1933 | +#if defined(__linux__) | ||
| 1925 | typedef struct { | 1934 | typedef struct { |
| 1926 | int fd; | 1935 | int fd; |
| 1927 | int mode; | 1936 | int mode; |
| @@ -2064,17 +2073,10 @@ static CharDriverState *qemu_chr_open_pp(const char *filename) | @@ -2064,17 +2073,10 @@ static CharDriverState *qemu_chr_open_pp(const char *filename) | ||
| 2064 | 2073 | ||
| 2065 | return chr; | 2074 | return chr; |
| 2066 | } | 2075 | } |
| 2076 | +#endif /* __linux__ */ | ||
| 2067 | 2077 | ||
| 2068 | -#else | ||
| 2069 | -static CharDriverState *qemu_chr_open_pty(void) | ||
| 2070 | -{ | ||
| 2071 | - return NULL; | ||
| 2072 | -} | ||
| 2073 | -#endif | ||
| 2074 | - | ||
| 2075 | -#endif /* !defined(_WIN32) */ | 2078 | +#else /* _WIN32 */ |
| 2076 | 2079 | ||
| 2077 | -#ifdef _WIN32 | ||
| 2078 | typedef struct { | 2080 | typedef struct { |
| 2079 | int max_size; | 2081 | int max_size; |
| 2080 | HANDLE hcom, hrecv, hsend; | 2082 | HANDLE hcom, hrecv, hsend; |
| @@ -2440,7 +2442,7 @@ static CharDriverState *qemu_chr_open_win_file_out(const char *file_out) | @@ -2440,7 +2442,7 @@ static CharDriverState *qemu_chr_open_win_file_out(const char *file_out) | ||
| 2440 | 2442 | ||
| 2441 | return qemu_chr_open_win_file(fd_out); | 2443 | return qemu_chr_open_win_file(fd_out); |
| 2442 | } | 2444 | } |
| 2443 | -#endif | 2445 | +#endif /* !_WIN32 */ |
| 2444 | 2446 | ||
| 2445 | /***********************************************************/ | 2447 | /***********************************************************/ |
| 2446 | /* UDP Net console */ | 2448 | /* UDP Net console */ |
| @@ -2954,16 +2956,15 @@ CharDriverState *qemu_chr_open(const char *filename) | @@ -2954,16 +2956,15 @@ CharDriverState *qemu_chr_open(const char *filename) | ||
| 2954 | } else if (!strcmp(filename, "stdio")) { | 2956 | } else if (!strcmp(filename, "stdio")) { |
| 2955 | return qemu_chr_open_stdio(); | 2957 | return qemu_chr_open_stdio(); |
| 2956 | } else | 2958 | } else |
| 2957 | -#endif | ||
| 2958 | #if defined(__linux__) | 2959 | #if defined(__linux__) |
| 2959 | if (strstart(filename, "/dev/parport", NULL)) { | 2960 | if (strstart(filename, "/dev/parport", NULL)) { |
| 2960 | return qemu_chr_open_pp(filename); | 2961 | return qemu_chr_open_pp(filename); |
| 2961 | } else | 2962 | } else |
| 2963 | +#endif | ||
| 2962 | if (strstart(filename, "/dev/", NULL)) { | 2964 | if (strstart(filename, "/dev/", NULL)) { |
| 2963 | return qemu_chr_open_tty(filename); | 2965 | return qemu_chr_open_tty(filename); |
| 2964 | } else | 2966 | } else |
| 2965 | -#endif | ||
| 2966 | -#ifdef _WIN32 | 2967 | +#else /* !_WIN32 */ |
| 2967 | if (strstart(filename, "COM", NULL)) { | 2968 | if (strstart(filename, "COM", NULL)) { |
| 2968 | return qemu_chr_open_win(filename); | 2969 | return qemu_chr_open_win(filename); |
| 2969 | } else | 2970 | } else |