--- a/drivers/unix/unix.c Tue Apr 29 13:54:23 2008 +0200
+++ b/drivers/unix/unix.c Fri May 02 17:30:37 2008 +0200
@@ -190,12 +190,8 @@
canports[i].used = 1;
canports[i].fd = fd0;
canports[i].d = d;
-
+ d->canHandle = (CAN_PORT)&canports[i];
CreateReceiveTask(&(canports[i]), &canports[i].receiveTask, &canReceiveLoop);
-
- EnterMutex();
- d->canHandle = (CAN_PORT)&canports[i];
- LeaveMutex();
return (CAN_PORT)&canports[i];
}else{
MSG("CanOpen : Cannot open board {busname='%s',baudrate='%s'}\n",board->busname, board->baudrate);
@@ -211,12 +207,10 @@
int canClose(CO_Data * d)
{
UNS8 res;
-
- EnterMutex();
+
((CANPort*)d->canHandle)->used = 0;
CANPort* tmp = (CANPort*)d->canHandle;
d->canHandle = NULL;
- LeaveMutex();
// close CAN port
res = DLL_CALL(canClose)(tmp->fd);