On 3/6/25 11:31 AM, Dumitru Ceara wrote:
> On 3/1/25 2:56 PM, Frank Wagner wrote:
>> On Windows to current definitions of thread_local are not working.
>>
>> Signed-off-by: Frank Wagner <frank.wag...@dbosoft.eu>
>>
>> ---
> 
> Hi Frank,
> 
> Thanks for the patch!
> 
>>  northd/lflow-mgr.c | 2 ++
>>  northd/northd.c    | 2 ++
>>  northd/northd.h    | 4 ++++
>>  3 files changed, 8 insertions(+)
>>
>> diff --git a/northd/lflow-mgr.c b/northd/lflow-mgr.c
>> index 88ce7ce56..d29d5e7b4 100644
>> --- a/northd/lflow-mgr.c
>> +++ b/northd/lflow-mgr.c
>> @@ -98,7 +98,9 @@ static bool sync_lflow_to_sb(struct ovn_lflow *,
>>  /* TODO:  Move the parallization logic to this module to avoid accessing
>>   * and modifying in both northd.c and lflow-mgr.c. */
>>  extern int parallelization_state;
>> +#ifndef _WIN32
>>  extern thread_local size_t thread_lflow_counter;
>> +#endif
>>  
>>  struct dp_refcnt;
>>  static struct dp_refcnt *dp_refcnt_find(struct hmap *dp_refcnts_map,
>> diff --git a/northd/northd.c b/northd/northd.c
>> index a1fcc64a5..a378fbea5 100644
>> --- a/northd/northd.c
>> +++ b/northd/northd.c
>> @@ -5476,7 +5476,9 @@ int parallelization_state = STATE_NULL;
>>   * threads are collected to fix the lflow hmap's size (by the function
>>   * fix_flow_map_size()).
>>   * */
>> +#ifndef _WIN32
>>  thread_local size_t thread_lflow_counter = 0;
>> +#endif
>>  
>>  static bool
>>  build_dhcpv4_action(struct ovn_port *op, ovs_be32 offer_ip,
>> diff --git a/northd/northd.h b/northd/northd.h
>> index 1fbc93c8e..190503753 100644
>> --- a/northd/northd.h
>> +++ b/northd/northd.h
>> @@ -250,7 +250,11 @@ enum {
>>      STATE_USE_PARALLELIZATION /* parallelization is on */
>>  };
>>  
>> +#ifdef _WIN32
>> +static __declspec(thread) size_t thread_lflow_counter = 0;
>> +#else
>>  extern thread_local size_t thread_lflow_counter;
>> +#endif
> 
> Shouldn't this go to OVS's include/openvswitch/compiler.h instead?
> Maybe define an OVS_THREAD_LOCAL() or something here:
> 
> https://github.com/openvswitch/ovs/blob/main/include/openvswitch/compiler.h
> 
> Ilya, Alin, what do you think?
> 

OVS also has DEFINE_STATIC_PER_THREAD_DATA(), should we use that instead?

https://github.com/openvswitch/ovs/blob/00875941181c632e7ec6a406813c1ec5bd8b1654/lib/ovs-thread.h#L192

>>  
>>  /*
>>   * Multicast snooping and querier per datapath configuration.
> 
> Thanks,
> Dumitru
> 

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to