move atexit(term_exit) and O_NONBLOCK to qemu_chr_open_stdio
In the next patch, term_init will be changed to enable or disable echo at will. Move extraneous stuff out of it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
		
							parent
							
								
									c48855e140
								
							
						
					
					
						commit
						0369364be8
					
				
							
								
								
									
										18
									
								
								qemu-char.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								qemu-char.c
									
									
									
									
									
								
							| @ -716,7 +716,6 @@ static void stdio_read(void *opaque) | ||||
| /* init terminal so that we can grab keys */ | ||||
| static struct termios oldtty; | ||||
| static int old_fd0_flags; | ||||
| static int term_atexit_done; | ||||
| 
 | ||||
| static void term_exit(void) | ||||
| { | ||||
| @ -728,10 +727,7 @@ static void term_init(QemuOpts *opts) | ||||
| { | ||||
|     struct termios tty; | ||||
| 
 | ||||
|     tcgetattr (0, &tty); | ||||
|     oldtty = tty; | ||||
|     old_fd0_flags = fcntl(0, F_GETFL); | ||||
| 
 | ||||
|     tty = oldtty; | ||||
|     tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP | ||||
|                           |INLCR|IGNCR|ICRNL|IXON); | ||||
|     tty.c_oflag |= OPOST; | ||||
| @ -745,11 +741,6 @@ static void term_init(QemuOpts *opts) | ||||
|     tty.c_cc[VTIME] = 0; | ||||
| 
 | ||||
|     tcsetattr (0, TCSANOW, &tty); | ||||
| 
 | ||||
|     if (!term_atexit_done++) | ||||
|         atexit(term_exit); | ||||
| 
 | ||||
|     fcntl(0, F_SETFL, O_NONBLOCK); | ||||
| } | ||||
| 
 | ||||
| static void qemu_chr_close_stdio(struct CharDriverState *chr) | ||||
| @ -766,6 +757,13 @@ static CharDriverState *qemu_chr_open_stdio(QemuOpts *opts) | ||||
| 
 | ||||
|     if (stdio_nb_clients >= STDIO_MAX_CLIENTS) | ||||
|         return NULL; | ||||
|     if (stdio_nb_clients == 0) { | ||||
|         old_fd0_flags = fcntl(0, F_GETFL); | ||||
|         tcgetattr (0, &oldtty); | ||||
|         fcntl(0, F_SETFL, O_NONBLOCK); | ||||
|         atexit(term_exit); | ||||
|     } | ||||
| 
 | ||||
|     chr = qemu_chr_open_fd(0, 1); | ||||
|     chr->chr_close = qemu_chr_close_stdio; | ||||
|     qemu_set_fd_handler2(0, stdio_read_poll, stdio_read, NULL, chr); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Paolo Bonzini
						Paolo Bonzini