diff --git a/ChangeLog b/ChangeLog index 58a7d78813b367140672df37c0dce76c3c952536..75202c115610ea62a68873124a9913bb9d5d045b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -247,6 +247,7 @@ 0.3.3 2007-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> * Removed unused uIP files - * sched/, mm/, net/ subystem debug can not be selectively enabled/disabled + * sched/, mm/, and net/ subystem debug can not be selectively enabled/disabled * Correct socket close logic -- needs to disconnect TCP socket on close * uIP webserver now seems to be fully functional + * fs/ and lib/ subystem debug can not be selectively enabled/disabled diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index 969f78cd6af0500a061e7b2c63571a5d134a4d13..954ee19eed52f89ce05c0c82f9651132b0df2dce 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -727,9 +727,10 @@ Other memory: 0.3.3 2007-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> * Removed unused uIP files - * sched/, mm/, net/ subystem debug can not be selectively enabled/disabled + * sched/, mm/, and net/ subystem debug can not be selectively enabled/disabled * Correct socket close logic -- needs to disconnect TCP socket on close * uIP webserver now seems to be fully functional + * fs/ and lib/ subystem debug can not be selectively enabled/disabled </pre></ul> <table width ="100%"> diff --git a/Documentation/NuttxPortingGuide.html b/Documentation/NuttxPortingGuide.html index 2aed8d106a3013870a3c08eb80401d22d7e12cfc..fe18ecba8ca8d0ddc3b60ca84c0cc788e292c456 100644 --- a/Documentation/NuttxPortingGuide.html +++ b/Documentation/NuttxPortingGuide.html @@ -1196,6 +1196,9 @@ The system can be re-made subsequently by just typing <code>make</code>. <li> <code>CONFIG_DEBUG</code>: enables built-in debug options </li> + <li> + <code>CONFIG_DEBUG_VERBOSE</code>: enables verbose debug output + </li> <li> <code>CONFIG_DEBUG_SCHED</code>: enable OS debug output (disabled by default) </li> @@ -1203,10 +1206,13 @@ The system can be re-made subsequently by just typing <code>make</code>. <code>CONFIG_DEBUG_MM</code>: enable memory management debug output (disabld by default) </li> <li> - <code>CONFIG_DEBUG_NET</code>: enable networkd debug output (disabled by default) + <code>CONFIG_DEBUG_NET</code>: enable network debug output (disabled by default) </li> <li> - <code>CONFIG_DEBUG_VERBOSE</code>: enables verbose debug output + <code>CONFIG_DEBUG_FS</code>: enable filesystem debug output (disabled by default) + </li> + <li> + <code>CONFIG_DEBUG_LIB</code>: enable C library debug output (disabled by default) </li> <li> <code>CONFIG_HAVE_LOWPUTC</code>: architecture supports low-level, boot diff --git a/TODO b/TODO index a9f96642c187acc28f32e42de12e33a86906530e..197a966b00d0861782c1de5b3dd01fd689bb6926 100644 --- a/TODO +++ b/TODO @@ -49,6 +49,7 @@ o Network is in the subnet served by the driver. - uIP/Socket callback logic is not thread safe. This means that a socket cannot be used concurrently by two threads. Minimal fix: Add mutex to support exclusion. +- IPv6 support is incomplete o USB - Implement USB device support diff --git a/configs/README.txt b/configs/README.txt index 42d5c9055f4319f600d63fc8b091efb4413bf5db..88f6291b637f1dd6af9b50f76e618ab347adabac 100644 --- a/configs/README.txt +++ b/configs/README.txt @@ -132,6 +132,10 @@ defconfig -- This is a configuration file similar to the Linux (disabld by default) CONFIG_DEBUG_NET - enable network debug output (disabled by default) + CONFIG_DEBUG_FS - enable filesystem debug output (disabled + by default) + CONFIG_DEBUG_LIB - enable C library debug output (disabled + by default) CONFIG_HAVE_LOWPUTC - architecture supports low-level, boot time console output CONFIG_MM_REGIONS - If the architecture includes multiple diff --git a/fs/fs_fat32util.c b/fs/fs_fat32util.c index bf2df78f689df32584928d901ec34055f7bd279b..ed30970063d78b461b3f4cd8356e55e6bfa3341c 100644 --- a/fs/fs_fat32util.c +++ b/fs/fs_fat32util.c @@ -695,22 +695,22 @@ int fat_mount(struct fat_mountpt_s *fs, boolean writeable) /* We did it! */ - dbg("FAT%d:\n", fs->fs_type == 0 ? 12 : fs->fs_type == 1 ? 16 : 32); - dbg("\tHW sector size: %d\n", fs->fs_hwsectorsize); - dbg("\t sectors: %d\n", fs->fs_hwnsectors); - dbg("\tFAT reserved: %d\n", fs->fs_fatresvdseccount); - dbg("\t sectors: %d\n", fs->fs_fattotsec); - dbg("\t start sector: %d\n", fs->fs_fatbase); - dbg("\t root sector: %d\n", fs->fs_rootbase); - dbg("\t root entries: %d\n", fs->fs_rootentcnt); - dbg("\t data sector: %d\n", fs->fs_database); - dbg("\t FSINFO sector: %d\n", fs->fs_fsinfo); - dbg("\t Num FATs: %d\n", fs->fs_fatnumfats); - dbg("\t FAT size: %d\n", fs->fs_fatsize); - dbg("\t sectors/cluster: %d\n", fs->fs_fatsecperclus); - dbg("\t max clusters: %d\n", fs->fs_nclusters); - dbg("\tFSI free count %d\n", fs->fs_fsifreecount); - dbg("\t next free %d\n", fs->fs_fsinextfree); + fdbg("FAT%d:\n", fs->fs_type == 0 ? 12 : fs->fs_type == 1 ? 16 : 32); + fdbg("\tHW sector size: %d\n", fs->fs_hwsectorsize); + fdbg("\t sectors: %d\n", fs->fs_hwnsectors); + fdbg("\tFAT reserved: %d\n", fs->fs_fatresvdseccount); + fdbg("\t sectors: %d\n", fs->fs_fattotsec); + fdbg("\t start sector: %d\n", fs->fs_fatbase); + fdbg("\t root sector: %d\n", fs->fs_rootbase); + fdbg("\t root entries: %d\n", fs->fs_rootentcnt); + fdbg("\t data sector: %d\n", fs->fs_database); + fdbg("\t FSINFO sector: %d\n", fs->fs_fsinfo); + fdbg("\t Num FATs: %d\n", fs->fs_fatnumfats); + fdbg("\t FAT size: %d\n", fs->fs_fatsize); + fdbg("\t sectors/cluster: %d\n", fs->fs_fatsecperclus); + fdbg("\t max clusters: %d\n", fs->fs_nclusters); + fdbg("\tFSI free count %d\n", fs->fs_fsifreecount); + fdbg("\t next free %d\n", fs->fs_fsinextfree); return OK; diff --git a/include/debug.h b/include/debug.h index 38ec57ba21afdc35e8b1110e72463c426c131530..651b2cbe87145249523ef0d487882ce15dccccb8 100644 --- a/include/debug.h +++ b/include/debug.h @@ -112,6 +112,26 @@ # define nvdbg(x...) #endif +#ifdef CONFIG_DEBUG_FS +# define fdbg(format, arg...) dbg(format, ##arg) +# define flldbg(format, arg...) lldbg(format, ##arg) +# define fvdbg(format, arg...) vdbg(format, ##arg) +#else +# define fdbg(x...) +# define flldbg(x...) +# define fvdbg(x...) +#endif + +#ifdef CONFIG_DEBUG_LIB +# define ldbg(format, arg...) dbg(format, ##arg) +# define llldbg(format, arg...) lldbg(format, ##arg) +# define lvdbg(format, arg...) vdbg(format, ##arg) +#else +# define ldbg(x...) +# define llldbg(x...) +# define lvdbg(x...) +#endif + /************************************************************ * Public Type Declarations ************************************************************/ diff --git a/lib/lib_getenv.c b/lib/lib_getenv.c index dd659393aac8e71dc36816030ee821cee9d48d66..bddd2cb0aafcccf3d18d6ed59e6c8f6f48b4e4d0 100644 --- a/lib/lib_getenv.c +++ b/lib/lib_getenv.c @@ -103,7 +103,7 @@ char *getenv(const char *name) const char *pend = &environment[size-1]; const char *ptmp; - dbg("name=\"%s\"\n", name); + ldbg("name=\"%s\"\n", name); if (name) { @@ -111,7 +111,7 @@ char *getenv(const char *name) while (penv < pend) { - vdbg("Compare to=\"%s\"\n", penv); + lvdbg("Compare to=\"%s\"\n", penv); /* The logic below basically implements a version of * strcmp where the strings may be terminated with = signs. @@ -130,7 +130,7 @@ char *getenv(const char *name) { /* Yes.. return the pointer to the value. */ - dbg("Returning \"%s\"\n", penv+1); + ldbg("Returning \"%s\"\n", penv+1); return ((char*)penv+1); } else @@ -165,6 +165,6 @@ char *getenv(const char *name) /* If we got here, then no matching string was found. */ - dbg("Returning NULL\n"); + ldbg("Returning NULL\n"); return NULL; } diff --git a/lib/lib_sscanf.c b/lib/lib_sscanf.c index af3193e44d9e131d826776d476ef9bf66e4b15b2..e06839f4770955d1c42be24f83958f66f1921e02 100644 --- a/lib/lib_sscanf.c +++ b/lib/lib_sscanf.c @@ -121,7 +121,7 @@ int vsscanf(char *buf, const char *s, va_list ap) const char *tc; char tmp[MAXLN]; - vdbg("vsscanf: buf=\"%s\" fmt=\"%s\"\n", buf, s); + lvdbg("vsscanf: buf=\"%s\" fmt=\"%s\"\n", buf, s); count = noassign = width = lflag = 0; while (*s && *buf) @@ -135,13 +135,13 @@ int vsscanf(char *buf, const char *s, va_list ap) if (*s == '%') { - vdbg("vsscanf: Specifier found\n"); + lvdbg("vsscanf: Specifier found\n"); /* Check for qualifiers on the conversion specifier */ s++; for (; *s; s++) { - vdbg("vsscanf: Processing %c\n", *s); + lvdbg("vsscanf: Processing %c\n", *s); if (strchr("dibouxcsefg%", *s)) break; @@ -163,7 +163,7 @@ int vsscanf(char *buf, const char *s, va_list ap) if (*s == 's') { - vdbg("vsscanf: Performing string conversion\n"); + lvdbg("vsscanf: Performing string conversion\n"); while (isspace(*buf)) buf++; @@ -184,7 +184,7 @@ int vsscanf(char *buf, const char *s, va_list ap) else if (*s == 'c') { - vdbg("vsscanf: Performing character conversion\n"); + lvdbg("vsscanf: Performing character conversion\n"); if (!width) width = 1; @@ -201,7 +201,7 @@ int vsscanf(char *buf, const char *s, va_list ap) else if (strchr("dobxu", *s)) { - vdbg("vsscanf: Performing integer conversion\n"); + lvdbg("vsscanf: Performing integer conversion\n"); /* Skip over any white space before the integer string */ @@ -237,7 +237,7 @@ int vsscanf(char *buf, const char *s, va_list ap) strncpy(tmp, buf, width); tmp[width] = '\0'; - vdbg("vsscanf: tmp[]=\"%s\"\n", tmp); + lvdbg("vsscanf: tmp[]=\"%s\"\n", tmp); /* Perform the integer conversion */ @@ -251,7 +251,7 @@ int vsscanf(char *buf, const char *s, va_list ap) #else int tmpint = strtol(tmp, NULL, base); #endif - vdbg("vsscanf: Return %d to 0x%p\n", tmpint, pint); + lvdbg("vsscanf: Return %d to 0x%p\n", tmpint, pint); *pint = tmpint; } } @@ -264,10 +264,10 @@ int vsscanf(char *buf, const char *s, va_list ap) # warning "No floating point conversions" void *pv = va_arg(ap, void*); - vdbg("vsscanf: Return 0.0 to %p\n", pv); + lvdbg("vsscanf: Return 0.0 to %p\n", pv); *((double_t*)pv) = 0.0; #else - vdbg("vsscanf: Performing floating point conversion\n"); + lvdbg("vsscanf: Performing floating point conversion\n"); /* Skip over any white space before the real string */ @@ -293,7 +293,7 @@ int vsscanf(char *buf, const char *s, va_list ap) tmp[width] = '\0'; buf += width; - vdbg("vsscanf: tmp[]=\"%s\"\n", tmp); + lvdbg("vsscanf: tmp[]=\"%s\"\n", tmp); /* Perform the floating point conversion */ @@ -308,7 +308,7 @@ int vsscanf(char *buf, const char *s, va_list ap) #endif void *pv = va_arg(ap, void*); - vdbg("vsscanf: Return %f to %p\n", dvalue, pv); + lvdbg("vsscanf: Return %f to %p\n", dvalue, pv); /* But we have to check whether we need to return a * float or a double.