Announcement: Legacy libnetworking will be removed from RTEMS and will be placed in a separate repository

Joel Sherrill joel at rtems.org
Wed Mar 3 14:02:52 UTC 2021


On Wed, Mar 3, 2021 at 3:39 AM junkes <junkes at fhi-berlin.mpg.de> wrote:

> Dear Vijay,
> thank you very much for your effort to bring some order here ;-)
> I am currently trying to get EPICS to work on RTEMS6 as well.
>
> I already failed with the legacy stack because configuration variables like
> RTEMS_HAS_NETWORK are not set with the waf-builder.
> That's why I quite happily jumped on your legacy-net-extra
> (For the beatnik CPU on which I can test directly on the hardware).
>
> Unfortunately, it doesn't quite work yet:
>
> git clone https://github.com/RTEMS/rtems-source-builder.git rsb
>
> cd rsb
> cd rtems
> ../source-builder/sb-set-builder
> --prefix=/home/junkes/MVME6100_testing/rtems/6 6/rtems-powerpc
> cd ../..
>
> #RTEMS development
> export RTEMS_VERSION=6
> export RTEMS_ARCH=powerpc-rtems${RTEMS_VERSION}
> export RTEMS_ROOT=/home/junkes/MVME6100_testing/rtems/${RTEMS_VERSION}
> export PATH=${RTEMS_ROOT}/bin:${PATH}
>
> # building kernel
> #git clone git://git.rtems.org/rtems.git kernel
> git clone git://git.rtems.org/vijay/rtems.git kernel
> cd kernel
>
> # build and install bsp
> # 1. Test with waf
> #-e "s|RTEMS_NETWORKING = False|RTEMS_NETWORKING = True|" \
> ./waf bsp_defaults --rtems-bsps=powerpc/beatnik > config.ini
> sed -i \
> -e "s|RTEMS_POSIX_API = False|RTEMS_POSIX_API = True|" \
> -e "s|BUILD_TESTS = False|BUILD_TESTS = True|" \
> config.ini
> ./waf configure --prefix=/home/junkes/MVME6100_testing/rtems/6
> ./waf
> ./waf install
>
> cd ..
>
> # building extra legacy net
> git clone git://git.rtems.org/vijay/rtems-net-legacy.git legacyNet
> cd legacyNet
> git submodule init
> git submodule update
>
> ./waf configure --prefix=/home/junkes/MVME6100_testing/rtems/6
>
> Setting top to : /home/junkes/MVME6100_testing/legacyNet
> Setting out to : /home/junkes/MVME6100_testing/legacyNet/build
> RTEMS Version : 6
> Architectures : powerpc-rtems6
> Board Support Package (BSP) : powerpc-rtems6-beatnik
> Show commands : no
> Long commands : no
> Checking for program 'powerpc-rtems6-gcc' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-gcc
> Checking for program 'powerpc-rtems6-g++' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-g++
> Checking for program 'powerpc-rtems6-gcc' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-gcc
> Checking for program 'powerpc-rtems6-ld' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ld
> Checking for program 'powerpc-rtems6-ar' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ar
> Checking for program 'powerpc-rtems6-nm' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-nm
> Checking for program 'powerpc-rtems6-objdump' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-objdump
> Checking for program 'powerpc-rtems6-objcopy' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-objcopy
> Checking for program 'powerpc-rtems6-readelf' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-readelf
> Checking for program 'powerpc-rtems6-strip' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-strip
> Checking for program 'powerpc-rtems6-ranlib' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ranlib
> Checking for program 'rtems-ld' :
> /home/junkes/MVME6100_testing/rtems/6/bin/rtems-ld
> Checking for program 'rtems-tld' :
> /home/junkes/MVME6100_testing/rtems/6/bin/rtems-tld
> Checking for program 'rtems-syms' :
> /home/junkes/MVME6100_testing/rtems/6/bin/rtems-syms
> Checking for program 'rtems-bin2c' :
> /home/junkes/MVME6100_testing/rtems/6/bin/rtems-bin2c
> Checking for program 'tar' : /usr/bin/tar
> Checking for program 'gcc, cc' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-gcc
> Checking for program 'ar' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ar
> Checking for program 'g++, c++' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-g++
> Checking for program 'ar' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ar
> Checking for program 'gas, gcc' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-gcc
> Checking for program 'ar' :
> /home/junkes/MVME6100_testing/rtems/6/bin/powerpc-rtems6-ar
> Checking for c flags '-MMD' : yes
> Checking for cxx flags '-MMD' : yes
> Compiler version (powerpc-rtems6-gcc) : 10.2.1 20210205 (RTEMS 6, RSB
> 61dcadee0825867ebe51f9f367430ef75b8fe9c0, Newlib d4a756f)
> Checking for a valid RTEMS BSP installation : yes
> Checking for RTEMS_DEBUG : no
> Checking for RTEMS_MULTIPROCESSING : no
> Checking for RTEMS_NEWLIB : yes
> Checking for RTEMS_POSIX_API : yes
> Checking for RTEMS_SMP : no
> Checking for RTEMS_NETWORKING : no
> 'configure' finished successfully (0.840s)
>
> ./waf build --rtems-archs=powerpc --rtems-bsps=beatnik
>
> Waf: Entering directory
> `/home/junkes/MVME6100_testing/legacyNet/build/powerpc-rtems6-beatnik'
> [ 1/229] Compiling bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c
> [ 2/229] Compiling bsps/powerpc/beatnik/net/porting/if_xxx.modini.c
> [ 3/229] Compiling librpc/src/rpc/pmap_getport.c
> [ 4/229] Compiling netinet/ip_icmp.c
> [ 5/229] Compiling libc/getservbyname.c
> [ 6/229] Compiling libc/base64.c
> [ 7/229] Compiling libc/ns_ttl.c
> [ 8/229] Compiling libc/inet_makeaddr.c
> [ 9/229] Compiling librpc/src/rpc/auth_none.c
> [ 10/229] Compiling librpc/src/rpc/get_myaddress.c
> [ 11/229] Compiling netinet/tcp_debug.c
> [ 12/229] Compiling librpc/src/rpc/netnamer.c
> [ 13/229] Compiling librpc/src/rpc/svc_auth.c
> [ 14/229] Compiling librpc/src/rpc/rtems_portmapper.c
> [ 15/229] Compiling netinet/tcp_subr.c
> [ 16/229] Compiling librpc/src/rpc/svc_simple.c
> ../../libc/getservbyname.c: In function 'getservbyname_r':
> ../../libc/getservbyname.c:54:4: warning: #warning "implement a proper
> getservbyport_r" [-Wcpp]
> 54 | #warning "implement a proper getservbyport_r"
> | ^~~~~~~
>

This is expected.   getservbyport_r() just calls  getservbyport() in the
legacy
implementation so is not reentrant.

> [ 17/229] Compiling rtems/rtems_bootp.c
> [ 18/229] Compiling net/if.c
> ../../bsps/powerpc/beatnik/net/porting/if_xxx.modini.c:2:10: fatal error:
> porting/rtemscompat.h: No such file or directory
> 2 | #include <porting/rtemscompat.h>
> | ^~~~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
>

This looks like an include directory needs to be added to the build.
The code in question is part of the pattern for an adapter kit Till
tended to include to port newer BSD drivers to the legacy stack.

At this point, the "newer BSD" is quite old and the BSD version in
the legacy stack is ancient. Lesson is using old, new, future, next
generation, etc with technology is inevitable to be wrong eventually.

In file included from
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:164:2: error: #error
> rtemscompat_defs.h must define either NET_CHIP_LE or NET_CHIP_BE
> 164 | #error rtemscompat_defs.h must define either NET_CHIP_LE or
> NET_CHIP_BE
>

Hopefully this is fixed by adding the include directory or something
similar.

 Vijay should speak up on his desired solution.

Heinz, how did the code find this when it was built in the tree? Did it
have
a -I for this source directory?

--joel

> | ^~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h: In function
> 'bus_space_do_read_2':
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:267:9: warning:
> implicit declaration of function '_inp_word'
> [-Wimplicit-function-declaration]
> 267 | return _inp_word((volatile unsigned short*)((handle)+(reg)));
> | ^~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h: In function
> 'bus_space_do_read_4':
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:272:9: warning:
> implicit declaration of function '_inp_long'
> [-Wimplicit-function-declaration]
> 272 | return _inp_long((volatile unsigned *)((handle)+(reg)));
> | ^~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h: In function
> 'bus_space_do_write_multi_2':
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:286:31: warning:
> implicit declaration of function '_out_word'
> [-Wimplicit-function-declaration]
> 286 | int i; for (i=0; i<cnt; i++) _out_word( (handle) + (reg), (addr)[i]);
> | ^~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h: In function
> 'bus_space_do_write_multi_4':
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:291:31: warning:
> implicit declaration of function '_out_long'
> [-Wimplicit-function-declaration]
> 291 | int i; for (i=0; i<cnt; i++) _out_long( (handle) + (reg), (addr)[i]);
> | ^~~~~~~~~
> In file included from
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:40:
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h: At top level:
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h:16:19: error: field
> 'd_softc' has incomplete type
> 16 | struct NET_SOFTC d_softc; /* MUST BE FIRST FIELD */
> | ^~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h:28:38: error:
> 'NETDRIVER_SLOTS' undeclared here (not in a function)
> 28 | #define NETDEV_DECL netdev_t THEDEVS[NETDRIVER_SLOTS]
> | ^~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h:30:8: note: in
> expansion of macro 'NETDEV_DECL'
> 30 | extern NETDEV_DECL;
> | ^~~~~~~~~~~
> In file included from
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h: In function
> 'net_dev_get':
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat1.h:50:28: error:
> expected ')' before 'NETDRIVER'
> 50 | device_printf(dev, "Bad "NETDRIVER" unit number.\n");
> | ^~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c: In function
> 'rtems_NETDRIVER_PREFIX_attach':
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:131:21: error:
> 'NETDRIVER' undeclared (first use in this function)
> 131 | device_printf(dev,NETDRIVER" unit not configured; use
> 'rtems_"NETDRIVER"_setup()'\n");
> | ^~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:131:21: note: each
> undeclared identifier is reported only once for each function it appears in
> 131 | device_printf(dev,NETDRIVER" unit not configured; use
> 'rtems_"NETDRIVER"_setup()'\n");
> | ^~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:131:30: error:
> expected ')' before string constant
> 131 | device_printf(dev,NETDRIVER" unit not configured; use
> 'rtems_"NETDRIVER"_setup()'\n");
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:140:11: error:
> invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
> 140 | ifp = &sc->arpcom.ac_if;
> | ^~
> In file included from
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:151:31: error:
> expected ')' before string constant
> 151 | device_printf(dev,NETDRIVER" Driver already attached.\n");
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:156:13: error:
> invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
> 156 | memcpy(sc->arpcom.ac_enaddr, config->hardware_address,
> ETHER_ADDR_LEN);
> | ^~
> In file included from
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:163:31: error:
> expected ')' before string constant
> 163 | device_printf(dev,NETDRIVER"_attach() failed\n");
> | ^~~~~~~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:168:31: error:
> expected ')' before string constant
> 168 | device_printf(dev,NETDRIVER" Driver not attached.\n");
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:173:32: error:
> expected ')' before string constant
> 173 | device_printf(dev,NETDRIVER"_detach() failed\n");
> | ^~~~~~~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:177:31: error:
> expected ')' before string constant
> 177 | device_printf(dev,NETDRIVER"_detach() not implemented\n");
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:258:53: note: in
> definition of macro 'device_printf'
> 258 | #define device_printf(device,format,args...) printk(format,## args)
> | ^~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:183:10: error:
> invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
> 183 | if ( !sc->tid )
> | ^~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:184:5: error:
> invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
> 184 | sc->tid = rtems_bsdnet_newproc(NETDRIVER"d", 4096, net_daemon, sc);
> | ^~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:184:43: error:
> expected ')' before string constant
> 184 | sc->tid = rtems_bsdnet_newproc(NETDRIVER"d", 4096, net_daemon, sc);
> | ^~~
> | )
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:184:13: error: too
> few arguments to function 'rtems_bsdnet_newproc'
> 184 | sc->tid = rtems_bsdnet_newproc(NETDRIVER"d", 4096, net_daemon, sc);
> | ^~~~~~~~~~~~~~~~~~~~
> In file included from
> ../../bsps/powerpc/beatnik/net/porting/rtemscompat.h:42,
> from ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:1:
> ../../rtems/rtems_bsdnet_internal.h:169:10: note: declared here
> 169 | rtems_id rtems_bsdnet_newproc (
> | ^~~~~~~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:194:23: error:
> invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
> 194 | irq_data.name = sc->irq_no;
> | ^~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:203:28: error:
> expected ')' before string constant
> 203 | fprintf(stderr,NETDRIVER": unable to install ISR\n");
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> | )
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:207:10: error:
> invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
> 207 | if ( sc->irq_no ) {
> | ^~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:215:23: error:
> invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
> 215 | irq_data.name = sc->irq_no;
> | ^~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:222:28: error:
> expected ')' before string constant
> 222 | fprintf(stderr,NETDRIVER": unable to uninstall ISR\n");
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> | )
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c: In function
> 'the_net_isr':
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:242:2: warning:
> implicit declaration of function 'NET_DISABLE_IRQS'
> [-Wimplicit-function-declaration]
> 242 | NET_DISABLE_IRQS(sc);
> | ^~~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:244:29: error:
> invalid use of undefined type 'struct NETDRIVER_PREFIX_softc'
> 244 | rtems_bsdnet_event_send( sc->tid, EX_EVENT );
> | ^~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c: In function
> 'net_daemon':
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:262:3: warning:
> implicit declaration of function 'NET_ENABLE_IRQS'
> [-Wimplicit-function-declaration]
> 262 | NET_ENABLE_IRQS(sc);
> | ^~~~~~~~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c: At top level:
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:286:2: error:
> 'NETDRIVER' undeclared here (not in a function)
> 286 | NETDRIVER"1",
> | ^~~~~~~~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:286:11: error:
> expected '}' before string constant
> 286 | NETDRIVER"1",
> | ^~~
> ../../bsps/powerpc/beatnik/net/porting/if_xxx_rtems.c:285:74: note: to
> match this '{'
> 285 | struct rtems_bsdnet_ifconfig
> NET_EMBEMB(NETDRIVER_PREFIX,_dbg,_config) = {
> | ^
>
> Waf: Leaving directory
> `/home/junkes/MVME6100_testing/legacyNet/build/powerpc-rtems6-beatnik'
> Build failed
> -> task in 'bsp_objs' failed with exit status 1 (run with -v to display
> more information)
> -> task in 'bsp_objs' failed with exit status 1 (run with -v to display
> more information)
> Viele Grüße und Danke,
> Heinz
>
>
> On 1. Mar 2021, at 22:48, Vijay Kumar Banerjee <vijay at rtems.org> wrote:
>
> Hello all,
>
> In RTEMS 6, there will be no cpukit/libnetworking in the RTEMS repository
> and it will be moved to its own separate repository. There are ongoing
> efforts in this direction and it is very close to completion.
> What's remaining, is to collect feedback from the users of the
> libnetworking stack.
>
> I request you to test the new standalone legacy networking repository with
> your regular targets and let me know if I have broken something in RTEMS or
> in the new repository. The legacy repo, in its current state, has been
> tested with pc-qemu and it can successfully run the legacy networking tests.
>
> The following are the links to the repositories with the latest version of
> changes:
> RTEMS: https://git.rtems.org/vijay/rtems.git/log/?h=devel-no-libnet
> Legacy Network:
> https://git.rtems.org/vijay/rtems-net-legacy.git/log/?h=main
>
> The following BSP family in RTEMS has been used with the old legacy
> networking stack:
> Zynq, PC, Motorola Shared, Beatnik, mvme3100, mvme5500, gen68360, uc5282,
> mvme 162/167
>
> If anyone is maintaining/working with one (or more) of these BSPs, please
> let me know if you're able to test the separate legacy-net repository and
> if you have any feedback. If you're planning to test it, please add
> your comments here so that we know someone is going to do it and wait for
> your feedback. The changes will not be pushed right away and we'll wait for
> some feedback.
>
> What's next?
>
> The legacy networking repository will stay at git.rtems.org for any
> projects that are still using it. It is recommended that the new projects
> use the libbsd networking stack which is more full-featured.
>
> Thank you for your patient reading. Any suggestion is welcome and I'm more
> than happy to work with you to get it more thoroughly tested before getting
> it merged.
>
> Best regards,
> Vijay
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20210303/223077c7/attachment-0001.html>


More information about the devel mailing list