Lines Matching refs:server

18 #define IVSHMEM_SERVER_DEBUG(server, fmt, ...) do { \  argument
19 if ((server)->verbose) { \
74 ivshmem_server_free_peer(IvshmemServer *server, IvshmemServerPeer *peer) in ivshmem_server_free_peer() argument
79 IVSHMEM_SERVER_DEBUG(server, "free peer %" PRId64 "\n", peer->id); in ivshmem_server_free_peer()
81 QTAILQ_REMOVE(&server->peer_list, peer, next); in ivshmem_server_free_peer()
84 QTAILQ_FOREACH(other_peer, &server->peer_list, next) { in ivshmem_server_free_peer()
97 ivshmem_server_send_initial_info(IvshmemServer *server, IvshmemServerPeer *peer) in ivshmem_server_send_initial_info() argument
105 IVSHMEM_SERVER_DEBUG(server, "cannot send version: %s\n", in ivshmem_server_send_initial_info()
113 IVSHMEM_SERVER_DEBUG(server, "cannot send peer id: %s\n", in ivshmem_server_send_initial_info()
119 ret = ivshmem_server_send_one_msg(peer->sock_fd, -1, server->shm_fd); in ivshmem_server_send_initial_info()
121 IVSHMEM_SERVER_DEBUG(server, "cannot send shm fd: %s\n", in ivshmem_server_send_initial_info()
131 ivshmem_server_handle_new_conn(IvshmemServer *server) in ivshmem_server_handle_new_conn() argument
141 newfd = qemu_accept(server->sock_fd, in ivshmem_server_handle_new_conn()
145 IVSHMEM_SERVER_DEBUG(server, "cannot accept() %s\n", strerror(errno)); in ivshmem_server_handle_new_conn()
150 IVSHMEM_SERVER_DEBUG(server, "accept()=%d\n", newfd); in ivshmem_server_handle_new_conn()
160 if (ivshmem_server_search_peer(server, server->cur_id) == NULL) { in ivshmem_server_handle_new_conn()
163 server->cur_id++; in ivshmem_server_handle_new_conn()
166 IVSHMEM_SERVER_DEBUG(server, "cannot allocate new client id\n"); in ivshmem_server_handle_new_conn()
171 peer->id = server->cur_id++; in ivshmem_server_handle_new_conn()
174 peer->vectors_count = server->n_vectors; in ivshmem_server_handle_new_conn()
177 IVSHMEM_SERVER_DEBUG(server, "cannot create eventfd\n"); in ivshmem_server_handle_new_conn()
183 if (ivshmem_server_send_initial_info(server, peer) < 0) { in ivshmem_server_handle_new_conn()
184 IVSHMEM_SERVER_DEBUG(server, "cannot send initial info\n"); in ivshmem_server_handle_new_conn()
189 QTAILQ_FOREACH(other_peer, &server->peer_list, next) { in ivshmem_server_handle_new_conn()
197 QTAILQ_FOREACH(other_peer, &server->peer_list, next) { in ivshmem_server_handle_new_conn()
210 QTAILQ_INSERT_TAIL(&server->peer_list, peer, next); in ivshmem_server_handle_new_conn()
211 IVSHMEM_SERVER_DEBUG(server, "new peer id = %" PRId64 "\n", in ivshmem_server_handle_new_conn()
255 ivshmem_server_init(IvshmemServer *server, const char *unix_sock_path, in ivshmem_server_init() argument
262 memset(server, 0, sizeof(*server)); in ivshmem_server_init()
263 server->verbose = verbose; in ivshmem_server_init()
265 ret = snprintf(server->unix_sock_path, sizeof(server->unix_sock_path), in ivshmem_server_init()
267 if (ret < 0 || ret >= sizeof(server->unix_sock_path)) { in ivshmem_server_init()
268 IVSHMEM_SERVER_DEBUG(server, "could not copy unix socket path\n"); in ivshmem_server_init()
271 ret = snprintf(server->shm_path, sizeof(server->shm_path), in ivshmem_server_init()
273 if (ret < 0 || ret >= sizeof(server->shm_path)) { in ivshmem_server_init()
274 IVSHMEM_SERVER_DEBUG(server, "could not copy shm path\n"); in ivshmem_server_init()
278 server->use_shm_open = use_shm_open; in ivshmem_server_init()
279 server->shm_size = shm_size; in ivshmem_server_init()
280 server->n_vectors = n_vectors; in ivshmem_server_init()
282 QTAILQ_INIT(&server->peer_list); in ivshmem_server_init()
289 ivshmem_server_start(IvshmemServer *server) in ivshmem_server_start() argument
295 if (server->use_shm_open) { in ivshmem_server_start()
296 IVSHMEM_SERVER_DEBUG(server, "Using POSIX shared memory: %s\n", in ivshmem_server_start()
297 server->shm_path); in ivshmem_server_start()
298 shm_fd = shm_open(server->shm_path, O_CREAT | O_RDWR, S_IRWXU); in ivshmem_server_start()
300 gchar *filename = g_strdup_printf("%s/ivshmem.XXXXXX", server->shm_path); in ivshmem_server_start()
301 IVSHMEM_SERVER_DEBUG(server, "Using file-backed shared memory: %s\n", in ivshmem_server_start()
302 server->shm_path); in ivshmem_server_start()
309 fprintf(stderr, "cannot open shm file %s: %s\n", server->shm_path, in ivshmem_server_start()
313 if (ivshmem_server_ftruncate(shm_fd, server->shm_size) < 0) { in ivshmem_server_start()
314 fprintf(stderr, "ftruncate(%s) failed: %s\n", server->shm_path, in ivshmem_server_start()
319 IVSHMEM_SERVER_DEBUG(server, "create & bind socket %s\n", in ivshmem_server_start()
320 server->unix_sock_path); in ivshmem_server_start()
325 IVSHMEM_SERVER_DEBUG(server, "cannot create socket: %s\n", in ivshmem_server_start()
332 server->unix_sock_path); in ivshmem_server_start()
334 IVSHMEM_SERVER_DEBUG(server, "could not copy unix socket path\n"); in ivshmem_server_start()
338 IVSHMEM_SERVER_DEBUG(server, "cannot connect to %s: %s\n", s_un.sun_path, in ivshmem_server_start()
344 IVSHMEM_SERVER_DEBUG(server, "listen() failed: %s\n", strerror(errno)); in ivshmem_server_start()
348 server->sock_fd = sock_fd; in ivshmem_server_start()
349 server->shm_fd = shm_fd; in ivshmem_server_start()
356 if (server->use_shm_open) { in ivshmem_server_start()
357 shm_unlink(server->shm_path); in ivshmem_server_start()
365 ivshmem_server_close(IvshmemServer *server) in ivshmem_server_close() argument
369 IVSHMEM_SERVER_DEBUG(server, "close server\n"); in ivshmem_server_close()
371 QTAILQ_FOREACH_SAFE(peer, &server->peer_list, next, npeer) { in ivshmem_server_close()
372 ivshmem_server_free_peer(server, peer); in ivshmem_server_close()
375 unlink(server->unix_sock_path); in ivshmem_server_close()
376 if (server->use_shm_open) { in ivshmem_server_close()
377 shm_unlink(server->shm_path); in ivshmem_server_close()
379 close(server->sock_fd); in ivshmem_server_close()
380 close(server->shm_fd); in ivshmem_server_close()
381 server->sock_fd = -1; in ivshmem_server_close()
382 server->shm_fd = -1; in ivshmem_server_close()
387 ivshmem_server_get_fds(const IvshmemServer *server, fd_set *fds, int *maxfd) in ivshmem_server_get_fds() argument
391 if (server->sock_fd == -1) { in ivshmem_server_get_fds()
395 FD_SET(server->sock_fd, fds); in ivshmem_server_get_fds()
396 if (server->sock_fd >= *maxfd) { in ivshmem_server_get_fds()
397 *maxfd = server->sock_fd + 1; in ivshmem_server_get_fds()
400 QTAILQ_FOREACH(peer, &server->peer_list, next) { in ivshmem_server_get_fds()
410 ivshmem_server_handle_fds(IvshmemServer *server, fd_set *fds, int maxfd) in ivshmem_server_handle_fds() argument
414 if (server->sock_fd < maxfd && FD_ISSET(server->sock_fd, fds) && in ivshmem_server_handle_fds()
415 ivshmem_server_handle_new_conn(server) < 0 && errno != EINTR) { in ivshmem_server_handle_fds()
416 IVSHMEM_SERVER_DEBUG(server, "ivshmem_server_handle_new_conn() " in ivshmem_server_handle_fds()
421 QTAILQ_FOREACH_SAFE(peer, &server->peer_list, next, peer_next) { in ivshmem_server_handle_fds()
423 IVSHMEM_SERVER_DEBUG(server, "peer->sock_fd=%d\n", peer->sock_fd); in ivshmem_server_handle_fds()
425 ivshmem_server_free_peer(server, peer); in ivshmem_server_handle_fds()
434 ivshmem_server_search_peer(IvshmemServer *server, int64_t peer_id) in ivshmem_server_search_peer() argument
438 QTAILQ_FOREACH(peer, &server->peer_list, next) { in ivshmem_server_search_peer()
448 ivshmem_server_dump(const IvshmemServer *server) in ivshmem_server_dump() argument
454 QTAILQ_FOREACH(peer, &server->peer_list, next) { in ivshmem_server_dump()