summaryrefslogtreecommitdiff
path: root/libusb/os
diff options
context:
space:
mode:
Diffstat (limited to 'libusb/os')
-rw-r--r--libusb/os/poll_windows.c10
-rw-r--r--libusb/os/poll_windows.h25
-rw-r--r--libusb/os/threads_windows.c2
-rw-r--r--libusb/os/threads_windows.h2
-rw-r--r--libusb/os/windows_winusb.c58
-rw-r--r--libusb/os/windows_winusb.h4
6 files changed, 69 insertions, 32 deletions
diff --git a/libusb/os/poll_windows.c b/libusb/os/poll_windows.c
index bd8ac67..afcc233 100644
--- a/libusb/os/poll_windows.c
+++ b/libusb/os/poll_windows.c
@@ -34,17 +34,15 @@
* with a fake pipe. The read/write functions are only meant to be used in that
* context.
*/
-#include <config.h>
-#include <assert.h>
+#include "libusbi.h"
+
#include <errno.h>
#include <intrin.h>
#include <malloc.h>
+#include <stdbool.h>
#include <stdlib.h>
-#include "libusbi.h"
-#include "windows_common.h"
-
// public fd data
const struct winfd INVALID_WINFD = { -1, NULL };
@@ -135,7 +133,7 @@ static int install_fd(struct file_descriptor *fd)
for (n = 0; n < fd_table_size; n += BITMAP_BITS_PER_WORD) {
unsigned int idx = n / BITMAP_BITS_PER_WORD;
- unsigned long mask, pos;
+ unsigned long mask, pos = 0UL;
mask = ~fd_table_bitmap[idx];
if (mask == 0UL)
diff --git a/libusb/os/poll_windows.h b/libusb/os/poll_windows.h
index c78c9d3..b2c94f9 100644
--- a/libusb/os/poll_windows.h
+++ b/libusb/os/poll_windows.h
@@ -67,23 +67,16 @@ int usbi_close(int fd);
/*
* Timeval operations
*/
-#if !defined(TIMESPEC_TO_TIMEVAL)
-#define TIMESPEC_TO_TIMEVAL(tv, ts) \
-do { \
- (tv)->tv_sec = (long)(ts)->tv_sec; \
- (tv)->tv_usec = (long)(ts)->tv_nsec / 1000; \
-} while (0)
-#endif
#if !defined(timersub)
-#define timersub(a, b, result) \
-do { \
- (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
- (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
- if ((result)->tv_usec < 0) { \
- --(result)->tv_sec; \
- (result)->tv_usec += 1000000; \
- } \
-} while (0)
+#define timersub(a, b, result) \
+ do { \
+ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
+ (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
+ if ((result)->tv_usec < 0L) { \
+ --(result)->tv_sec; \
+ (result)->tv_usec += 1000000L; \
+ } \
+ } while (0)
#endif
#endif
diff --git a/libusb/os/threads_windows.c b/libusb/os/threads_windows.c
index 81f7945..cf72694 100644
--- a/libusb/os/threads_windows.c
+++ b/libusb/os/threads_windows.c
@@ -21,8 +21,6 @@
#include "libusbi.h"
-#include <errno.h>
-
int usbi_cond_timedwait(usbi_cond_t *cond,
usbi_mutex_t *mutex, const struct timeval *tv)
{
diff --git a/libusb/os/threads_windows.h b/libusb/os/threads_windows.h
index 9bf8ff4..618c2f3 100644
--- a/libusb/os/threads_windows.h
+++ b/libusb/os/threads_windows.h
@@ -21,6 +21,8 @@
#ifndef LIBUSB_THREADS_WINDOWS_H
#define LIBUSB_THREADS_WINDOWS_H
+#include <errno.h>
+
#define USBI_MUTEX_INITIALIZER 0L
typedef LONG usbi_mutex_static_t;
static inline void usbi_mutex_static_lock(usbi_mutex_static_t *mutex)
diff --git a/libusb/os/windows_winusb.c b/libusb/os/windows_winusb.c
index 0279536..efc3f99 100644
--- a/libusb/os/windows_winusb.c
+++ b/libusb/os/windows_winusb.c
@@ -673,6 +673,8 @@ static void winusb_exit(struct libusb_context *ctx)
{
int i;
+ UNUSED(ctx);
+
for (i = 0; i < USB_API_MAX; i++) {
if (usb_api_backend[i].exit)
usb_api_backend[i].exit();
@@ -990,8 +992,8 @@ static int enumerate_hcd_root_hub(struct libusb_context *ctx, const char *dev_id
}
// Returns the api type, or 0 if not found/unsupported
-static void get_api_type(struct libusb_context *ctx, HDEVINFO *dev_info,
- SP_DEVINFO_DATA *dev_info_data, int *api, int *sub_api)
+static void get_api_type(HDEVINFO *dev_info, SP_DEVINFO_DATA *dev_info_data,
+ int *api, int *sub_api)
{
// Precedence for filter drivers vs driver is in the order of this array
struct driver_lookup lookup[3] = {
@@ -1367,7 +1369,7 @@ static int winusb_get_device_list(struct libusb_context *ctx, struct discovered_
dev_id, (unsigned int)install_state);
continue;
}
- get_api_type(ctx, dev_info, &dev_info_data, &api, &sub_api);
+ get_api_type(dev_info, &dev_info_data, &api, &sub_api);
break;
}
@@ -2031,7 +2033,7 @@ const struct windows_usb_api_backend usb_api_backend[USB_API_MAX] = {
pLibK_GetProcAddress((PVOID *)&WinUSBX[i].fn, i, KUSB_FNID_##fn); \
} while (0)
-#define NativeWinUSBOnly_Set(fn) \
+#define NativeWinUSBOnly_Set(fn) \
do { \
if (native_winusb) \
WinUSBX[i].fn = (WinUsb_##fn##_t)GetProcAddress(h, "WinUsb_" #fn); \
@@ -2900,6 +2902,8 @@ static int winusbx_clear_halt(int sub_api, struct libusb_device_handle *dev_hand
*/
static int winusbx_abort_control(int sub_api, struct usbi_transfer *itransfer)
{
+ UNUSED(sub_api);
+ UNUSED(itransfer);
// Cancelling of the I/O is done in the parent
return LIBUSB_SUCCESS;
}
@@ -3310,6 +3314,8 @@ static int _hid_get_report_descriptor(struct hid_device_priv *dev, void *data, s
static int _hid_get_descriptor(struct hid_device_priv *dev, HANDLE hid_handle, int recipient,
int type, int _index, void *data, size_t *size)
{
+ UNUSED(recipient);
+
switch (type) {
case LIBUSB_DT_DEVICE:
usbi_dbg("LIBUSB_DT_DEVICE");
@@ -3350,6 +3356,8 @@ static int _hid_get_report(struct hid_device_priv *dev, HANDLE hid_handle, int i
DWORD ioctl_code, read_size, expected_size = (DWORD)*size;
int r = LIBUSB_SUCCESS;
+ UNUSED(dev);
+
if (tp->hid_buffer != NULL)
usbi_dbg("program assertion failed: hid_buffer is not NULL");
@@ -3429,6 +3437,8 @@ static int _hid_set_report(struct hid_device_priv *dev, HANDLE hid_handle, int i
// If an id is reported, we must allow MAX_HID_REPORT_SIZE + 1
size_t max_report_size = MAX_HID_REPORT_SIZE + (id ? 1 : 0);
+ UNUSED(dev);
+
if (tp->hid_buffer != NULL)
usbi_dbg("program assertion failed: hid_buffer is not NULL");
@@ -3499,6 +3509,8 @@ static int _hid_class_request(struct hid_device_priv *dev, HANDLE hid_handle, in
int report_type = (value >> 8) & 0xFF;
int report_id = value & 0xFF;
+ UNUSED(_index);
+
if ((LIBUSB_REQ_RECIPIENT(request_type) != LIBUSB_RECIPIENT_INTERFACE)
&& (LIBUSB_REQ_RECIPIENT(request_type) != LIBUSB_RECIPIENT_DEVICE))
return LIBUSB_ERROR_INVALID_PARAM;
@@ -3518,6 +3530,8 @@ static int _hid_class_request(struct hid_device_priv *dev, HANDLE hid_handle, in
*/
static int hid_init(struct libusb_context *ctx)
{
+ UNUSED(ctx);
+
DLL_GET_HANDLE(hid);
DLL_LOAD_FUNC(hid, HidD_GetAttributes, TRUE);
@@ -3564,6 +3578,7 @@ static int hid_open(int sub_api, struct libusb_device_handle *dev_handle)
const char * const type[3] = {"input", "output", "feature"};
#endif
+ UNUSED(sub_api);
CHECK_HID_AVAILABLE;
if (priv->hid == NULL) {
@@ -3704,6 +3719,7 @@ static void hid_close(int sub_api, struct libusb_device_handle *dev_handle)
HANDLE file_handle;
int i;
+ UNUSED(sub_api);
if (!api_hid_available)
return;
@@ -3721,6 +3737,7 @@ static int hid_claim_interface(int sub_api, struct libusb_device_handle *dev_han
struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle);
struct winusb_device_priv *priv = _device_priv(dev_handle->dev);
+ UNUSED(sub_api);
CHECK_HID_AVAILABLE;
// NB: Disconnection detection is not possible in this function
@@ -3744,6 +3761,7 @@ static int hid_release_interface(int sub_api, struct libusb_device_handle *dev_h
struct winusb_device_handle_priv *handle_priv = _device_handle_priv(dev_handle);
struct winusb_device_priv *priv = _device_priv(dev_handle->dev);
+ UNUSED(sub_api);
CHECK_HID_AVAILABLE;
if (priv->usb_interface[iface].path == NULL)
@@ -3761,6 +3779,9 @@ static int hid_set_interface_altsetting(int sub_api, struct libusb_device_handle
{
struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev);
+ UNUSED(sub_api);
+ UNUSED(iface);
+
CHECK_HID_AVAILABLE;
if (altsetting > 255)
@@ -3788,6 +3809,7 @@ static int hid_submit_control_transfer(int sub_api, struct usbi_transfer *itrans
size_t size;
int r = LIBUSB_ERROR_INVALID_PARAM;
+ UNUSED(sub_api);
CHECK_HID_AVAILABLE;
safe_free(transfer_priv->hid_buffer);
@@ -3884,6 +3906,7 @@ static int hid_submit_bulk_transfer(int sub_api, struct usbi_transfer *itransfer
DWORD size;
int r = LIBUSB_SUCCESS;
+ UNUSED(sub_api);
CHECK_HID_AVAILABLE;
transfer_priv->hid_dest = NULL;
@@ -3967,6 +3990,7 @@ static int hid_abort_transfers(int sub_api, struct usbi_transfer *itransfer)
HANDLE hid_handle;
int current_interface;
+ UNUSED(sub_api);
CHECK_HID_AVAILABLE;
current_interface = transfer_priv->interface_number;
@@ -3992,6 +4016,7 @@ static int hid_reset_device(int sub_api, struct libusb_device_handle *dev_handle
HANDLE hid_handle;
int current_interface;
+ UNUSED(sub_api);
CHECK_HID_AVAILABLE;
// Flushing the queues on all interfaces is the best we can achieve
@@ -4012,6 +4037,7 @@ static int hid_clear_halt(int sub_api, struct libusb_device_handle *dev_handle,
HANDLE hid_handle;
int current_interface;
+ UNUSED(sub_api);
CHECK_HID_AVAILABLE;
current_interface = interface_by_endpoint(priv, handle_priv, endpoint);
@@ -4043,6 +4069,8 @@ static int hid_copy_transfer_data(int sub_api, struct usbi_transfer *itransfer,
int r = LIBUSB_TRANSFER_COMPLETED;
uint32_t corrected_size = io_size;
+ UNUSED(sub_api);
+
if (transfer_priv->hid_buffer != NULL) {
// If we have a valid hid_buffer, it means the transfer was async
if (transfer_priv->hid_dest != NULL) { // Data readout
@@ -4084,6 +4112,8 @@ static int composite_open(int sub_api, struct libusb_device_handle *dev_handle)
// SUB_API_MAX + 1 as the SUB_API_MAX pos is used to indicate availability of HID
bool available[SUB_API_MAX + 1] = { 0 };
+ UNUSED(sub_api);
+
for (i = 0; i < USB_MAXINTERFACES; i++) {
switch (priv->usb_interface[i].apib->id) {
case USB_API_WINUSBX:
@@ -4128,6 +4158,8 @@ static void composite_close(int sub_api, struct libusb_device_handle *dev_handle
// SUB_API_MAX + 1 as the SUB_API_MAX pos is used to indicate availability of HID
bool available[SUB_API_MAX + 1] = { 0 };
+ UNUSED(sub_api);
+
for (i = 0; i < USB_MAXINTERFACES; i++) {
switch (priv->usb_interface[i].apib->id) {
case USB_API_WINUSBX:
@@ -4155,6 +4187,7 @@ static int composite_claim_interface(int sub_api, struct libusb_device_handle *d
{
struct winusb_device_priv *priv = _device_priv(dev_handle->dev);
+ UNUSED(sub_api);
CHECK_SUPPORTED_API(priv->usb_interface[iface].apib, claim_interface);
return priv->usb_interface[iface].apib->
@@ -4165,6 +4198,7 @@ static int composite_set_interface_altsetting(int sub_api, struct libusb_device_
{
struct winusb_device_priv *priv = _device_priv(dev_handle->dev);
+ UNUSED(sub_api);
CHECK_SUPPORTED_API(priv->usb_interface[iface].apib, set_interface_altsetting);
return priv->usb_interface[iface].apib->
@@ -4175,6 +4209,7 @@ static int composite_release_interface(int sub_api, struct libusb_device_handle
{
struct winusb_device_priv *priv = _device_priv(dev_handle->dev);
+ UNUSED(sub_api);
CHECK_SUPPORTED_API(priv->usb_interface[iface].apib, release_interface);
return priv->usb_interface[iface].apib->
@@ -4190,6 +4225,8 @@ static int composite_submit_control_transfer(int sub_api, struct usbi_transfer *
WINUSB_SETUP_PACKET *setup = (WINUSB_SETUP_PACKET *)transfer->buffer;
int iface, pass, r;
+ UNUSED(sub_api);
+
// Interface shouldn't matter for control, but it does in practice, with Windows'
// restrictions with regards to accessing HID keyboards and mice. Try to target
// a specific interface first, if possible.
@@ -4252,6 +4289,8 @@ static int composite_submit_bulk_transfer(int sub_api, struct usbi_transfer *itr
struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev);
int current_interface;
+ UNUSED(sub_api);
+
current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint);
if (current_interface < 0) {
usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer");
@@ -4271,6 +4310,8 @@ static int composite_submit_iso_transfer(int sub_api, struct usbi_transfer *itra
struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev);
int current_interface;
+ UNUSED(sub_api);
+
current_interface = interface_by_endpoint(priv, handle_priv, transfer->endpoint);
if (current_interface < 0) {
usbi_err(ctx, "unable to match endpoint to an open interface - cancelling transfer");
@@ -4290,6 +4331,8 @@ static int composite_clear_halt(int sub_api, struct libusb_device_handle *dev_ha
struct winusb_device_priv *priv = _device_priv(dev_handle->dev);
int current_interface;
+ UNUSED(sub_api);
+
current_interface = interface_by_endpoint(priv, handle_priv, endpoint);
if (current_interface < 0) {
usbi_err(ctx, "unable to match endpoint to an open interface - cannot clear");
@@ -4309,6 +4352,8 @@ static int composite_abort_control(int sub_api, struct usbi_transfer *itransfer)
struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev);
int current_interface = transfer_priv->interface_number;
+ UNUSED(sub_api);
+
if ((current_interface < 0) || (current_interface >= USB_MAXINTERFACES)) {
usbi_err(TRANSFER_CTX(transfer), "program assertion failed: invalid interface_number");
return LIBUSB_ERROR_NOT_FOUND;
@@ -4327,6 +4372,8 @@ static int composite_abort_transfers(int sub_api, struct usbi_transfer *itransfe
struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev);
int current_interface = transfer_priv->interface_number;
+ UNUSED(sub_api);
+
if ((current_interface < 0) || (current_interface >= USB_MAXINTERFACES)) {
usbi_err(TRANSFER_CTX(transfer), "program assertion failed: invalid interface_number");
return LIBUSB_ERROR_NOT_FOUND;
@@ -4345,6 +4392,8 @@ static int composite_reset_device(int sub_api, struct libusb_device_handle *dev_
uint8_t i;
bool available[SUB_API_MAX];
+ UNUSED(sub_api);
+
for (i = 0; i < SUB_API_MAX; i++)
available[i] = false;
@@ -4372,6 +4421,7 @@ static int composite_copy_transfer_data(int sub_api, struct usbi_transfer *itran
struct winusb_device_priv *priv = _device_priv(transfer->dev_handle->dev);
int current_interface = transfer_priv->interface_number;
+ UNUSED(sub_api);
CHECK_SUPPORTED_API(priv->usb_interface[current_interface].apib, copy_transfer_data);
return priv->usb_interface[current_interface].apib->
diff --git a/libusb/os/windows_winusb.h b/libusb/os/windows_winusb.h
index 245b137..6ac39c3 100644
--- a/libusb/os/windows_winusb.h
+++ b/libusb/os/windows_winusb.h
@@ -27,12 +27,8 @@
#if defined(_MSC_VER)
// disable /W4 MSVC warnings that are benign
-#pragma warning(disable:4100) // unreferenced formal parameter
-#pragma warning(disable:4127) // conditional expression is constant
#pragma warning(disable:4201) // nameless struct/union
#pragma warning(disable:4214) // bit field types other than int
-#pragma warning(disable:4996) // deprecated API calls
-#pragma warning(disable:28159) // more deprecated API calls
#endif
// Missing from MSVC6 setupapi.h