Lines Matching refs:dev

38 	struct  mISDNtimerdev	*dev;  member
46 struct mISDNtimerdev *dev; in mISDN_open() local
50 dev = kmalloc(sizeof(struct mISDNtimerdev) , GFP_KERNEL); in mISDN_open()
51 if (!dev) in mISDN_open()
53 dev->next_id = 1; in mISDN_open()
54 INIT_LIST_HEAD(&dev->pending); in mISDN_open()
55 INIT_LIST_HEAD(&dev->expired); in mISDN_open()
56 spin_lock_init(&dev->lock); in mISDN_open()
57 dev->work = 0; in mISDN_open()
58 init_waitqueue_head(&dev->wait); in mISDN_open()
59 filep->private_data = dev; in mISDN_open()
66 struct mISDNtimerdev *dev = filep->private_data; in mISDN_close() local
67 struct list_head *list = &dev->pending; in mISDN_close()
73 spin_lock_irq(&dev->lock); in mISDN_close()
76 spin_unlock_irq(&dev->lock); in mISDN_close()
78 spin_lock_irq(&dev->lock); in mISDN_close()
83 spin_unlock_irq(&dev->lock); in mISDN_close()
85 list_for_each_entry_safe(timer, next, &dev->expired, list) { in mISDN_close()
88 kfree(dev); in mISDN_close()
95 struct mISDNtimerdev *dev = filep->private_data; in mISDN_read() local
96 struct list_head *list = &dev->expired; in mISDN_read()
107 spin_lock_irq(&dev->lock); in mISDN_read()
108 while (list_empty(list) && (dev->work == 0)) { in mISDN_read()
109 spin_unlock_irq(&dev->lock); in mISDN_read()
112 wait_event_interruptible(dev->wait, (dev->work || in mISDN_read()
116 spin_lock_irq(&dev->lock); in mISDN_read()
118 if (dev->work) in mISDN_read()
119 dev->work = 0; in mISDN_read()
123 spin_unlock_irq(&dev->lock); in mISDN_read()
130 spin_unlock_irq(&dev->lock); in mISDN_read()
138 struct mISDNtimerdev *dev = filep->private_data; in mISDN_poll() local
143 if (dev) { in mISDN_poll()
144 poll_wait(filep, &dev->wait, wait); in mISDN_poll()
146 if (dev->work || !list_empty(&dev->expired)) in mISDN_poll()
150 dev->work, list_empty(&dev->expired)); in mISDN_poll()
161 spin_lock_irqsave(&timer->dev->lock, flags); in dev_expire_timer()
163 list_move_tail(&timer->list, &timer->dev->expired); in dev_expire_timer()
164 wake_up_interruptible(&timer->dev->wait); in dev_expire_timer()
165 spin_unlock_irqrestore(&timer->dev->lock, flags); in dev_expire_timer()
169 misdn_add_timer(struct mISDNtimerdev *dev, int timeout) in misdn_add_timer() argument
175 dev->work = 1; in misdn_add_timer()
176 wake_up_interruptible(&dev->wait); in misdn_add_timer()
182 timer->dev = dev; in misdn_add_timer()
184 spin_lock_irq(&dev->lock); in misdn_add_timer()
185 id = timer->id = dev->next_id++; in misdn_add_timer()
186 if (dev->next_id < 0) in misdn_add_timer()
187 dev->next_id = 1; in misdn_add_timer()
188 list_add_tail(&timer->list, &dev->pending); in misdn_add_timer()
191 spin_unlock_irq(&dev->lock); in misdn_add_timer()
197 misdn_del_timer(struct mISDNtimerdev *dev, int id) in misdn_del_timer() argument
201 spin_lock_irq(&dev->lock); in misdn_del_timer()
202 list_for_each_entry(timer, &dev->pending, list) { in misdn_del_timer()
206 spin_unlock_irq(&dev->lock); in misdn_del_timer()
212 spin_unlock_irq(&dev->lock); in misdn_del_timer()
219 struct mISDNtimerdev *dev = filep->private_data; in mISDN_ioctl() local
233 id = misdn_add_timer(dev, tout); in mISDN_ioctl()
251 id = misdn_del_timer(dev, id); in mISDN_ioctl()