Commit aec62507bb6a14b02575f40ec84f617b935043d3

Authored by ths
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
@@ -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