Date: Tue, 29 Dec 2020 11:04:58 -0800 From: Ryan Libby <rlibby@gmail.com> To: Edward Tomasz Napierala <trasz@freebsd.org> Cc: src-committers <src-committers@freebsd.org>, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 89e3d5671ba1 - main - bsnmpclient(3): make it thread-safe Message-ID: <CAHgpiFzO3oOLyF1FX_51CrWHryMCtLp9njZYxybWXP2X-xyHUQ@mail.gmail.com> In-Reply-To: <202012291500.0BTF0vGw034594@gitrepo.freebsd.org> References: <202012291500.0BTF0vGw034594@gitrepo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Dec 29, 2020 at 7:01 AM Edward Tomasz Napierala <trasz@freebsd.org> wrote: > > The branch main has been updated by trasz: > > URL: https://cgit.FreeBSD.org/src/commit/?id=89e3d5671ba13dceca272d5b159c9bd805f3f504 > > commit 89e3d5671ba13dceca272d5b159c9bd805f3f504 > Author: Edward Tomasz Napierala <trasz@FreeBSD.org> > AuthorDate: 2020-12-29 14:59:31 +0000 > Commit: Edward Tomasz Napierala <trasz@FreeBSD.org> > CommitDate: 2020-12-29 14:59:37 +0000 > > bsnmpclient(3): make it thread-safe > > Reviewed By: harti > Sponsored by: NetApp, Inc. > Sponsored by: Klara, Inc. > Differential Revision: https://reviews.freebsd.org/D27336 > --- > 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 f1f9267c0226..a03dac70c529 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) > { > - static char str[ASN_OIDSTRLEN]; > + __thread static char str[ASN_OIDSTRLEN]; gcc does not accept this spelling. It insists on `static __thread` instead. --- asn1.o --- /usr/src/freebsd/contrib/bsnmp/lib/asn1.c: In function 'asn_oid2str': /usr/src/freebsd/contrib/bsnmp/lib/asn1.c:1022:2: error: '__thread' before 'static' 1022 | __thread static char str[ASN_OIDSTRLEN]; | ^~~~~~~~ https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html > > return (asn_oid2str_r(oid, str)); > } > diff --git a/contrib/bsnmp/lib/snmpclient.c b/contrib/bsnmp/lib/snmpclient.c > index c22d8e125a14..e49105918416 100644 > --- a/contrib/bsnmp/lib/snmpclient.c > +++ b/contrib/bsnmp/lib/snmpclient.c > @@ -71,7 +71,7 @@ > #define DEBUG_PARSE 0 > > /* global context */ > -struct snmp_client snmp_client; > +__thread 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); > > -static struct sent_pdu_list sent_pdus; > +__thread static struct sent_pdu_list sent_pdus; Same here. > > /* > * 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 a19bdb2ea653..1bc3780de038 100644 > --- a/contrib/bsnmp/lib/snmpclient.h > +++ b/contrib/bsnmp/lib/snmpclient.h > @@ -114,7 +114,7 @@ struct snmp_client { > }; > > /* the global context */ > -extern struct snmp_client snmp_client; > +extern __thread struct snmp_client snmp_client; > > /* initizialies a snmp_client structure */ > void snmp_client_init(struct snmp_client *);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHgpiFzO3oOLyF1FX_51CrWHryMCtLp9njZYxybWXP2X-xyHUQ>