Date: Tue, 29 Dec 2020 19:38:47 +0200 From: Konstantin Belousov <kostikbel@gmail.com> To: Jessica Clarke <jrtc27@freebsd.org> Cc: Edward Tomasz Napierala <trasz@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@freebsd.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@freebsd.org> Subject: Re: git: 89e3d5671ba1 - main - bsnmpclient(3): make it thread-safe Message-ID: <X%2Btpp0Q%2BfbFGHjs0@kib.kiev.ua> In-Reply-To: <DBC0C62C-1280-4ADE-BF03-18D781330E5A@freebsd.org> References: <202012291500.0BTF0vGw034594@gitrepo.freebsd.org> <DBC0C62C-1280-4ADE-BF03-18D781330E5A@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Dec 29, 2020 at 03:11:55PM +0000, Jessica Clarke wrote:
> On 29 Dec 2020, at 15:00, Edward Tomasz Napierala <trasz@FreeBSD.org> wrote:
> > 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;
>
> That comment is no longer true.
>
> > /* 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;
> >
> > /*
> > * 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;
>
> Ditto.
>
> Is there really a documented requirement for everything to be called
> from the same thread? I can see consumers of the library that already
> use proper locking breaking because of this.
So this variable is supposed to be used by consumers ?
The change requires the library version bump, at least.
I suppose libsnmpclient does not use symbol versioning ?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?X%2Btpp0Q%2BfbFGHjs0>
