infra: add CYG_ARRAY_SIZE() macro
Andrew Lunn
andrew@lunn.ch
Fri May 19 10:18:00 GMT 2006
On Wed, May 17, 2006 at 05:35:52PM +0100, David Vrabel wrote:
> Andrew Lunn wrote:
> > On Wed, May 17, 2006 at 05:13:47PM +0100, David Vrabel wrote:
> >> I've had to use something like this quite a bit so I guess it's useful
> >> enough to include. It does the same thing as Linux's ARRAY_SIZE macro.
> >
> > I've always called this NELEM.
>
> That would be a more descriptive name. Have another patch so you can
> choose which (if any) to apply.
Thanks
I also change most of the current NELEM's to CYG_NELEM.
Andrew
-------------- next part --------------
Index: packages/infra/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/infra/current/ChangeLog,v
retrieving revision 1.54
diff -u -r1.54 ChangeLog
--- packages/infra/current/ChangeLog 8 May 2006 17:41:55 -0000 1.54
+++ packages/infra/current/ChangeLog 19 May 2006 10:13:30 -0000
@@ -1,3 +1,8 @@
+2006-05-17 David Vrabel <dvrabel@arcom.com>
+
+ * include/cyg_type.h: #define CYG_NELEM to calculate the
+ number of elements in a (statically allocated) array.
+
2006-05-08 Sergei Gavrikov <sg@belvok.com>
* src/buffer.cxx: Fix the compiler warnings.
Index: packages/infra/current/include/cyg_type.h
===================================================================
RCS file: /cvs/ecos/ecos/packages/infra/current/include/cyg_type.h,v
retrieving revision 1.23
diff -u -r1.23 cyg_type.h
--- packages/infra/current/include/cyg_type.h 22 Jul 2005 09:20:45 -0000 1.23
+++ packages/infra/current/include/cyg_type.h 19 May 2006 10:13:30 -0000
@@ -251,6 +251,11 @@
typedef cyg_haladdrword CYG_ADDRWORD;
// -------------------------------------------------------------------------
+// Number of elements in a (statically allocated) array.
+
+#define CYG_NELEM(a) (sizeof(a) / sizeof((a)[0]))
+
+// -------------------------------------------------------------------------
// Constructor ordering macros. These are added as annotations to all
// static objects to order the constuctors appropriately.
Index: packages/net/ns/dns/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos-opt/net/net/ns/dns/current/ChangeLog,v
retrieving revision 1.20
diff -u -r1.20 ChangeLog
--- packages/net/ns/dns/current/ChangeLog 30 Jul 2005 11:26:29 -0000 1.20
+++ packages/net/ns/dns/current/ChangeLog 19 May 2006 10:13:31 -0000
@@ -1,3 +1,7 @@
+2006-05-19 Andrew Lunn <andrew.lunn@ascom.ch>
+
+ * tests/dns1.c (dns_test_thread): Use CYG_NELEM from infra.
+
2005-07-29 Andrew Lunn <andrew.lunn@ascom.ch>
* src/dns.c Various casts and type fixes to stop gcc 4 warnings.
Index: packages/net/ns/dns/current/tests/dns1.c
===================================================================
RCS file: /cvs/ecos/ecos-opt/net/net/ns/dns/current/tests/dns1.c,v
retrieving revision 1.8
diff -u -r1.8 dns1.c
--- packages/net/ns/dns/current/tests/dns1.c 30 Jul 2005 11:26:29 -0000 1.8
+++ packages/net/ns/dns/current/tests/dns1.c 19 May 2006 10:13:32 -0000
@@ -67,8 +67,6 @@
static cyg_thread thread_data;
static cyg_handle_t thread_handle;
-#define NELEM(x) (sizeof(x) / sizeof(x[0]))
-
struct test_info_s {
char * dns_server_v4;
char * dns_server_v6;
@@ -908,7 +906,7 @@
CYG_TEST_INFO("Starting dns1 test");
- for (i = 0; i < NELEM(test_info); i++) {
+ for (i = 0; i < CYG_NELEM(test_info); i++) {
dns_test(&test_info[i]);
}
Index: packages/net/bsd_tcpip/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos-opt/net/net/bsd_tcpip/current/ChangeLog,v
retrieving revision 1.59
diff -u -r1.59 ChangeLog
--- packages/net/bsd_tcpip/current/ChangeLog 8 May 2006 17:21:36 -0000 1.59
+++ packages/net/bsd_tcpip/current/ChangeLog 19 May 2006 10:13:33 -0000
@@ -1,3 +1,7 @@
+2006-05-19 Andrew Lunn <andrew.lunn@ascom.ch>
+
+ * tests/sysctl1.c: Use CYG_NELEM from infra.
+
2006-05-08 Andy Jackson <andy@grapevinetech.co.uk>
* src/ecos/support.c (cyg_net_show_mbufs): Use %p in diag_printf
Index: packages/net/bsd_tcpip/current/tests/sysctl1.c
===================================================================
RCS file: /cvs/ecos/ecos-opt/net/net/bsd_tcpip/current/tests/sysctl1.c,v
retrieving revision 1.2
diff -u -r1.2 sysctl1.c
--- packages/net/bsd_tcpip/current/tests/sysctl1.c 2 Jun 2004 07:33:33 -0000 1.2
+++ packages/net/bsd_tcpip/current/tests/sysctl1.c 19 May 2006 10:13:34 -0000
@@ -33,9 +33,6 @@
#include <sys/sysctl.h>
#include <cyg/infra/testcase.h>
-#ifndef NELEM
-#define NELEM(x) sizeof(x)/sizeof(*x)
-#endif
#define STACK_SIZE (CYGNUM_HAL_STACK_SIZE_TYPICAL + 0x1000)
static char stack[STACK_SIZE];
@@ -65,7 +62,7 @@
/* Test the OID to name function of sysctl*/
oldbuffsize = sizeof(oldbuff);
- ret = sysctl(mib_name_debug_name, NELEM(mib_name_debug_name),
+ ret = sysctl(mib_name_debug_name, CYG_NELEM(mib_name_debug_name),
oldbuff, &oldbuffsize, NULL, 0);
if (ret == -1) CYG_TEST_FAIL("sysclt(mib_name) failed");
CYG_TEST_INFO(oldbuff);
@@ -73,7 +70,7 @@
/* Test the name to OID function of sysclt */
oldbuffsize = sizeof(oldbuff);
- ret = sysctl(mib_name2oid, NELEM(mib_name2oid), oldbuff, &oldbuffsize,
+ ret = sysctl(mib_name2oid, CYG_NELEM(mib_name2oid), oldbuff, &oldbuffsize,
name2oid, sizeof(name2oid));
if (ret == -1) CYG_TEST_FAIL("sysclt(mib_name) failed");
CYG_TEST_PASS_FAIL(((ret == 8 ) &&
@@ -82,8 +79,8 @@
"sysctl.name2oid");
/* Walk the table using the next function of sysclt */
- num_elem = NELEM(mib_next)+1;
- new_oid = mib + NELEM(mib_next);
+ num_elem = CYG_NELEM(mib_next)+1;
+ new_oid = mib + CYG_NELEM(mib_next);
mib[2] = 0;
do {
memcpy(mib,mib_next,sizeof(mib_next));
@@ -97,7 +94,7 @@
}
}
p = pbuff;
- num_elem = NELEM(mib_next) + (ret / 4);
+ num_elem = CYG_NELEM(mib_next) + (ret / 4);
i=0;
while (ret > 0) {
p+=diag_sprintf(p, "%d ",new_oid[i++]);
@@ -166,7 +163,7 @@
} while (ret != -1);
/* Tests for sysctlnametomib */
- num_elem = NELEM(mib);
+ num_elem = CYG_NELEM(mib);
ret = sysctlnametomib(name2oid, mib,&num_elem);
if (ret == -1) CYG_TEST_FAIL("sysctlnametomib failed");
CYG_TEST_PASS_FAIL(((num_elem == 2 ) &&
@@ -180,7 +177,7 @@
CYG_TEST_PASS_FAIL((ret == -1) && (errno = ENOMEM),
"sysctlnametooid2");
/* This time with an unknown name */
- num_elem = NELEM(mib);
+ num_elem = CYG_NELEM(mib);
ret = sysctlnametomib("unknown.unknown", mib,&num_elem);
CYG_TEST_PASS_FAIL((ret == -1) && (errno = ENOENT),
"sysctlnametooid3");
Index: packages/kernel/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/kernel/current/ChangeLog,v
retrieving revision 1.134
diff -u -r1.134 ChangeLog
--- packages/kernel/current/ChangeLog 9 May 2006 16:12:53 -0000 1.134
+++ packages/kernel/current/ChangeLog 19 May 2006 10:13:40 -0000
@@ -1,3 +1,8 @@
+2006-05-19 Andrew Lunn <andrew.lunn@ascom.ch>
+
+ * host/instr/dump_instr.c: Use CYG_NELEM from infra.
+ * src/instrmnt/meminst.cxx: Use CYG_NELEM from infra.
+
2006-05-09 Andrew Lunn <andrew.lunn@ascom.ch>
* tests/stress_threads.c: Add string.h to avoid compiler warning.
Index: packages/kernel/current/host/instr/dump_instr.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/kernel/current/host/instr/dump_instr.c,v
retrieving revision 1.3
diff -u -r1.3 dump_instr.c
--- packages/kernel/current/host/instr/dump_instr.c 12 Dec 2002 18:31:42 -0000 1.3
+++ packages/kernel/current/host/instr/dump_instr.c 19 May 2006 10:13:40 -0000
@@ -1,4 +1,3 @@
-
#include <pkgconf/kernel.h>
#include <cyg/kernel/ktypes.h> // base kernel types
#include <cyg/kernel/instrmnt.h>
@@ -23,7 +22,7 @@
#ifdef CYGDBG_KERNEL_INSTRUMENT_MSGS
#define CYGDBG_KERNEL_INSTRUMENT_MSGS_DEFINE_TABLE
#include <cyg/kernel/instrument_desc.h>
-#define NELEM(x) (sizeof(x)/sizeof*(x))
+
externC char * cyg_instrument_msg(CYG_WORD16 type) {
struct instrument_desc_s *record;
@@ -31,7 +30,7 @@
CYG_WORD cl, event;
record = instrument_desc;
- end_record = &instrument_desc[NELEM(instrument_desc)-1];
+ end_record = &instrument_desc[CYG_NELEM(instrument_desc)-1];
cl = type & 0xff00;
event = type & 0x00ff;
Index: packages/kernel/current/src/instrmnt/meminst.cxx
===================================================================
RCS file: /cvs/ecos/ecos/packages/kernel/current/src/instrmnt/meminst.cxx,v
retrieving revision 1.10
diff -u -r1.10 meminst.cxx
--- packages/kernel/current/src/instrmnt/meminst.cxx 12 Dec 2002 18:31:50 -0000 1.10
+++ packages/kernel/current/src/instrmnt/meminst.cxx 19 May 2006 10:13:40 -0000
@@ -226,7 +226,7 @@
#ifdef CYGDBG_KERNEL_INSTRUMENT_MSGS
#define CYGDBG_KERNEL_INSTRUMENT_MSGS_DEFINE_TABLE
#include <cyg/kernel/instrument_desc.h>
-#define NELEM(x) (sizeof(x)/sizeof*(x))
+
externC char * cyg_instrument_msg(CYG_WORD16 type) {
struct instrument_desc_s *record;
@@ -234,7 +234,7 @@
CYG_WORD cl, event;
record = instrument_desc;
- end_record = &instrument_desc[NELEM(instrument_desc)-1];
+ end_record = &instrument_desc[CYG_NELEM(instrument_desc)-1];
cl = type & 0xff00;
event = type & 0x00ff;
More information about the Ecos-patches
mailing list