Changeset 970f6e1 in mainline for uspace/drv/hid/usbhid/main.c
- Timestamp:
- 2018-01-09T18:25:56Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4793023
- Parents:
- c386d6d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/hid/usbhid/main.c
rc386d6d r970f6e1 40 40 #include <errno.h> 41 41 #include <str_error.h> 42 #include <fibril_synch.h> 42 43 43 44 #include <usb/dev/driver.h> … … 98 99 /* Delay */ 99 100 -1, 101 /* Callback when the polling fails. */ 102 usb_hid_polling_error_callback, 100 103 /* Callback when the polling ends. */ 101 104 usb_hid_polling_ended_callback, … … 128 131 assert(hid_dev); 129 132 130 /* TODO: Stop device polling prior to deinit. Now it fails on endpoint error. */ 131 133 usb_log_debug2("%s will be removed, setting remove flag.\n", usb_device_get_name(dev)); 134 usb_hid_prepare_deinit(hid_dev); 135 136 return EOK; 137 } 138 139 /** 140 * Callback for when a device has just been from the driver. 141 * 142 * @param dev Structure representing the device. 143 * @return Error code. 144 */ 145 static int usb_hid_device_removed(usb_device_t *dev) 146 { 147 assert(dev); 148 usb_hid_dev_t *hid_dev = usb_device_data_get(dev); 149 assert(hid_dev); 150 151 /* Join polling fibril. */ 152 fibril_mutex_lock(&hid_dev->guard); 153 while (hid_dev->running) 154 fibril_condvar_wait(&hid_dev->poll_end, &hid_dev->guard); 155 fibril_mutex_unlock(&hid_dev->guard); 156 157 /* Clean up. */ 132 158 usb_hid_deinit(hid_dev); 133 159 usb_log_debug2("%s destruction complete.\n", usb_device_get_name(dev)); 160 134 161 return EOK; 135 162 } … … 165 192 .device_add = usb_hid_device_add, 166 193 .device_remove = usb_hid_device_remove, 194 .device_removed = usb_hid_device_removed, 167 195 .device_gone = usb_hid_device_gone, 168 196 };
Note:
See TracChangeset
for help on using the changeset viewer.