* renamed remove_device() to delete_device()
* handle one more allocation failure in device_added * improved style consistency in a few places git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23409 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -281,6 +281,9 @@ static const char *sKeyboardBaseName = "input/keyboard/usb/";
|
|||||||
static const char *sMouseBaseName = "input/mouse/usb/";
|
static const char *sMouseBaseName = "input/mouse/usb/";
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - support functions
|
||||||
|
|
||||||
|
|
||||||
hid_device_info *
|
hid_device_info *
|
||||||
create_device(const usb_device *dev, const usb_interface_info *ii,
|
create_device(const usb_device *dev, const usb_interface_info *ii,
|
||||||
uint16 ifno, bool isKeyboard)
|
uint16 ifno, bool isKeyboard)
|
||||||
@@ -364,7 +367,7 @@ create_device(const usb_device *dev, const usb_interface_info *ii,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
remove_device(hid_device_info *device)
|
delete_device(hid_device_info *device)
|
||||||
{
|
{
|
||||||
assert(device != NULL);
|
assert(device != NULL);
|
||||||
|
|
||||||
@@ -575,7 +578,7 @@ interpret_mouse_buffer(hid_device_info *device)
|
|||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
callback: got a report, issue next request
|
callback: got a report, unblock input server thread in hid_device_control()
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
usb_callback(void *cookie, status_t busStatus,
|
usb_callback(void *cookie, status_t busStatus,
|
||||||
@@ -592,6 +595,7 @@ usb_callback(void *cookie, status_t busStatus,
|
|||||||
release_sem_etc(device->sem_cb, 1, B_DO_NOT_RESCHEDULE);
|
release_sem_etc(device->sem_cb, 1, B_DO_NOT_RESCHEDULE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
schedule_interrupt_transfer(hid_device_info* device)
|
schedule_interrupt_transfer(hid_device_info* device)
|
||||||
{
|
{
|
||||||
@@ -604,6 +608,7 @@ schedule_interrupt_transfer(hid_device_info* device)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
handle_interrupt_transfer(hid_device_info* device)
|
handle_interrupt_transfer(hid_device_info* device)
|
||||||
{
|
{
|
||||||
@@ -614,6 +619,7 @@ handle_interrupt_transfer(hid_device_info* device)
|
|||||||
DPRINTF_ERR((MY_ID "bus status %d\n", (int)device->bus_status));
|
DPRINTF_ERR((MY_ID "bus status %d\n", (int)device->bus_status));
|
||||||
if (status == B_CANCELED) {
|
if (status == B_CANCELED) {
|
||||||
/* cancelled: device is unplugged */
|
/* cancelled: device is unplugged */
|
||||||
|
device->active = false;
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -713,6 +719,9 @@ hid_device_added(const usb_device *dev, void **cookie)
|
|||||||
|
|
||||||
desc_len = sizeof(usb_hid_descriptor);
|
desc_len = sizeof(usb_hid_descriptor);
|
||||||
hid_desc = malloc(desc_len);
|
hid_desc = malloc(desc_len);
|
||||||
|
if (hid_desc == NULL)
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
status = usb->send_request(dev,
|
status = usb->send_request(dev,
|
||||||
USB_REQTYPE_INTERFACE_IN | USB_REQTYPE_STANDARD,
|
USB_REQTYPE_INTERFACE_IN | USB_REQTYPE_STANDARD,
|
||||||
USB_REQUEST_GET_DESCRIPTOR,
|
USB_REQUEST_GET_DESCRIPTOR,
|
||||||
@@ -781,7 +790,7 @@ hid_device_added(const usb_device *dev, void **cookie)
|
|||||||
num_items = desc_len; /* XXX */
|
num_items = desc_len; /* XXX */
|
||||||
items = malloc(sizeof(decomp_item) * num_items);
|
items = malloc(sizeof(decomp_item) * num_items);
|
||||||
if (items == NULL) {
|
if (items == NULL) {
|
||||||
remove_device(device);
|
delete_device(device);
|
||||||
free(rep_desc);
|
free(rep_desc);
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
}
|
}
|
||||||
@@ -794,7 +803,7 @@ hid_device_added(const usb_device *dev, void **cookie)
|
|||||||
device->num_insns = num_items; /* XXX */
|
device->num_insns = num_items; /* XXX */
|
||||||
device->insns = malloc(sizeof (report_insn) * device->num_insns);
|
device->insns = malloc(sizeof (report_insn) * device->num_insns);
|
||||||
if (device->insns == NULL) {
|
if (device->insns == NULL) {
|
||||||
remove_device(device);
|
delete_device(device);
|
||||||
free(items);
|
free(items);
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
}
|
}
|
||||||
@@ -806,7 +815,7 @@ hid_device_added(const usb_device *dev, void **cookie)
|
|||||||
device->insns = realloc(device->insns, sizeof (report_insn)
|
device->insns = realloc(device->insns, sizeof (report_insn)
|
||||||
* device->num_insns);
|
* device->num_insns);
|
||||||
if (device->insns == NULL) {
|
if (device->insns == NULL) {
|
||||||
remove_device(device);
|
delete_device(device);
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -863,7 +872,7 @@ hid_device_removed(void *cookie)
|
|||||||
if (device->open == 0) {
|
if (device->open == 0) {
|
||||||
if (device->insns != NULL)
|
if (device->insns != NULL)
|
||||||
free(device->insns);
|
free(device->insns);
|
||||||
remove_device(device);
|
delete_device(device);
|
||||||
} else {
|
} else {
|
||||||
DPRINTF_INFO((MY_ID "%s still open\n", device->name));
|
DPRINTF_INFO((MY_ID "%s still open\n", device->name));
|
||||||
device->active = false;
|
device->active = false;
|
||||||
@@ -1069,7 +1078,7 @@ hid_device_free(driver_cookie *cookie)
|
|||||||
DPRINTF_INFO((MY_ID "removed %s\n", device->name));
|
DPRINTF_INFO((MY_ID "removed %s\n", device->name));
|
||||||
if (device->insns != NULL)
|
if (device->insns != NULL)
|
||||||
free(device->insns);
|
free(device->insns);
|
||||||
remove_device (device);
|
delete_device(device);
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
|||||||
@@ -103,9 +103,9 @@ extern const char *my_driver_name;
|
|||||||
extern const char* keyboard_base_name;
|
extern const char* keyboard_base_name;
|
||||||
extern const char* mouse_base_name;
|
extern const char* mouse_base_name;
|
||||||
|
|
||||||
hid_device_info *create_device(const usb_device *dev, const usb_interface_info *ii,
|
hid_device_info* create_device(const usb_device *dev,
|
||||||
uint16 ifno, bool is_keyboard);
|
const usb_interface_info *ii, uint16 ifno, bool is_keyboard);
|
||||||
void remove_device(hid_device_info *device);
|
void delete_device(hid_device_info *device);
|
||||||
|
|
||||||
/* devlist.c */
|
/* devlist.c */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user