On 6/17/2015 12:17 PM, Tetsuya Mukawa wrote:
> 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.
When we unregister a server at index x, we will move the server at the
tail of the array to the location x.
> So I have a question about below case.
>
> Step1. socket0 is registered.
> Step2: scoekt1 is registered.
> Step3. socket0 is unregistered.
When socket0 is unregistered, socket1 will be moved to location at index 0.
> Step4. socket2 is registered.
socket2 is registered at index 1.
>
> After above steps, are socket1 and socket2 still registered?
>
> Thanks,
> Tetsuya
>
>
What is your concern here?