diff options
author | Alexander Ivanov | 2022-10-17 09:28:19 +0200 |
---|---|---|
committer | Konstantin Kostiuk | 2022-10-26 19:35:07 +0200 |
commit | c6cd588bb3a29a831c862780631a7d2145ade5de (patch) | |
tree | a5003e207e1285709b9d8e0fc85cdf8626327ecd /qga/channel-posix.c | |
parent | Merge tag 'trivial-branch-for-7.2-pull-request' of https://gitlab.com/laurent... (diff) | |
download | qemu-c6cd588bb3a29a831c862780631a7d2145ade5de.tar.gz qemu-c6cd588bb3a29a831c862780631a7d2145ade5de.tar.xz qemu-c6cd588bb3a29a831c862780631a7d2145ade5de.zip |
qga: Add initial FreeBSD support
- Fix device path.
- Fix virtio-serial channel initialization.
- Make the code buildable in FreeBSD.
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>
Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
Signed-off-by: Konstantin Kostiuk <kkostiuk@redhat.com>
Diffstat (limited to 'qga/channel-posix.c')
-rw-r--r-- | qga/channel-posix.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/qga/channel-posix.c b/qga/channel-posix.c index 6796a02cff..568350ded4 100644 --- a/qga/channel-posix.c +++ b/qga/channel-posix.c @@ -149,6 +149,25 @@ static gboolean ga_channel_open(GAChannel *c, const gchar *path, return false; } #endif +#ifdef __FreeBSD__ + /* + * In the default state channel sends echo of every command to a + * client. The client programm doesn't expect this and raises an + * error. Suppress echo by resetting ECHO terminal flag. + */ + struct termios tio; + if (tcgetattr(fd, &tio) < 0) { + error_setg_errno(errp, errno, "error getting channel termios attrs"); + close(fd); + return false; + } + tio.c_lflag &= ~ECHO; + if (tcsetattr(fd, TCSAFLUSH, &tio) < 0) { + error_setg_errno(errp, errno, "error setting channel termios attrs"); + close(fd); + return false; + } +#endif /* __FreeBSD__ */ ret = ga_channel_client_add(c, fd); if (ret) { error_setg(errp, "error adding channel to main loop"); |