On Sun, 2009-04-19 at 22:16 -0500, Dick Hollenbeck wrote:
[snip]
> -int ft2232_read(u8* buf, int size, u32* bytes_read)
> +int ft2232_read(u8* buf, u32 size, u32* bytes_read)
>
>
> I would simply make that
>
> int ft2232_read(u8* buf, unsigned size, u32* bytes_read)
>
> or even
>
> int ft2232_read(u8* buf, unsigned size, unsigned* bytes_read)
>
>
> If we don't need the "32 bitness", it is best to let the compiler, and
> the programmer, use the machine's natural size. int and unsigned are
> simple.
>
> On a 64 bit machine, the "unsigned" and the "int" goes to 64 bits, but
> that is its natural size, and is generally the most efficient, easier
> than accessing 32 bits.
>
> Microsoft was insidious about injecting needless types into C and C++
> code. When Java was designed, they made a point of slapping that idea
> in the face.
>
> u8* is cool, we need unsigned bytes.
>
> u32 is cool, but only when you have to have the variable be 32 bits
> wide, otherwise int or unsigned are better IMO when you don't care if
> it is 32 bits or 64 bits. The 64 bit days are here.
I have attached what I hope can be the final version of this patch,
addressing your immediate point in the least invasive manner possible.
While I too would like to move toward proper 32/64-bit portability,
changing the third argument for ft2232_read would require also touching
all of its callers for an unnecessary change (from the perspective of
the intended goal). I have left it alone for now, but I agree it (and
all of its cousins in other drivers) needs to be revisited.
Cheers,
Zach
Index: src/jtag/bitq.c
===================================================================
--- src/jtag/bitq.c (revision 1475)
+++ src/jtag/bitq.c (working copy)
@@ -39,7 +39,7 @@
bitq_state_t bitq_in_state; /* state of input queue */
u8* bitq_in_buffer; /* buffer dynamically reallocated as needed */
-unsigned long bitq_in_bufsize = 32; /* min. buffer size */
+int bitq_in_bufsize = 32; /* min. buffer size */
/*
* input queue processing does not use jtag_read_buffer() to avoid unnecessary overhead
Index: src/jtag/presto.c
===================================================================
--- src/jtag/presto.c (revision 1475)
+++ src/jtag/presto.c (working copy)
@@ -138,7 +138,7 @@
0x80, 0xA0, 0xA8, 0xB0, 0xC0, 0xE0
};
-int presto_write(u8 *buf, int size)
+int presto_write(u8 *buf, unsigned size)
{
#if BUILD_PRESTO_FTD2XX == 1
DWORD ftbytes;
@@ -160,14 +160,14 @@
if (ftbytes != size)
{
- LOG_ERROR("couldn't write the requested number of bytes to PRESTO (%i < %i)", ftbytes, size);
+ LOG_ERROR("couldn't write the requested number of bytes to PRESTO (%u < %u)", (unsigned)ftbytes, size);
return ERROR_JTAG_DEVICE_ERROR;
}
return ERROR_OK;
}
-int presto_read(u8* buf, int size)
+int presto_read(u8* buf, unsigned size)
{
#if BUILD_PRESTO_FTD2XX == 1
DWORD ftbytes;
@@ -202,7 +202,7 @@
if (ftbytes != size)
{
/* this is just a warning, there might have been timeout when detecting PRESTO, which is not fatal */
- LOG_WARNING("couldn't read the requested number of bytes from PRESTO (%i < %i)", ftbytes, size);
+ LOG_WARNING("couldn't read the requested number of bytes from PRESTO (%u < %u)", (unsigned)ftbytes, size);
return ERROR_JTAG_DEVICE_ERROR;
}
@@ -212,7 +212,7 @@
#if BUILD_PRESTO_FTD2XX == 1
int presto_open_ftd2xx(char *req_serial)
{
- int i;
+ unsigned i;
DWORD numdevs;
DWORD vidpid;
char devname[FT_DEVICE_NAME_LEN];
@@ -238,7 +238,7 @@
return ERROR_JTAG_DEVICE_ERROR;
}
- LOG_DEBUG("FTDI devices available: %i", numdevs);
+ LOG_DEBUG("FTDI devices available: %lu", numdevs);
for (i = 0; i < numdevs; i++)
{
if ((presto->status = FT_Open(i, &(presto->handle))) != FT_OK)
@@ -257,7 +257,7 @@
break;
}
else
- LOG_DEBUG("FT_GetDeviceInfo failed: %i", presto->status);
+ LOG_DEBUG("FT_GetDeviceInfo failed: %lu", presto->status);
LOG_DEBUG("FTDI device %i does not match, closing", i);
FT_Close(presto->handle);
Index: src/jtag/ft2232.c
===================================================================
--- src/jtag/ft2232.c (revision 1475)
+++ src/jtag/ft2232.c (working copy)
@@ -158,7 +158,7 @@
{ "stm32stick", stm32stick_init, stm32stick_reset, NULL },
{ "axm0432_jtag", axm0432_jtag_init, axm0432_jtag_reset, NULL },
{"sheevaplug", sheevaplug_init, sheevaplug_reset, NULL },
- { NULL, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
};
static u8 nTRST, nTRSTnOE, nSRST, nSRSTnOE;
@@ -233,7 +233,7 @@
}
-int ft2232_read(u8* buf, int size, u32* bytes_read)
+int ft2232_read(u8* buf, unsigned size, u32* bytes_read)
{
#if BUILD_FT2232_FTD2XX == 1
DWORD dw_bytes_read;
@@ -1607,7 +1607,7 @@
if (status == FT_OK)
{
char** desc_array = malloc( sizeof(char*) * (num_devices + 1) );
- int i;
+ unsigned i;
for (i = 0; i < num_devices; i++)
desc_array[i] = malloc(64);
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development