#include <usb.h>
#include <signal.h>
#include <pthread.h>
+#include <errno.h>
#include "usb-driver.h"
static int (*ioctl_func) (int, int, void *) = NULL;
it->dwLost, it->fStopped);
it->fEnableOk = 1;
+ it->fStopped = 0;
ints_enabled = 1;
pthread_mutex_trylock(&int_wait);
}
it->dwCounter = 0;
it->fStopped = 1;
ints_enabled = 0;
- pthread_mutex_unlock(&int_wait);
+ if (pthread_mutex_trylock(&int_wait) == EBUSY)
+ pthread_mutex_unlock(&int_wait);
#endif
DPRINTF("Handle: %lu, Options: %lx, ncmds: %lu, enableok: %lu, count: %lu, lost: %lu, stopped: %lu\n",
it->hInterrupt, it->dwOptions,
argp = va_arg (args, void *);
va_end (args);
- if (fd == windrvrfd)
+ if (windrvrfd && (fd == windrvrfd))
ret = do_wdioctl(fd, request, argp);
else
ret = (*ioctl_func) (fd, request, argp);