diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2003-11-11 00:57:23 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2003-11-11 00:57:23 +0000 |
commit | 532f51ce426bc247b7054ffc64f006f7397d6268 (patch) | |
tree | 672371d581f9567794f08d2eb5e315c3590647e8 /c/src/tests/samples/loopback/init.c | |
parent | 2003-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de> (diff) | |
download | rtems-532f51ce426bc247b7054ffc64f006f7397d6268.tar.bz2 |
2003-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* base_mp/node1/.cvsignore: Remove.
* base_mp/node1/Makefile.am: Remove.
* base_mp/node1/base_mp.doc: Remove.
* base_mp/node1/base_mp.scn: Remove.
* base_mp/.cvsignore: Remove.
* base_mp/Makefile.am: Remove.
* base_mp/apptask.c: Remove.
* base_mp/init.c: Remove.
* base_mp/system.h: Remove.
* base_mp/node2/.cvsignore: Remove.
* base_mp/node2/Makefile.am: Remove.
* base_mp/node2/base_mp.doc: Remove.
* base_mp/node2/base_mp.scn: Remove.
* .cvsignore: Remove.
* ChangeLog: Remove.
* Makefile.am: Remove.
* README: Remove.
* configure.ac: Remove.
* sample.am: Remove.
* base_sp/.cvsignore: Remove.
* base_sp/Makefile.am: Remove.
* base_sp/apptask.c: Remove.
* base_sp/base_sp.doc: Remove.
* base_sp/base_sp.scn: Remove.
* base_sp/init.c: Remove.
* base_sp/system.h: Remove.
* cdtest/.cvsignore: Remove.
* cdtest/Makefile.am: Remove.
* cdtest/cdtest.scn: Remove.
* cdtest/init.c: Remove.
* cdtest/main.cc: Remove.
* cdtest/system.h: Remove.
* fileio/.cvsignore: Remove.
* fileio/Makefile.am: Remove.
* fileio/fileio.doc: Remove.
* fileio/init.c: Remove.
* fileio/system.h: Remove.
* hello/.cvsignore: Remove.
* hello/Makefile.am: Remove.
* hello/hello.doc: Remove.
* hello/hello.scn: Remove.
* hello/init.c: Remove.
* hello/system.h: Remove.
* loopback/.cvsignore: Remove.
* loopback/Makefile.am: Remove.
* loopback/README: Remove.
* loopback/init.c: Remove.
* loopback/loopback.scn: Remove.
* minimum/.cvsignore: Remove.
* minimum/Makefile.am: Remove.
* minimum/init.c: Remove.
* minimum/minimum.doc: Remove.
* minimum/minimum.scn: Remove.
* paranoia/.cvsignore: Remove.
* paranoia/Makefile.am: Remove.
* paranoia/init.c: Remove.
* paranoia/paranoia.c: Remove.
* paranoia/paranoia.doc: Remove.
* paranoia/system.h: Remove.
* pppd/.cvsignore: Remove.
* pppd/Makefile-user: Remove.
* pppd/Makefile.am: Remove.
* pppd/README: Remove.
* pppd/init.c: Remove.
* pppd/netconfig.h: Remove.
* pppd/ppp.conf: Remove.
* pppd/pppd.options: Remove.
* pppd/pppdapp.c: Remove.
* pppd/system.h: Remove.
* ticker/.cvsignore: Remove.
* ticker/Makefile.am: Remove.
* ticker/init.c: Remove.
* ticker/system.h: Remove.
* ticker/tasks.c: Remove.
* ticker/ticker.doc: Remove.
* ticker/ticker.scn: Remove.
* unlimited/.cvsignore: Remove.
* unlimited/Makefile.am: Remove.
* unlimited/init.c: Remove.
* unlimited/system.h: Remove.
* unlimited/test1.c: Remove.
* unlimited/test2.c: Remove.
* unlimited/test3.c: Remove.
* unlimited/unlimited.doc: Remove.
* unlimited/unlimited.scn: Remove.
Diffstat (limited to 'c/src/tests/samples/loopback/init.c')
-rw-r--r-- | c/src/tests/samples/loopback/init.c | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/c/src/tests/samples/loopback/init.c b/c/src/tests/samples/loopback/init.c deleted file mode 100644 index b0aaf66597..0000000000 --- a/c/src/tests/samples/loopback/init.c +++ /dev/null @@ -1,267 +0,0 @@ -#include <bsp.h> - -#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER -#define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER -#define CONFIGURE_RTEMS_INIT_TASKS_TABLE - -#define CONFIGURE_EXECUTIVE_RAM_SIZE (512*1024) -#define CONFIGURE_MAXIMUM_SEMAPHORES 20 -#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 20 -#define CONFIGURE_MAXIMUM_TASKS 20 - -#define CONFIGURE_MICROSECONDS_PER_TICK 10000 -#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 50 -#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM - -#define CONFIGURE_INIT_TASK_STACK_SIZE (10*1024) -#define CONFIGURE_INIT_TASK_PRIORITY 50 -#define CONFIGURE_INIT_TASK_INITIAL_MODES (RTEMS_PREEMPT | \ - RTEMS_NO_TIMESLICE | \ - RTEMS_NO_ASR | \ - RTEMS_INTERRUPT_LEVEL(0)) - -#define CONFIGURE_INIT -rtems_task Init(rtems_task_argument argument); - -#include <confdefs.h> - -#include <rtems/rtems_bsdnet.h> -#include <rtems/error.h> -#include <stdio.h> -#include <stdarg.h> -#include <string.h> -#include <errno.h> -#include <sys/socket.h> -#include <netinet/in.h> - -/* - * Network configuration - */ -extern void rtems_bsdnet_loopattach(); -static struct rtems_bsdnet_ifconfig loopback_config = { - "lo0", /* name */ - (int (*)(struct rtems_bsdnet_ifconfig *, int))rtems_bsdnet_loopattach, /* attach function */ - NULL, /* link to next interface */ - "127.0.0.1", /* IP address */ - "255.0.0.0", /* IP net mask */ -}; - -struct rtems_bsdnet_config rtems_bsdnet_config = { - &loopback_config, /* Network interface */ - NULL, /* Use fixed network configuration */ - 0, /* Default network task priority */ - 0, /* Default mbuf capacity */ - 0, /* Default mbuf cluster capacity */ - "testSystem", /* Host name */ - "nowhere.com", /* Domain name */ - "127.0.0.1", /* Gateway */ - "127.0.0.1", /* Log host */ - {"127.0.0.1" }, /* Name server(s) */ - {"127.0.0.1" }, /* NTP server(s) */ -}; - -/* - * Thread-safe output routines - */ -static rtems_id printMutex; -static void printSafe(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - rtems_semaphore_obtain(printMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT); - vprintf(fmt, args); - rtems_semaphore_release(printMutex); - va_end(args); -} -#define printf printSafe - -/* - * Spawn a task - */ -static void spawnTask(rtems_task_entry entryPoint, rtems_task_priority priority, rtems_task_argument arg) -{ - rtems_status_code sc; - rtems_id tid; - - sc = rtems_task_create(rtems_build_name('t','a','s','k'), - priority, - RTEMS_MINIMUM_STACK_SIZE+(8*1024), - RTEMS_PREEMPT|RTEMS_TIMESLICE|RTEMS_NO_ASR|RTEMS_INTERRUPT_LEVEL(0), - RTEMS_FLOATING_POINT|RTEMS_LOCAL, - &tid); - if (sc != RTEMS_SUCCESSFUL) - rtems_panic("Can't create task: %s", rtems_status_text(sc)); - sc = rtems_task_start(tid, entryPoint, arg); - if (sc != RTEMS_SUCCESSFUL) - rtems_panic("Can't start task: %s", rtems_status_text(sc)); -} - -/* - * Server subtask - */ -static rtems_task workerTask(rtems_task_argument arg) -{ - int s = arg; - char msg[80]; - char reply[100]; - int i; - - for (;;) { - if ((i = read(s, msg, sizeof msg)) < 0) { - printf("Server couldn't read message from client: %s\n", strerror(errno)); - break; - } - if (i == 0) - break; - rtems_task_wake_after(20); /* Simulate some processing delay */ - i = sprintf(reply, "Server received %d (%s)", i, msg); - if ((i = write(s, reply, i+1)) < 0) { - printf("Server couldn't write message to client: %s\n", strerror(errno)); - break; - } - } - if (close(s) < 0) - printf("Can't close worker task socket: %s\n", strerror(errno)); - printf("Worker task terminating.\n"); - rtems_task_delete(RTEMS_SELF); -} - -/* - * Server Task - */ -static rtems_task serverTask(rtems_task_argument arg) -{ - int s, s1; - int addrlen; - struct sockaddr_in myAddr, farAddr; - rtems_task_priority myPriority; - - printf("Create socket.\n"); - s = socket(AF_INET, SOCK_STREAM, 0); - if (s < 0) - rtems_panic("Can't create socket: %s\n", strerror(errno)); - memset(&myAddr, 0, sizeof myAddr); - myAddr.sin_family = AF_INET; - myAddr.sin_port = htons(1234); - myAddr.sin_addr.s_addr = htonl(INADDR_ANY); - printf("Bind socket.\n"); - if (bind(s, (struct sockaddr *)&myAddr, sizeof myAddr) < 0) - rtems_panic("Can't bind socket: %s\n", strerror(errno)); - if (listen(s, 5) < 0) - printf("Can't listen on socket: %s\n", strerror(errno)); - rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &myPriority); - for(;;) { - addrlen = sizeof farAddr; - s1 = accept(s, (struct sockaddr *)&farAddr, &addrlen); - if (s1 < 0) - rtems_panic("Can't accept connection: %s", strerror(errno)); - else - printf("ACCEPTED:%lX\n", ntohl(farAddr.sin_addr.s_addr)); - spawnTask(workerTask, myPriority, s1); - } -} - -/* - * The real part of the client - */ -static rtems_task clientWorker(int arg) -{ - int s; - struct sockaddr_in myAddr, farAddr; - char cbuf[50]; - int i; - - s = socket(AF_INET, SOCK_STREAM, 0); - if (s < 0) { - printf("Can't create client socket: %s\n", strerror(errno)); - return; - } - memset(&myAddr, 0, sizeof myAddr); - myAddr.sin_family = AF_INET; - myAddr.sin_port = htons(0); - myAddr.sin_addr.s_addr = htonl(INADDR_ANY); - if (bind(s, (struct sockaddr *)&myAddr, sizeof myAddr) < 0) { - printf("Can't bind socket: %s\n", strerror(errno)); - goto close; - } - memset(&farAddr, 0, sizeof farAddr); - farAddr.sin_family = AF_INET; - farAddr.sin_port = htons(1234); - farAddr.sin_addr.s_addr = htonl(INADDR_ANY); - printf("Connect to server.\n"); - if (connect(s, (struct sockaddr *)&farAddr, sizeof farAddr) < 0) { - printf("Can't connect to server: %s\n", strerror(errno)); - goto close; - } - rtems_task_wake_after(20); /* Simulate client delay */ - i = sprintf(cbuf, "Hi there, server (%d).", arg); - i++; /* Send the '\0', too */ - printf("Write %d-byte message to server.\n", i); - if (write(s, cbuf, i) < 0) { - printf("Can't write to server: %s\n", strerror(errno)); - goto close; - } - if ((i = read(s, cbuf, sizeof cbuf)) < 0) { - printf("Can't read from server: %s\n", strerror(errno)); - goto close; - } - printf("Read %d from server: %.*s\n", i, i, cbuf); - rtems_task_wake_after(20); /* Simulate client delay */ - close: - printf("Client closing connection.\n"); - if (close(s) < 0) - printf("Can't close client task socket: %s\n", strerror(errno)); -} - -/* - * Client Task - */ -static rtems_task clientTask(rtems_task_argument arg) -{ - clientWorker(arg); - printf("Client task terminating.\n"); -} - -/* - * RTEMS Startup Task - */ -rtems_task -Init (rtems_task_argument ignored) -{ - rtems_status_code sc; - - sc = rtems_semaphore_create(rtems_build_name('P','m','t','x'), - 1, - RTEMS_PRIORITY|RTEMS_BINARY_SEMAPHORE|RTEMS_INHERIT_PRIORITY| - RTEMS_NO_PRIORITY_CEILING|RTEMS_LOCAL, - 0, - &printMutex); - if (sc != RTEMS_SUCCESSFUL) - rtems_panic("Can't create printf mutex:", rtems_status_text(sc)); - printf("\"Network\" initializing!\n"); - rtems_bsdnet_initialize_network(); - printf("\"Network\" initialized!\n"); - - printf("Try running client with no server present.\n"); - printf("Should fail with `connection refused'.\n"); - clientWorker(0); - - printf("\nStart server.\n"); - spawnTask(serverTask, 150, 0); - - printf("\nTry running client with server present.\n"); - spawnTask(clientTask, 120, 1); - rtems_task_wake_after(500); - - printf("\nTry running two clients.\n"); - spawnTask(clientTask, 120, 2); - spawnTask(clientTask, 120, 3); - rtems_task_wake_after(500); - - printf("\nTry running three clients.\n"); - spawnTask(clientTask, 120, 4); - spawnTask(clientTask, 120, 5); - spawnTask(clientTask, 120, 6); - - rtems_task_suspend(RTEMS_SELF); -} |