git: f53120073b32 - main - Revert "bsnmpclient(3): make it thread-safe"

Edward Tomasz Napierala trasz at FreeBSD.org
Tue Dec 29 19:59:17 UTC 2020


The branch main has been updated by trasz:

URL: https://cgit.FreeBSD.org/src/commit/?id=f53120073b321c1d2e42641ca22414992ddbe0ff

commit f53120073b321c1d2e42641ca22414992ddbe0ff
Author:     Edward Tomasz Napierala <trasz at FreeBSD.org>
AuthorDate: 2020-12-29 19:55:05 +0000
Commit:     Edward Tomasz Napierala <trasz at FreeBSD.org>
CommitDate: 2020-12-29 19:55:05 +0000

    Revert "bsnmpclient(3): make it thread-safe"
    
    This reverts commit 89e3d5671ba13dceca272d5b159c9bd805f3f504.
    
    As pointed out, there are several problems with that commit:
    
    1. The new semantics, while useful for clients where multiple
       threads use separate contexts, breaks clients which correctly
       share a single one
    2. Change in semantics would require a library version bump
    3. It doesn't build with GCC
---
 contrib/bsnmp/lib/asn1.c       | 2 +-
 contrib/bsnmp/lib/snmpclient.c | 4 ++--
 contrib/bsnmp/lib/snmpclient.h | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/contrib/bsnmp/lib/asn1.c b/contrib/bsnmp/lib/asn1.c
index a03dac70c529..f1f9267c0226 100644
--- a/contrib/bsnmp/lib/asn1.c
+++ b/contrib/bsnmp/lib/asn1.c
@@ -1019,7 +1019,7 @@ asn_oid2str_r(const struct asn_oid *oid, char *buf)
 char *
 asn_oid2str(const struct asn_oid *oid)
 {
-	__thread static char str[ASN_OIDSTRLEN];
+	static char str[ASN_OIDSTRLEN];
 
 	return (asn_oid2str_r(oid, str));
 }
diff --git a/contrib/bsnmp/lib/snmpclient.c b/contrib/bsnmp/lib/snmpclient.c
index e49105918416..c22d8e125a14 100644
--- a/contrib/bsnmp/lib/snmpclient.c
+++ b/contrib/bsnmp/lib/snmpclient.c
@@ -71,7 +71,7 @@
 #define	DEBUG_PARSE	0
 
 /* global context */
-__thread struct snmp_client snmp_client;
+struct snmp_client snmp_client;
 
 /* List of all outstanding requests */
 struct sent_pdu {
@@ -86,7 +86,7 @@ struct sent_pdu {
 };
 LIST_HEAD(sent_pdu_list, sent_pdu);
 
-__thread static struct sent_pdu_list sent_pdus;
+static struct sent_pdu_list sent_pdus;
 
 /*
  * Prototype table entry. All C-structure produced by the table function must
diff --git a/contrib/bsnmp/lib/snmpclient.h b/contrib/bsnmp/lib/snmpclient.h
index 1bc3780de038..a19bdb2ea653 100644
--- a/contrib/bsnmp/lib/snmpclient.h
+++ b/contrib/bsnmp/lib/snmpclient.h
@@ -114,7 +114,7 @@ struct snmp_client {
 };
 
 /* the global context */
-extern __thread struct snmp_client snmp_client;
+extern struct snmp_client snmp_client;
 
 /* initizialies a snmp_client structure */
 void snmp_client_init(struct snmp_client *);


More information about the dev-commits-src-all mailing list