Changeset 91173333 in mainline for uspace/drv/hid/usbhid/main.c
- Timestamp:
- 2018-01-13T21:36:13Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- edc51615
- Parents:
- 8a0c52a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/hid/usbhid/main.c
r8a0c52a r91173333 40 40 #include <errno.h> 41 41 #include <str_error.h> 42 #include <fibril_synch.h>43 42 44 43 #include <usb/dev/driver.h> … … 117 116 } 118 117 118 static int join_and_clean(usb_device_t *dev) 119 { 120 assert(dev); 121 usb_hid_dev_t *hid_dev = usb_device_data_get(dev); 122 assert(hid_dev); 123 124 /* Join polling fibril. */ 125 usb_device_poll_join(hid_dev->polling); 126 127 /* Clean up. */ 128 usb_hid_deinit(hid_dev); 129 usb_log_info("%s destruction complete.\n", usb_device_get_name(dev)); 130 131 return EOK; 132 } 133 119 134 /** 120 135 * Callback for a device about to be removed from the driver. … … 129 144 assert(hid_dev); 130 145 131 usb_log_info("%s will be removed, setting remove flag.\n", usb_device_get_name(dev)); 132 usb_hid_prepare_deinit(hid_dev); 133 134 return EOK; 135 } 136 137 static int join_and_clean(usb_device_t *dev) 138 { 139 assert(dev); 140 usb_hid_dev_t *hid_dev = usb_device_data_get(dev); 141 assert(hid_dev); 142 143 /* Join polling fibril. */ 144 fibril_mutex_lock(&hid_dev->poll_guard); 145 while (hid_dev->running) 146 fibril_condvar_wait(&hid_dev->poll_cv, &hid_dev->poll_guard); 147 fibril_mutex_unlock(&hid_dev->poll_guard); 148 149 /* Clean up. */ 150 usb_hid_deinit(hid_dev); 151 usb_log_info("%s destruction complete.\n", usb_device_get_name(dev)); 152 153 return EOK; 154 } 155 156 /** 157 * Callback for when a device has just been from the driver. 158 * 159 * @param dev Structure representing the device. 160 * @return Error code. 161 */ 162 static int usb_hid_device_removed(usb_device_t *dev) 163 { 164 assert(dev); 165 usb_hid_dev_t *hid_dev = usb_device_data_get(dev); 166 assert(hid_dev); 167 168 usb_log_info("%s endpoints unregistered, joining polling fibril.\n", usb_device_get_name(dev)); 146 usb_log_info("Device %s removed.\n", usb_device_get_name(dev)); 169 147 return join_and_clean(dev); 170 148 } … … 182 160 assert(hid_dev); 183 161 184 usb_log_info("Device %s gone, joining the polling fibril.\n", usb_device_get_name(dev)); 185 usb_hid_prepare_deinit(hid_dev); 162 usb_log_info("Device %s gone.\n", usb_device_get_name(dev)); 186 163 return join_and_clean(dev); 187 164 } … … 191 168 .device_add = usb_hid_device_add, 192 169 .device_remove = usb_hid_device_remove, 193 .device_removed = usb_hid_device_removed,194 170 .device_gone = usb_hid_device_gone, 195 171 };
Note:
See TracChangeset
for help on using the changeset viewer.