Re: [PATCH] ip2: fix compile warnings

From: Jim Nelson
Date: Fri Dec 17 2004 - 22:17:25 EST


Adrian Bunk wrote:
On Fri, Dec 17, 2004 at 03:47:13PM -0600, james4765@xxxxxxxxxxx wrote:


This fixes the following compile errors in the ip2 and ip2main drivers:

CC drivers/char/ip2main.o
drivers/char/ip2main.c:470: warning: initialization from incompatible pointer type
drivers/char/ip2main.c: In function `ip2_tiocmget':
drivers/char/ip2main.c:2004: warning: unused variable `wait'
drivers/char/ip2/i2lib.c: At top level:
drivers/char/ip2/i2cmd.c:142: warning: `ct89' defined but not used
drivers/char/ip2main.c:205: warning: `set_modem_info' declared `static' but never defined
drivers/char/ip2/i2ellis.c:108: warning: `iiEllisCleanup' defined but not used
...


This are not errors - they are only warnings.


--- linux-2.6.10-rc3-mm1-original/drivers/char/ip2main.c 2004-12-03 16:55:03.000000000 -0500
+++ linux-2.6.10-rc3-mm1/drivers/char/ip2main.c 2004-12-17 16:24:24.094730049 -0500
...
@@ -2001,7 +2000,6 @@
static int ip2_tiocmget(struct tty_struct *tty, struct file *file)
{
i2ChanStrPtr pCh = DevTable[tty->index];
- wait_queue_t wait;

if (pCh == NULL)
return -ENODEV;
@@ -2018,6 +2016,8 @@
/\/\|=mhw=|\/\/ */

#ifdef ENABLE_DSSNOW
+ wait_queue_t wait;
+
i2QueueCommands(PTYPE_BYPASS, pCh, 100, 1, CMD_DSS_NOW);

init_waitqueue_entry(&wait, current);


If someone will ever define ENABLE_DSSNOW your change broke compilation with gcc 2.95 (variable declaration mixed with code).


How about doing something like this:

#ifdef ENABLE_DSSNOW
#define DSSNOW_ENABLED 1
#else
#define DSSNOW_ENABLED 0
#endif

-blah-

static int ip2_tiocmget(struct tty_struct *tty, struct file *file)
{
i2ChanStrPtr pCh = DevTable[tty->index];

if (pCh == NULL)
return -ENODEV;

if (DSSNOW_ENABLED) {
if (ip2_tiocmget_dssnow() == -EINTR) return -EINTR;
}

return ((pCh->dataSetOut & I2_RTS) ? TIOCM_RTS : 0)
| ((pCh->dataSetOut & I2_DTR) ? TIOCM_DTR : 0)
| ((pCh->dataSetIn & I2_DCD) ? TIOCM_CAR : 0)
| ((pCh->dataSetIn & I2_RI) ? TIOCM_RNG : 0)
| ((pCh->dataSetIn & I2_DSR) ? TIOCM_DSR : 0)
| ((pCh->dataSetIn & I2_CTS) ? TIOCM_CTS : 0);
}

/*
FIXME - the following code is causing a NULL pointer dereference in
2.3.51 in an interrupt handler. It's suppose to prompt the board
to return the DSS signal status immediately. Why doesn't it do
the same thing in 2.2.14?
*/

/* This thing is still busted in the 1.2.12 driver on 2.4.x
and even hoses the serial console so the oops can be trapped.
/\/\|=mhw=|\/\/ */

static int ip2_tiocmget_dssnow (void)
{
wait_queue_t wait;

i2QueueCommands(PTYPE_BYPASS, pCh, 100, 1, CMD_DSS_NOW);

init_waitqueue_entry(&wait, current);
add_wait_queue(&pCh->dss_now_wait, &wait);
set_current_state( TASK_INTERRUPTIBLE );

serviceOutgoingFifo( pCh->pMyBord );

schedule();

set_current_state( TASK_RUNNING );
remove_wait_queue(&pCh->dss_now_wait, &wait);

if (signal_pending(current)) {
return -EINTR;
}

return 0;
}

cu
Adrian


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/