qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* Re: Fwd: [Qemu-devel] Using the qemu Monitor
       [not found] <6336c7d610f804375010e6f466ea4719@chesterfielddesign.com>
@ 2005-05-25 21:49 ` Julian Chesterfield
  0 siblings, 0 replies; only message in thread
From: Julian Chesterfield @ 2005-05-25 21:49 UTC (permalink / raw)
  To: qemu-devel

Henrik,

I had been trying to connect to /dev/pts/0 and am having trouble receiving 
data. I'm running redhat 9 and have written a small program to open the 
pty and read/write to it. First time I connect I receive the 'QEMU 0.7.0 
monitor - type 'help' for more information' welcome message. From this 
point onwards I can write commands, but do not read any data from the 
socket. I have 2 questions therefore... Is there a standard unix utility 
that I can use to verify the pts socket is working (I've tried minicom 
and kermit, neither are able to send/receive over the socket)? Perhaps 
there's an error in my test code below?


Code:

/*Socket open and config*/
fd = open(argv[1], O_RDWR | O_NOCTTY | O_NDELAY);
fcntl(fd, F_SETFL, 0); /*Set port to block*/

tcgetattr(fd, &options);
options.c_cflag     |= (CLOCAL | CREAD);
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_lflag     |= (ICANON | ECHO | ECHOE | ISIG);
options.c_oflag     &= ~OPOST;
options.c_cc[VMIN]  = 0;
options.c_cc[VTIME] = 10;

cfsetispeed(&options, B38400);
cfsetospeed(&options, B38400);
tcsetattr(fd, TCSANOW, &options);

/*initial socket read */
FD_ZERO(&fds);
FD_SET(fd,&fds);
timeout.tv_sec = 1;
timeout.tv_usec = 0;
maxfd = fd+1;
if(select(maxfd,&fds,NULL,NULL,&timeout)>0) {
	nbytes = read(fd, buffer, MAXBUFLEN - 1);
	printf("%s\n",buffer);
}

while(running) {
	enter_string = (char *)calloc(1,MAXBUFLEN);
	bufptr = enter_string;
	memset(enter_string,0x00,MAXBUFLEN);
      			
	if(fgets(enter_string,MAXBUFLEN,stdin)==enter_string) {
		bufptr+=strlen(enter_string);
		*bufptr = '\r';
	} else exit(-1);

	printf("Command received, %s\n",enter_string);

	nbytes = write(fd, enter_string,strlen(enter_string));
	printf("Wrote %d bytes\n",nbytes);

	/*Read response, block until received*/
	nbytes = read(fd, buffer, MAXBUFLEN - 1);
	printf("Received %s\n",buffer);
}

The code above never returns from the final read. Using select 
instead never indicates data available to read. Thanks in advance for any 
pointers!

- Julian


> > From: Henrik Nordstrom <hno@marasystems.com>
> > Date: 21 May 2005 02:13:05 GMT-04:00
> > To: qemu-devel@nongnu.org
> > Subject: Re: [Qemu-devel] Using the qemu Monitor
> > Reply-To: qemu-devel@nongnu.org
> >
> > On Fri, 20 May 2005, Julian Chesterfield wrote:
> >
> >> Is there a way to redirect monitor IO to a local socket, e.g. a unix
> >> filehandle socket, under linux? When I try to redirect to a pty using
> >> '-monitor pty' the graphical qemu window doesn't boot. Am I starting
> >> it incorrectly?
> >>
> >> ARGS:
> >> qemu -hda <IMAGE> -m 256 -boot c -nics 1 -n <IFUP_SCRIPT> -full-screen
> >> -monitor pty
> >>
> >> I then get the message:
> >> char device redirected to /dev/pts/0
> >
> > You then need to open /dev/pts/0 as if it was a serial port...
> >
> > Regards
> > Henrik
> >
> >
> > _______________________________________________
> > Qemu-devel mailing list
> > Qemu-devel@nongnu.org
> > http://lists.nongnu.org/mailman/listinfo/qemu-devel
> 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-05-25 21:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <6336c7d610f804375010e6f466ea4719@chesterfielddesign.com>
2005-05-25 21:49 ` Fwd: [Qemu-devel] Using the qemu Monitor Julian Chesterfield

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).