From 7fb190093c485279c8c89b53578bb297ab1170e2 Mon Sep 17 00:00:00 2001 From: patacongo Date: Wed, 1 Feb 2012 21:10:40 +0000 Subject: Re-verficatin of examples/telnetd after refactoring of fgets/readline functionality git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4358 42af7a65-404d-4744-a932-0658087f49c3 --- apps/examples/README.txt | 26 ++++++++++++++++++++++++++ apps/examples/telnetd/shell.c | 3 +++ apps/netutils/telnetd/telnetd_driver.c | 10 ++++++++-- 3 files changed, 37 insertions(+), 2 deletions(-) (limited to 'apps') diff --git a/apps/examples/README.txt b/apps/examples/README.txt index a8af257d7..500405893 100644 --- a/apps/examples/README.txt +++ b/apps/examples/README.txt @@ -417,6 +417,19 @@ examples/nsh CONFIGURED_APPS += tftp CONFIGURED_APPS += webclient + If the Telnet console is enabled, then the appconfig file (apps/.config) + should also include: + + CONFIGURED_APPS += netutils/telnetd + + Also if the Telnet console is enabled, make sure that you have the + following set in the NuttX configuration file or else the performance + will be very bad (because there will be only one character per TCP + transfer): + + CONFIG_STDIO_BUFFER_SIZE - Some value >= 64 + CONFIG_STDIO_LINEBUFFER=y + examples/nx ^^^^^^^^^^^ @@ -932,6 +945,19 @@ examples/telnetd 10.0.0.1 CONFIG_EXAMPLE_TELNETD_NETMASK - The network mask. Default: 255.255.255.0 + The appconfig file (apps/.config) should include: + + CONFIGURED_APPS += examples/telnetd + CONFIGURED_APPS += netutils/uiplib + CONFIGURED_APPS += netutils/telnetd + + Also, make sure that you have the following set in the NuttX configuration + file or else the performance will be very bad (because there will be only + one character per TCP transfer): + + CONFIG_STDIO_BUFFER_SIZE - Some value >= 64 + CONFIG_STDIO_LINEBUFFER=y + examples/thttpd ^^^^^^^^^^^^^^^ diff --git a/apps/examples/telnetd/shell.c b/apps/examples/telnetd/shell.c index 8cf695551..990a00721 100644 --- a/apps/examples/telnetd/shell.c +++ b/apps/examples/telnetd/shell.c @@ -44,8 +44,11 @@ #include #include +#include + #include #include + #include "shell.h" /**************************************************************************** diff --git a/apps/netutils/telnetd/telnetd_driver.c b/apps/netutils/telnetd/telnetd_driver.c index 7d36e9d2d..eb43012c4 100644 --- a/apps/netutils/telnetd/telnetd_driver.c +++ b/apps/netutils/telnetd/telnetd_driver.c @@ -518,8 +518,12 @@ static int telnetd_close(FAR struct file *filep) psock_close(&priv->td_psock); - /* Release the driver memory. What if there are threads - * waiting on td_exclsem? They will never be awakened! + /* Release the driver memory. What if there are threads waiting on + * td_exclsem? They will never be awakened! How could this happen? + * crefs == 1 so there are no other open references to the driver. + * But this could have if someone were trying to re-open the driver + * after every other thread has closed it. That really should not + * happen in the intended usage model. */ DEBUGASSERT(priv->td_exclsem.semcount == 0); @@ -733,6 +737,8 @@ FAR char *telnetd_driver(int sd, FAR struct telnetd_s *daemon) /* Initialize the allocated driver instance */ + sem_init(&priv->td_exclsem, 0, 1); + priv->td_state = STATE_NORMAL; priv->td_crefs = 0; priv->td_pending = 0; -- cgit v1.2.3