network stack sysctl problems.
Ian Caddy
ianc at goanna.iinet.net.au
Tue Aug 29 02:25:51 UTC 2006
Hi,
We have just moved up to 4.6.99.3 snapshot and some parts of our SNMP
were not working. I was just starting to look into it, when I saw these
posts.
The patch from PR1119 fixed the problem for our Coldfire based release
and all the aspects of SNMP are working again.
regards,
Ian Caddy
Thomas Doerfler wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Steven,
>
> I am on holidays, so I don't have access to our changes, but I filed a
> PR1119 about sysctl not working and a patch to get it working again some
> time ago. My solution was to change the attribute "__unused__" to
> "__used__" for the relevant data structures. At least for us the sysctl
> interface then worked again.
>
> Can you try ot the patch here:
>
> http://www.rtems.com/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=RTEMS&pr=1119&return_url=http%3A%2F%2Fwww.rtems.com%2Fcgi-bin%2Fgnatsweb.pl%3Fdatabase%3DRTEMS%3Bdebug%3D%3BCategory%3Dany%3BConfidential%3Dany%3BSeverity%3Dany%3BPriority%3Dany%3BResponsible%3Dany%3BState%3Dany%3Bignoreclosed%3DIgnore%2520Closed%3BClass%3Dany%3BSubmitter-Id%3Dany%3Boriginatedbyme%3DOriginated%2520by%2520You%3BSynopsis%3Dsysctl%3Bmultitext%3D%3Bcolumns%3DNotify-List%3Bcolumns%3DCategory%3Bcolumns%3DSynopsis%3Bcolumns%3DConfidential%3Bcolumns%3DSeverity%3Bcolumns%3DPriority%3Bcolumns%3DResponsible%3Bcolumns%3DState%3Bcolumns%3DClass%3Bcolumns%3DSubmitter-Id%3Bcolumns%3DArrival-Date%3Bcolumns%3DClosed-Date%3Bcolumns%3DLast-Modified%3Bcolumns%3DOriginator%3Bcolumns%3DRelease%3Bsortby%3DNumber%3Bdisplaydate%3DCurrent%2520Date%3Bcmd%3Dsubmit%2520query
>
> wkr,
> Thomas.
>
> Steven Johnson schrieb:
>> Please see attached patch against rtems 4.6.99.3.
>>
>> It appeared to us that when building rtems, the network sysctl's were
>> being excluded by either the compiler or linker such that after the
>> program was being built they were invisible. (This is with GCC 4.1, and
>> latest binutils, etc)
>>
>> We had to remove the static declarations in __MAKE_SET and SYSCTL_OID,
>> to force them to be public, so the compiler/linker wouldn't make
>> incorrect assumptions about them being referenced or not. We noticed
>> that in kern_sysctl.c there is an rtems change of
>>
>> #if defined(__rtems__)
>> void
>> #else
>> static void
>> #endif
>> sysctl_register_all(void *arg)
>>
>> So we made our patch reflect this.
>>
>> The only other change we made, which isn't reflected by the diff,
>> because it is part of our code and not the rtems code case was:
>>
>> *(set_sysctl_*);
>> line in the link script changed to be
>> KEEP(*(set_sysctl_*))
>>
>> This may effect the standard BSP's, but I don't use or build those, so
>> it wasn't possible for me to test that it was necessary for the standard
>> BSP's.
>>
>> Also, I asked this before, but I don't remember getting a reply, is it
>> possible to get "sysctlbyname" added as a standard network stack
>> function in rtems for 4.7? The wiki mentions the function. Its useful
>> for editing these types of sysctl values and isn't much code. I know
>> its not currently an impediment to anyone because they can just include
>> the routine in their own code like I did, but it does seem like a useful
>> thin to have available as standard, without having to go to the wiki,
>> and add the code to your own project. Just asking, it isn't an
>> impediment to me either way.
>>
>> Steven J
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> diff -Naur rtems-4.6.99.3/cpukit/libnetworking/sys/linker_set.h rtems-4.6.99.3-sysctl-non-static-fix/cpukit/libnetworking/sys/linker_set.h
>> --- rtems-4.6.99.3/cpukit/libnetworking/sys/linker_set.h 2003-03-19 06:42:51.000000000 +1000
>> +++ rtems-4.6.99.3-sysctl-non-static-fix/cpukit/libnetworking/sys/linker_set.h 2006-07-24 16:08:29.621286581 +1000
>> @@ -40,9 +40,15 @@
>> * Private macros, not to be used outside this header file.
>> */
>> #ifdef __GNUC__
>> +#if defined(__rtems__)
>> +#define __MAKE_SET(set, sym) \
>> + void const * const __set_##set##_sym_##sym \
>> + __attribute((section("set_" #set))) __unused = &sym
>> +#else
>> #define __MAKE_SET(set, sym) \
>> static void const * const __set_##set##_sym_##sym \
>> __attribute((section("set_" #set))) __unused = &sym
>> +#endif
>> #else /* !__GNUC__ */
>> #ifndef lint
>> #error "This file needs to be compiled by GCC or lint"
>> diff -Naur rtems-4.6.99.3/cpukit/libnetworking/sys/sysctl.h rtems-4.6.99.3-sysctl-non-static-fix/cpukit/libnetworking/sys/sysctl.h
>> --- rtems-4.6.99.3/cpukit/libnetworking/sys/sysctl.h 2005-02-22 02:24:43.000000000 +1000
>> +++ rtems-4.6.99.3-sysctl-non-static-fix/cpukit/libnetworking/sys/sysctl.h 2006-07-24 16:09:53.351392686 +1000
>> @@ -200,11 +200,19 @@
>> sysctl_##parent##_##name##_children
>>
>> /* This constructs a "raw" MIB oid. */
>> +#if defined(__rtems__)
>> +#define SYSCTL_OID(parent, nbr, name, kind, a1, a2, handler, fmt, descr) \
>> + struct sysctl_oid sysctl__##parent##_##name = { \
>> + &sysctl_##parent##_children, { 0 }, \
>> + nbr, kind, a1, a2, #name, handler, fmt, 0, descr }; \
>> + DATA_SET(sysctl_set, sysctl__##parent##_##name)
>> +#else
>> #define SYSCTL_OID(parent, nbr, name, kind, a1, a2, handler, fmt, descr) \
>> static struct sysctl_oid sysctl__##parent##_##name = { \
>> &sysctl_##parent##_children, { 0 }, \
>> nbr, kind, a1, a2, #name, handler, fmt, 0, descr }; \
>> DATA_SET(sysctl_set, sysctl__##parent##_##name)
>> +#endif
>>
>> #define SYSCTL_ADD_OID(ctx, parent, nbr, name, kind, a1, a2, handler, fmt, descr) \
>> sysctl_add_oid(ctx, parent, nbr, name, kind, a1, a2, handler, fmt, descr)
>
>
> - --
> - --------------------------------------------
> IMD Ingenieurbuero fuer Microcomputertechnik
> Thomas Doerfler Herbststrasse 8
> D-82178 Puchheim Germany
> email: Thomas.Doerfler at imd-systems.de
> PGP public key available at:
> http://www.imd-systems.de/pgpkey_en.html
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.3 (MingW32)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFE7sRgwHyg4bDtfjQRAnoKAJwIKyhb06zC/0NWEc6zVqyxmQR/WwCgjDSh
> SUaXBPSsUNXp7NU+udb7oOg=
> =/jHB
> -----END PGP SIGNATURE-----
>
--
Ian Caddy
Goanna Technologies Pty Ltd
+61 8 9221 1860
More information about the users
mailing list