From 14f44a3474b5177a73aede9d3ab142ab003f5796 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 17 Oct 2007 20:55:06 +0000 Subject: 2007-10-17 Joel Sherrill * Makefile, Makefile.shared, rtems_init.c, irq_test/interrupt_pkg.adb, irq_test/interrupt_pkg.ads, irq_test/irqforce.c, irq_test/irqtest.adb, rootfs/etc/hosts: Adding new tests as improvements are made to the RTEMS port of the GNAT run-time. * empty/Makefile, empty/README, empty/empty.adb, hello_via_task/.cvsignore, hello_via_task/Makefile, hello_via_task/hello.adb, irq_test/.cvsignore, irq_test/Makefile, irq_test/README, irq_test_c/.cvsignore, irq_test_c/Makefile, irq_test_c/README, irq_test_c/init.c, irq_test_c/irqforce.c: New files. --- ChangeLog | 12 ++++ Makefile | 7 +- Makefile.shared | 18 +++--- empty/Makefile | 25 ++++++++ empty/README | 6 ++ empty/empty.adb | 14 ++++ hello_via_task/.cvsignore | 5 ++ hello_via_task/Makefile | 25 ++++++++ hello_via_task/hello.adb | 27 ++++++++ irq_test/.cvsignore | 8 +++ irq_test/Makefile | 29 +++++++++ irq_test/README | 26 ++++++++ irq_test/interrupt_pkg.adb | 37 +++++++++-- irq_test/interrupt_pkg.ads | 8 +++ irq_test/irqforce.c | 10 ++- irq_test/irqtest.adb | 10 ++- irq_test_c/.cvsignore | 3 + irq_test_c/Makefile | 27 ++++++++ irq_test_c/README | 26 ++++++++ irq_test_c/init.c | 156 +++++++++++++++++++++++++++++++++++++++++++++ irq_test_c/irqforce.c | 15 +++++ rootfs/etc/hosts | 2 +- rtems_init.c | 1 + 23 files changed, 477 insertions(+), 20 deletions(-) create mode 100644 empty/Makefile create mode 100644 empty/README create mode 100644 empty/empty.adb create mode 100644 hello_via_task/.cvsignore create mode 100644 hello_via_task/Makefile create mode 100644 hello_via_task/hello.adb create mode 100644 irq_test/.cvsignore create mode 100644 irq_test/Makefile create mode 100644 irq_test/README create mode 100644 irq_test_c/.cvsignore create mode 100644 irq_test_c/Makefile create mode 100644 irq_test_c/README create mode 100644 irq_test_c/init.c create mode 100644 irq_test_c/irqforce.c diff --git a/ChangeLog b/ChangeLog index 0fd40bd..0d6835c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2007-10-17 Joel Sherrill + + * Makefile, Makefile.shared, rtems_init.c, irq_test/interrupt_pkg.adb, + irq_test/interrupt_pkg.ads, irq_test/irqforce.c, + irq_test/irqtest.adb, rootfs/etc/hosts: Adding new tests as + improvements are made to the RTEMS port of the GNAT run-time. + * empty/Makefile, empty/README, empty/empty.adb, + hello_via_task/.cvsignore, hello_via_task/Makefile, + hello_via_task/hello.adb, irq_test/.cvsignore, irq_test/Makefile, + irq_test/README, irq_test_c/.cvsignore, irq_test_c/Makefile, + irq_test_c/README, irq_test_c/init.c, irq_test_c/irqforce.c: New files. + 2007-09-28 Joel Sherrill * Makefile.shared: Change bin2c to rtems-bin2c. diff --git a/Makefile b/Makefile index 7bfb25c..7183a93 100644 --- a/Makefile +++ b/Makefile @@ -6,9 +6,12 @@ include $(RTEMS_MAKEFILE_PATH)/Makefile.inc include $(RTEMS_CUSTOM) include $(RTEMS_ROOT)/make/directory.cfg -SUBDIRS=hello_world_ada delay_until stack_check +SUBDIRS=empty hello_world_ada hello_via_task delay_until stack_check + +ifeq ($(RTEMS_BSP),erc32) + SUBDIRS += irq_test irq_test_c +endif ifeq ($(HAS_NETWORKING),yes) SUBDIRS += dumpwebpage pingpong gen-soconn endif - diff --git a/Makefile.shared b/Makefile.shared index 049f7b2..839b820 100644 --- a/Makefile.shared +++ b/Makefile.shared @@ -3,7 +3,7 @@ # # Tool helpers -CARGS =-B${RTEMS_MAKEFILE_PATH}/lib/ -specs bsp_specs -qrtems $(CPU_CFLAGS) +CARGS =-B${RTEMS_MAKEFILE_PATH}/lib/ -specs=bsp_specs -qrtems $(CPU_CFLAGS) # GEN5200 Specific Information ifeq ($(RTEMS_BSP_FAMILY),gen5200) @@ -27,13 +27,14 @@ ifeq ($(NEED_ROOTFS_FOR_HOST_INFO),yes) CFLAGS += -DENABLE_UNTAR_ROOT_FILESYSTEM -I. endif -all: $(PROGRAM) +all: $(PROGRAM).exe -$(PROGRAM): rtems_init.o $(FILESYSTEM_OBJS) $(PROGRAM).adb +$(PROGRAM).exe: rtems_init.o $(FILESYSTEM_OBJS) $(PROGRAM).adb $(EXTRA_OBJS) $(AS:as=gnatmake) -v $(EXTRA_GNATFLAGS) \ - -O -gnata -gnatE -gnato $(@) -g -I../src \ + -O -gnata -gnatE -gnato -g $(PROGRAM) -o $(@) \ -bargs -Mgnat_main \ - -largs $(CARGS) $(LINKARGS) rtems_init.o $(FILESYSTEM_OBJS) + -largs $(CARGS) $(LINKARGS) rtems_init.o $(FILESYSTEM_OBJS) \ + $(EXTRA_OBJS) $(SIZE) $(@) ifeq ($(RTEMS_BSP_FAMILY),pc386) mv $(@) $(@).obj @@ -45,13 +46,10 @@ ifeq ($(RTEMS_BSP_FAMILY),pc386) $(OBJCOPY) -O binary $(@).obj $(@).bin $(RTEMS_MAKEFILE_PATH)/build-tools/bin2boot -v $(@).bt $(HEADERADDR) \ $(START16FILE) $(START16ADDR) 0 $(@).bin $(RELOCADDR) 0 -else + rm -f $(@).obj $(@).bin endif -joel: - echo $(NEED_ROOTFS_FOR_HOST_INFO) - -rtems_init.o: ../rtems_init.c $(FILESYSTEM_SRCS) +rtems_init.o: ../rtems_init.c ../networkconfig.h $(FILESYSTEM_SRCS) $(CC) $(CFLAGS) $(CPU_CFLAGS) -c $< ifeq ($(NEED_ROOTFS_FOR_HOST_INFO),yes) diff --git a/empty/Makefile b/empty/Makefile new file mode 100644 index 0000000..be160ba --- /dev/null +++ b/empty/Makefile @@ -0,0 +1,25 @@ +# +# Makefile for Ada Dump URL example +# +# See README.Makefiles in the main ada-examples directory. +# + +PROGRAM=empty + +include $(RTEMS_MAKEFILE_PATH)/Makefile.inc +include $(RTEMS_CUSTOM) +include $(PROJECT_ROOT)/make/leaf.cfg + +# stack size for the first Ada thread +CFLAGS +=-DGNAT_MAIN_STACKSPACE=100 + +# initialize the network stack -- assumes existence of networkconfig.h +# CFLAGS +=-DMAIN_USE_NETWORKING=1 + +# Should we prompt for command line arguments? +# DEFINES +=-DMAIN_USE_REQUIRES_COMMAND_LINE + +# If you want to hard-code the command line, define this to a string +# DEFINES += -DMAIN_COMMAND_LINE="ARGS" + +include ../Makefile.shared diff --git a/empty/README b/empty/README new file mode 100644 index 0000000..89e03e4 --- /dev/null +++ b/empty/README @@ -0,0 +1,6 @@ +# +# $Id$ +# + +This directory contains a Null Ada program. Its primary purpose +is to illustrate how much the GNU Ada run-time pulls in. diff --git a/empty/empty.adb b/empty/empty.adb new file mode 100644 index 0000000..b811fe6 --- /dev/null +++ b/empty/empty.adb @@ -0,0 +1,14 @@ +-- +-- +-- The license and distribution terms for this file may be +-- found in the file LICENSE in this distribution or at +-- http://www.rtems.com/license/LICENSE. +-- +-- Null Main Program +-- + +procedure Empty is +begin + Null; +end Empty; + diff --git a/hello_via_task/.cvsignore b/hello_via_task/.cvsignore new file mode 100644 index 0000000..cf1b678 --- /dev/null +++ b/hello_via_task/.cvsignore @@ -0,0 +1,5 @@ +b~hello.adb +b~hello.ads +b~hello.ali +hello +hello.ali diff --git a/hello_via_task/Makefile b/hello_via_task/Makefile new file mode 100644 index 0000000..8602dcb --- /dev/null +++ b/hello_via_task/Makefile @@ -0,0 +1,25 @@ +# +# Makefile for Ada Dump URL example +# +# See README.Makefiles in the main ada-examples directory. +# + +PROGRAM=hello + +include $(RTEMS_MAKEFILE_PATH)/Makefile.inc +include $(RTEMS_CUSTOM) +include $(PROJECT_ROOT)/make/leaf.cfg + +# stack size for the first Ada thread +CFLAGS +=-DGNAT_MAIN_STACKSPACE=100 + +# initialize the network stack -- assumes existence of networkconfig.h +# CFLAGS +=-DMAIN_USE_NETWORKING=1 + +# Should we prompt for command line arguments? +# DEFINES +=-DMAIN_USE_REQUIRES_COMMAND_LINE + +# If you want to hard-code the command line, define this to a string +# DEFINES += -DMAIN_COMMAND_LINE="ARGS" + +include ../Makefile.shared diff --git a/hello_via_task/hello.adb b/hello_via_task/hello.adb new file mode 100644 index 0000000..3d22eaf --- /dev/null +++ b/hello_via_task/hello.adb @@ -0,0 +1,27 @@ +-- +-- Hello World Using a Task +-- + +with Text_IO; use Text_IO; + +procedure Hello is + + task Hello_Task; + + task body Hello_Task is + begin + Put_Line ("GNAT/RTEMS Hello World Test"); + New_Line; + Put_Line ("Welcome to the World of Lady Ada"); + + New_Line; + Put_Line ("Initiating 2.5 second delay"); + delay 2.5; + Put_Line ("Delay Complete"); + + Put_Line ("Test Complete"); + end Hello_Task; + +begin + NULL; +end Hello; diff --git a/irq_test/.cvsignore b/irq_test/.cvsignore new file mode 100644 index 0000000..494c67d --- /dev/null +++ b/irq_test/.cvsignore @@ -0,0 +1,8 @@ +*.swp +.gdbinit +b~irqtest.adb +b~irqtest.ads +b~irqtest.ali +interrupt_pkg.ali +irqtest +irqtest.ali diff --git a/irq_test/Makefile b/irq_test/Makefile new file mode 100644 index 0000000..697d6c3 --- /dev/null +++ b/irq_test/Makefile @@ -0,0 +1,29 @@ +# +# Makefile for Ada Dump URL example +# +# See README.Makefiles in the main ada-examples directory. +# + +PROGRAM=irqtest + +include $(RTEMS_MAKEFILE_PATH)/Makefile.inc +include $(RTEMS_CUSTOM) +include $(PROJECT_ROOT)/make/leaf.cfg + +# stack size for the first Ada thread +CFLAGS +=-DGNAT_MAIN_STACKSPACE=100 + +# initialize the network stack -- assumes existence of networkconfig.h +# CFLAGS +=-DMAIN_USE_NETWORKING=1 + +# Should we prompt for command line arguments? +# DEFINES +=-DMAIN_USE_REQUIRES_COMMAND_LINE + +# If you want to hard-code the command line, define this to a string +# DEFINES += -DMAIN_COMMAND_LINE="ARGS" + +EXTRA_OBJS = irqforce.o + +include ../Makefile.shared + +irqforce.o: irqforce.c diff --git a/irq_test/README b/irq_test/README new file mode 100644 index 0000000..9a0fac6 --- /dev/null +++ b/irq_test/README @@ -0,0 +1,26 @@ +# +# $Id$ +# + +WARNING!!! Code is ERC32 specific. + +The directories irq_test and irq_test_c are related and provided +for performance comparisons. + +This directory contains a simple benchmark in Ada of a forced interrupt +and provides a baseline comparison point for the performance +of the GNAT implementation of Ada interrupt tasks on RTEMS. + +On 17 October 2007, this program run on TSIM reported that +this program took 315 microseconds on a 14 Mhz SPARC/ERC32 to complete +the following sequence: + + + itest: Start Timer + + itest: Force IRQ + + hidden Ada ISR Handler: Release a simple binary semaphore + + Handler Task: Wake up from an Ada entry + + Handler Task: Stop Timer + +In comparison, the irq_test_c program implementing the same +sequence but using C interrupt tasks took only 158 microseconds +on the same target. diff --git a/irq_test/interrupt_pkg.adb b/irq_test/interrupt_pkg.adb index 2097ba8..729b284 100644 --- a/irq_test/interrupt_pkg.adb +++ b/irq_test/interrupt_pkg.adb @@ -12,11 +12,19 @@ -- Written by Tullio Vardanega and Jiri Gaisler -- European Space Agency, 1999. -- +-- The license and distribution terms for this file may be +-- found in the file LICENSE in this distribution or at +-- http://www.rtems.com/license/LICENSE. +-- +-- $Id$ +-- + with Ada.Interrupts; with System; with Ada.Text_IO; +with Ada.Real_Time; use Ada.Real_Time; package body Interrupt_pkg is @@ -25,6 +33,9 @@ package body Interrupt_pkg is Protected_Priority : constant System.Interrupt_Priority := System.Interrupt_Priority'First; + Start_Time : Ada.Real_Time.Time; + Stop_Time : Ada.Real_Time.Time; + -- Protected object, including interrupt handler (Signal) and conditional entry. protected Handler is @@ -41,25 +52,32 @@ package body Interrupt_pkg is begin BARRIER := LOW; end Signal; + entry Wait when (BARRIER = LOW) is + Took : Time_Span; begin + Stop_Time := Ada.Real_Time.Clock; BARRIER := HIGH; + + Took := Stop_Time - Start_Time; + + Ada.Text_IO.Put_line ( "Interrupt took: " & + Duration'Image(To_Duration(Took))); end Wait; end Handler; -- Sporadic task, waiting on entry (Wait) for the interrupt. task sporadic is - pragma Priority (8); + pragma Priority (100); end sporadic; task body sporadic is - Message : constant STRING := - "sporadic activated"; + Message : constant STRING := "sporadic activated"; begin loop Handler.Wait; - Ada.Text_IO.Put_line (Message); + end loop; end sporadic; @@ -69,7 +87,15 @@ package body Interrupt_pkg is procedure irqforce(irq : integer); pragma Import (C, irqforce, "irqforce"); begin + + Start_Time := Ada.Real_Time.Clock; + Stop_Time := Ada.Real_Time.Clock; + + Ada.Text_IO.Put_line ( "Timer Overhead: " & + Duration'Image(To_Duration(Stop_Time - Start_Time))); + for i in 1..10 loop + Start_Time := Ada.Real_Time.Clock; irqforce(1); delay(0.05); end loop; @@ -80,7 +106,8 @@ package body Interrupt_pkg is begin - itest; + -- itest; + NULL; end Interrupt_pkg; diff --git a/irq_test/interrupt_pkg.ads b/irq_test/interrupt_pkg.ads index 6bc597e..2d24f3b 100644 --- a/irq_test/interrupt_pkg.ads +++ b/irq_test/interrupt_pkg.ads @@ -1,3 +1,11 @@ +-- +-- The license and distribution terms for this file may be +-- found in the file LICENSE in this distribution or at +-- http://www.rtems.com/license/LICENSE. +-- +-- $Id$ +-- + package Interrupt_pkg is procedure itest; end Interrupt_pkg; diff --git a/irq_test/irqforce.c b/irq_test/irqforce.c index 78ae91a..ad46b8b 100644 --- a/irq_test/irqforce.c +++ b/irq_test/irqforce.c @@ -1,6 +1,14 @@ +/* + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + #include -irqforce(int irq) +void irqforce(int irq) { ERC32_Unmask_interrupt(irq); ERC32_Force_interrupt(irq); diff --git a/irq_test/irqtest.adb b/irq_test/irqtest.adb index 1a9dfad..ad23c65 100644 --- a/irq_test/irqtest.adb +++ b/irq_test/irqtest.adb @@ -1,7 +1,15 @@ +-- +-- The license and distribution terms for this file may be +-- found in the file LICENSE in this distribution or at +-- http://www.rtems.com/license/LICENSE. +-- +-- $Id$ +-- + with Interrupt_pkg; procedure irqtest is begin - null; + Interrupt_pkg.itest; end irqtest; diff --git a/irq_test_c/.cvsignore b/irq_test_c/.cvsignore new file mode 100644 index 0000000..34f3eae --- /dev/null +++ b/irq_test_c/.cvsignore @@ -0,0 +1,3 @@ +o-optimize +*.swp +.gdbinit diff --git a/irq_test_c/Makefile b/irq_test_c/Makefile new file mode 100644 index 0000000..1765cc6 --- /dev/null +++ b/irq_test_c/Makefile @@ -0,0 +1,27 @@ +# +# Makefile +# + +# +# RTEMS_MAKEFILE_PATH is typically set in an environment variable +# + +PGM=${ARCH}/c_irq_text.exe + +# optional managers required +MANAGERS=all + +# C source names +CSRCS = init.c irqforce.c +COBJS = $(CSRCS:%.c=${ARCH}/%.o) + +include $(RTEMS_MAKEFILE_PATH)/Makefile.inc +include $(RTEMS_CUSTOM) +include $(PROJECT_ROOT)/make/leaf.cfg + +OBJS= $(COBJS) + +all: ${ARCH} $(PGM) + +$(PGM): $(OBJS) + $(make-exe) diff --git a/irq_test_c/README b/irq_test_c/README new file mode 100644 index 0000000..28a0309 --- /dev/null +++ b/irq_test_c/README @@ -0,0 +1,26 @@ +# +# $Id$ +# + +WARNING!!! Code is ERC32 specific. + +The directories irq_test and irq_test_c are related and provided +for performance comparisons. + +This directory contains a simple benchmark in C of a forced interrupt +and provides a baseline comparison point for the performance +of the GNAT implementation of Ada interrupt tasks on RTEMS. + +On 17 October 2007, this program run on TSIM reported that +it took 158 microseconds on a 14 Mhz SPARC/ERC32 to complete +the following sequence: + + + Init: Start Timer + + Init: Force IRQ + + ISR: Release a simple binary semaphore + + ISR Task: Wake up from simple binary semaphore + + ISR Task: Stop Timer + +In comparison, an Ada program implementing the same +sequence but using Ada interrupt tasks took 315 microseconds +on the same target. diff --git a/irq_test_c/init.c b/irq_test_c/init.c new file mode 100644 index 0000000..a67235e --- /dev/null +++ b/irq_test_c/init.c @@ -0,0 +1,156 @@ +/* + * COPYRIGHT (c) 1989-2003. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include +#include + +#include +#include /* _Timespec_Substract */ + +struct timespec start; +#if defined(INCLUDE_TO_ISR) + struct timespec to_isr; +#endif +struct timespec stop_in_task; + +rtems_id semaphore; +rtems_id task_id; + +void irqforce(int); + +void ISR( uint32_t arg ) +{ + rtems_status_code status; + #if defined(INCLUDE_TO_ISR) + _TOD_Get( &to_isr ); + #endif + status = rtems_semaphore_release( semaphore ); +} + +rtems_task ISR_Task( + rtems_task_argument argument +) +{ + rtems_status_code status; + struct timespec diff1, diff2; + + #define print_timespec( _t ) \ + printf ( "%ld:%ld ", (long) _t.tv_sec, (long) _t.tv_nsec ); + + /* + * Print base overhead + */ + + _TOD_Get( &start ); + _TOD_Get( &stop_in_task ); + _Timespec_Subtract( &start, &stop_in_task, &diff1 ); + printf( "Timer Overhead: " ); + print_timespec( start ); + print_timespec( stop_in_task ); + printf( "--> " ); + print_timespec( diff1 ); + printf( "\n" ); + + while (1) { + status = rtems_semaphore_obtain( semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT ); + _TOD_Get( &stop_in_task ); + + _Timespec_Subtract( &start, &stop_in_task, &diff2 ); + print_timespec( start ); + #if defined(INCLUDE_TO_ISR) + _Timespec_Subtract( &start, &to_isr, &diff1 ); + print_timespec( to_isr ); + #endif + print_timespec( stop_in_task ); + printf( "--> " ); + #if defined(INCLUDE_TO_ISR) + print_timespec( diff1 ); + #endif + print_timespec( diff2 ); + printf( "\n" ); + } +} + +rtems_task Init( + rtems_task_argument argument +) +{ + rtems_status_code status; + rtems_time_of_day time; + int i; + + puts( "\n\n*** IRQ FORCE TEST ***" ); + + time.year = 2007; + time.month = 10; + time.day = 17; + time.hour = 13; + time.minute = 45; + time.second = 0; + time.ticks = 0; + + status = rtems_clock_set( &time ); + + /* + * Create the simple semaphore used to wake us up + */ + + status = rtems_semaphore_create( + rtems_build_name( 'A', 'I', 'S', 'R' ), + 0, + RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO, + 0, + &semaphore + ); + + status = rtems_task_create( + rtems_build_name( 'A', 'I', 'S', 'R' ), + 1, RTEMS_MINIMUM_STACK_SIZE, RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, &task_id + ); + status = rtems_task_start( task_id, ISR_Task, 1 ); + + + /* + * Now generate the interrupt and time it + */ + + set_vector( ISR, 17, 1 ); + for ( i=0 ; i<= 10 ; i++ ) { + sleep(1); + _TOD_Get( &start ); + irqforce(1); + } + sleep(1); + + exit( 0 ); +} + +/**************** START OF CONFIGURATION INFORMATION ****************/ + +#define CONFIGURE_INIT + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER + +#define CONFIGURE_MAXIMUM_TASKS 4 +#define CONFIGURE_MAXIMUM_SEMAPHORES 1 + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_INIT_TASK_PRIORITY 5 +#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_PREEMPT + +#define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE) + +#include + +/**************** END OF CONFIGURATION INFORMATION ****************/ + diff --git a/irq_test_c/irqforce.c b/irq_test_c/irqforce.c new file mode 100644 index 0000000..ad46b8b --- /dev/null +++ b/irq_test_c/irqforce.c @@ -0,0 +1,15 @@ +/* + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include + +void irqforce(int irq) +{ + ERC32_Unmask_interrupt(irq); + ERC32_Force_interrupt(irq); +} diff --git a/rootfs/etc/hosts b/rootfs/etc/hosts index cbd9136..9bdf333 100644 --- a/rootfs/etc/hosts +++ b/rootfs/etc/hosts @@ -1,2 +1,2 @@ 127.0.0.1 localhost rtems -192.168.1.244 rtems # ip address of webserver +# 192.168.1.244 rtems # ip address of webserver diff --git a/rtems_init.c b/rtems_init.c index f0dd833..3c4d8a9 100644 --- a/rtems_init.c +++ b/rtems_init.c @@ -175,6 +175,7 @@ void *POSIX_Init( void *argument ) #if defined(MAIN_USE_NETWORKING) printk("Initializing Network\n"); rtems_bsdnet_initialize_network (); + rtems_bsdnet_show_inet_routes (); #endif status = pthread_attr_init( &attr ); -- cgit v1.2.3