[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 08/23] Introduce some socket util functions.
From: |
Yoshiaki Tamura |
Subject: |
[Qemu-devel] [RFC PATCH 08/23] Introduce some socket util functions. |
Date: |
Tue, 25 May 2010 17:36:49 +0900 |
Signed-off-by: Yoshiaki Tamura <address@hidden>
---
osdep.c | 13 +++++++++++++
qemu-char.c | 25 ++++++++++++++++++++++++-
qemu_socket.h | 4 ++++
3 files changed, 41 insertions(+), 1 deletions(-)
diff --git a/osdep.c b/osdep.c
index 3bab79a..63444e7 100644
--- a/osdep.c
+++ b/osdep.c
@@ -201,6 +201,12 @@ void socket_set_nonblock(int fd)
ioctlsocket(fd, FIONBIO, &opt);
}
+void socket_set_block(int fd)
+{
+ unsigned long opt = 0;
+ ioctlsocket(fd, FIONBIO, &opt);
+}
+
int inet_aton(const char *cp, struct in_addr *ia)
{
uint32_t addr = inet_addr(cp);
@@ -223,6 +229,13 @@ void socket_set_nonblock(int fd)
fcntl(fd, F_SETFL, f | O_NONBLOCK);
}
+void socket_set_block(int fd)
+{
+ int f;
+ f = fcntl(fd, F_GETFL);
+ fcntl(fd, F_SETFL, f & ~O_NONBLOCK);
+}
+
void qemu_set_cloexec(int fd)
{
int f;
diff --git a/qemu-char.c b/qemu-char.c
index 4169492..ccdf394 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2092,12 +2092,35 @@ static void tcp_chr_telnet_init(int fd)
send(fd, (char *)buf, 3, 0);
}
-static void socket_set_nodelay(int fd)
+void socket_set_delay(int fd)
+{
+ int val = 0;
+ setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&val, sizeof(val));
+}
+
+void socket_set_nodelay(int fd)
{
int val = 1;
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&val, sizeof(val));
}
+void socket_set_timeout(int fd, int s)
+{
+ struct timeval tv = {
+ .tv_sec = s,
+ .tv_usec = 0
+ };
+ /* Set socket_timeout */
+ if (setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO,
+ &tv, sizeof(tv)) < 0) {
+ fprintf(stderr, "failed to set SO_RCVTIMEO\n");
+ }
+ if (setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO,
+ &tv, sizeof(tv)) < 0) {
+ fprintf(stderr, "fialed to set SO_SNDTIMEO\n");
+ }
+}
+
static void tcp_chr_accept(void *opaque)
{
CharDriverState *chr = opaque;
diff --git a/qemu_socket.h b/qemu_socket.h
index 7ee46ac..8eae465 100644
--- a/qemu_socket.h
+++ b/qemu_socket.h
@@ -35,6 +35,10 @@ int inet_aton(const char *cp, struct in_addr *ia);
int qemu_socket(int domain, int type, int protocol);
int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
void socket_set_nonblock(int fd);
+void socket_set_block(int fd);
+void socket_set_nodelay(int fd);
+void socket_set_delay(int fd);
+void socket_set_timeout(int fd, int s);
int send_all(int fd, const void *buf, int len1);
/* New, ipv6-ready socket helper functions, see qemu-sockets.c */
--
1.7.0.31.g1df487
- [Qemu-devel] [RFC PATCH 00/23] Kemari for KVM v0.1.1, Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 14/23] Call init handler of event-tap at main()., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 15/23] Insert event_tap_ioport() to ioport_write()., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 16/23] Insert event_tap_mmio() to cpu_physical_memory_rw()., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 10/23] Introduce util functions to control ft_transaction from savevm layer., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 19/23] Introduce ft_tranx_ready(), and modify migrate_fd_put_ready() when ft_mode is on., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 22/23] Introduce -k option to enable FT migration mode (Kemari)., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 21/23] virtio-blk: Modify save/load handler to handle inuse varialble., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 08/23] Introduce some socket util functions.,
Yoshiaki Tamura <=
- [Qemu-devel] [RFC PATCH 04/23] Use cpu_physical_memory_get_dirty_range() to check multiple dirty pages., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 20/23] Modify tcp_accept_incoming_migration() to handle ft_mode, and add a hack not to close fd when ft_mode is enabled., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 23/23] Add a parser to accept FT migration incoming mode., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 07/23] Introduce skip_header parameter to qemu_loadvm_state()., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 12/23] Insent event-tap callbacks to net/block layer., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 03/23] Use cpu_physical_memory_set_dirty_range() to update phys_ram_dirty., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 06/23] Introduce read() to FdMigrationState., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 18/23] Call event_tap_replay() at vm_start()., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 11/23] Introduce qemu_savevm_state_all()., Yoshiaki Tamura, 2010/05/25
- [Qemu-devel] [RFC PATCH 13/23] Introduce event-tap., Yoshiaki Tamura, 2010/05/25