On 2015/06/02 10:50, Huawei Xie wrote: > rte_vhost_driver_unregister will remove the listenfd from event list, and > then close it. > > Signed-off-by: Huawei Xie <huawei.xie at intel.com> > Signed-off-by: Peng Sun <peng.a.sun at intel.com> > --- > > +/** > + * Unregister the specified vhost server > + */ > +int > +rte_vhost_driver_unregister(const char *path) > +{ > + int i; > + int count; > + > + pthread_mutex_lock(&g_vhost_server.server_mutex); > + > + for (i = 0; i < g_vhost_server.vserver_cnt; i++) { > + if (!strcmp(g_vhost_server.server[i]->path, path)) { > + fdset_del(&g_vhost_server.fdset, > + g_vhost_server.server[i]->listenfd); > + > + close(g_vhost_server.server[i]->listenfd); > + free(g_vhost_server.server[i]->path); > + free(g_vhost_server.server[i]); > + > + unlink(path); > + > + count = --g_vhost_server.vserver_cnt; > + g_vhost_server.server[i] = > + g_vhost_server.server[count]; > + g_vhost_server.server[count] = > + NULL; > + pthread_mutex_unlock(&g_vhost_server.server_mutex); > + > + return 0; > + } > + } > + pthread_mutex_unlock(&g_vhost_server.server_mutex); > + > + return -1; > +} > + >
Hi Xie, It seems vserver_cnt is incremented when socket is registered, and decremented when unregistered. And this value is used for index value of g_vhost_server.server[ ], when a new socket is registered. So I have a question about below case. Step1. socket0 is registered. Step2: scoekt1 is registered. Step3. socket0 is unregistered. Step4. socket2 is registered. After above steps, are socket1 and socket2 still registered? Thanks, Tetsuya