Lines Matching refs:device

20 	pegasus_dev			*device;
176 pegasus_dev *device = NULL;
181 device = malloc(sizeof(pegasus_dev));
182 if (device == NULL)
185 memset(device, 0, sizeof(pegasus_dev));
187 device->sem_lock = sem = create_sem(1, DRIVER_NAME "_lock");
190 free(device);
194 device->rx_sem = sem = create_sem(1, DRIVER_NAME"_receive");
197 delete_sem(device->sem_lock);
198 free(device);
201 set_sem_owner(device->rx_sem, B_SYSTEM_TEAM);
203 device->rx_sem_cb = sem = create_sem(0, DRIVER_NAME"_receive_cb");
206 delete_sem(device->rx_sem);
207 delete_sem(device->sem_lock);
208 free(device);
211 set_sem_owner(device->rx_sem_cb, B_SYSTEM_TEAM);
213 device->tx_sem = sem = create_sem(1, DRIVER_NAME"_transmit");
215 delete_sem(device->sem_lock);
216 delete_sem(device->rx_sem);
217 delete_sem(device->rx_sem_cb);
218 free(device);
221 set_sem_owner(device->tx_sem, B_SYSTEM_TEAM);
223 device->tx_sem_cb = sem = create_sem(0, DRIVER_NAME"_transmit_cb");
225 delete_sem(device->sem_lock);
226 delete_sem(device->rx_sem);
227 delete_sem(device->rx_sem_cb);
228 delete_sem(device->tx_sem);
229 free(device);
232 set_sem_owner(device->tx_sem_cb, B_SYSTEM_TEAM);
234 device->number = sDeviceNumber++;
235 device->cookieMagic = PEGASUS_COOKIE_MAGIC;
236 sprintf(device->name, "%s%d", kBaseName, device->number);
237 device->dev = dev;
238 device->ifno = ifno;
239 device->open = 0;
240 device->open_fds = NULL;
241 device->aue_dying = false;
242 device->flags = 0;
243 device->maxframesize = 1514; // XXX is MAXIMUM_ETHERNET_FRAME_SIZE = 1518 too much?
245 return device;
250 remove_device(pegasus_dev *device)
252 ASSERT(device != NULL);
254 delete_sem(device->rx_sem);
255 delete_sem(device->tx_sem);
256 delete_sem(device->rx_sem_cb);
257 delete_sem(device->tx_sem_cb);
259 delete_sem(device->sem_lock);
261 free(device);
305 /* cancelled: device is unplugged */
325 /* cancelled: device is unplugged */
338 // #pragma mark - device hooks
344 pegasus_dev *device;
376 if ((device = create_device(dev, intf, ifno)) == NULL) {
381 device->aue_vendor = dev_desc->vendor_id;
382 device->aue_product = dev_desc->product_id;
387 device->aue_flags = aue_devs[i].aue_flags;
392 setup_endpoints(intf, device);
394 aue_attach(device);
397 device->macaddr[0], device->macaddr[1], device->macaddr[2],
398 device->macaddr[3], device->macaddr[4], device->macaddr[5]);
400 aue_init(device);
403 add_device_info(device);
405 *cookie = device;
406 DPRINTF_INFO("added %s\n", device->name);
414 pegasus_dev *device = cookie;
418 DPRINTF_INFO("device_removed(%s)\n", device->name);
420 aue_uninit(device);
422 usb->cancel_queued_transfers(device->pipe_in);
423 usb->cancel_queued_transfers(device->pipe_out);
424 usb->cancel_queued_transfers(device->pipe_intr);
425 remove_device_info(device);
427 if (device->open == 0) {
428 remove_device(device);
430 DPRINTF_INFO("%s still open\n", device->name);
431 AUE_LOCK(device);
432 device->aue_dying = true;
433 AUE_UNLOCK(device);
445 pegasus_dev *device;
452 if ((device = search_device_info(name)) == NULL)
457 if ((err = acquire_sem(device->sem_lock)) != B_OK) {
461 device->nonblocking = (flags & O_NONBLOCK) != 0;
463 cookie->device = device;
464 cookie->next = device->open_fds;
465 device->open_fds = cookie;
466 device->open++;
467 release_sem(device->sem_lock);
470 DPRINTF_INFO("device %s open (%d)\n", name, device->open);
483 DPRINTF_INFO("device %p read\n", cookie);
485 if (pegasus_checkdeviceinfo(dev = cookie->device) != B_OK) {
558 DPRINTF_INFO("device %p write %ld\n", cookie, *_length);
560 if (pegasus_checkdeviceinfo(dev = cookie->device) != B_OK) {
630 pegasus_dev *device;
633 device = cookie->device;
634 ASSERT(device != NULL);
637 if (device->aue_dying)
647 memcpy(arg, &device->macaddr, sizeof(device->macaddr));
653 device->nonblocking = true;
656 device->nonblocking = false;
677 DPRINTF_INFO("control() ETHER_GETFRAMESIZE, framesize = %ld (MTU = %ld)\n", device->maxframesize, device->maxframesize - ENET_HEADER_SIZE);
678 *(uint32*)arg = device->maxframesize;
693 pegasus_dev *device;
695 ASSERT(cookie != NULL && cookie->device != NULL);
696 device = cookie->device;
697 DPRINTF_INFO("close(%s)\n", device->name);
701 acquire_sem(device->sem_lock);
702 if (device->open_fds == cookie)
703 device->open_fds = cookie->next;
706 for (p = device->open_fds; p != NULL; p = p->next) {
713 --device->open;
714 release_sem(device->sem_lock);
723 pegasus_dev *device;
725 ASSERT(cookie != NULL && cookie->device != NULL);
726 device = cookie->device;
727 DPRINTF_INFO("free(%s)\n", device->name);
730 if (device->open > 0)
731 DPRINTF_INFO("%d opens left\n", device->open);
732 else if (device->aue_dying) {
733 DPRINTF_INFO("removed %s\n", device->name);
734 remove_device(device);
746 ** to receive device added and removed events