wait_queue_head_t close_wait;
struct timer_list emptyTimer;
- struct mxser_mstatus GMStatus;
- struct moxaq_str temp_queue;
char chkPort;
char lineCtrl;
return (0);
case MOXA_GET_IOQUEUE: {
struct moxaq_str __user *argm = argp;
- struct moxa_port *p;
+ struct moxaq_str tmp;
for (i = 0; i < MAX_PORTS; i++, argm++) {
- p = &moxa_ports[i];
- memset(&p->temp_queue, 0, sizeof(p->temp_queue));
- if (p->chkPort) {
- p->temp_queue.inq = MoxaPortRxQueue(i);
- p->temp_queue.outq = MoxaPortTxQueue(i);
+ memset(&tmp, 0, sizeof(tmp));
+ if (moxa_ports[i].chkPort) {
+ tmp.inq = MoxaPortRxQueue(i);
+ tmp.outq = MoxaPortTxQueue(i);
}
- if (copy_to_user(argm, &p->temp_queue,
- sizeof(p->temp_queue)))
+ if (copy_to_user(argm, &tmp, sizeof(tmp)))
return -EFAULT;
}
return (0);
return 0;
case MOXA_GETMSTATUS: {
struct mxser_mstatus __user *argm = argp;
+ struct mxser_mstatus tmp;
struct moxa_port *p;
for (i = 0; i < MAX_PORTS; i++, argm++) {
p = &moxa_ports[i];
- p->GMStatus.ri = 0;
- p->GMStatus.dcd = 0;
- p->GMStatus.dsr = 0;
- p->GMStatus.cts = 0;
+ memset(&tmp, 0, sizeof(tmp));
if (!p->chkPort) {
goto copy;
} else {
status = MoxaPortLineStatus(p->port);
if (status & 1)
- p->GMStatus.cts = 1;
+ tmp.cts = 1;
if (status & 2)
- p->GMStatus.dsr = 1;
+ tmp.dsr = 1;
if (status & 4)
- p->GMStatus.dcd = 1;
+ tmp.dcd = 1;
}
if (!p->tty || !p->tty->termios)
- p->GMStatus.cflag = p->cflag;
+ tmp.cflag = p->cflag;
else
- p->GMStatus.cflag = p->tty->termios->c_cflag;
+ tmp.cflag = p->tty->termios->c_cflag;
copy:
- if (copy_to_user(argm, &p->GMStatus,
- sizeof(p->GMStatus)))
+ if (copy_to_user(argm, &tmp, sizeof(tmp)))
return -EFAULT;
}
return 0;