Lines Matching refs:dev

165 InitPackets(VirtioInputDevice* dev, uint32 count)
167 TRACE("InitPackets(%p, %" B_PRIu32 ")\n", dev, count);
170 dev->packetArea.SetTo(create_area("VirtIO input packets",
171 (void**)&dev->packets, B_ANY_KERNEL_ADDRESS, size,
173 if (!dev->packetArea.IsSet()) {
179 if (get_memory_map(dev->packets, size, &pe, 1) < B_OK) {
183 dev->physAdr = pe.address;
184 memset(dev->packets, 0, size);
186 dprintf(" virt: %p\n", dev->packets);
187 dprintf(" phys: %p\n", (void*)dev->physAdr);
189 dev->packetCnt = count;
191 dev->freePackets = 0;
192 for (uint32 i = 0; i < dev->packetCnt - 1; i++)
193 dev->packets[i].next = i + 1;
194 dev->packets[dev->packetCnt - 1].next = -1;
196 dev->readyPackets = -1;
197 dev->lastReadyPacket = -1;
202 PacketPhysEntry(VirtioInputDevice* dev, Packet* pkt)
205 pe.address = dev->physAdr + (uint8*)pkt - (uint8*)dev->packets;
212 ScheduleReadyPacket(VirtioInputDevice* dev, Packet* pkt)
214 if (dev->readyPackets < 0)
215 dev->readyPackets = pkt - dev->packets;
217 dev->packets[dev->lastReadyPacket].next = pkt - dev->packets;
219 dev->lastReadyPacket = pkt - dev->packets;
224 ConsumeReadyPacket(VirtioInputDevice* dev)
226 if (dev->readyPackets < 0)
228 Packet* pkt = &dev->packets[dev->readyPackets];
229 dev->readyPackets = pkt->next;
230 if (dev->readyPackets < 0)
231 dev->lastReadyPacket = -1;
240 VirtioInputDevice* dev = (VirtioInputDevice*)cookie;
243 while (dev->virtio->queue_dequeue(dev->virtio_queue, (void**)&pkt, NULL)) {
245 TRACE("%" B_PRIdSSIZE ": ", pkt - dev->packets);
249 ScheduleReadyPacket(dev, pkt);
250 release_sem_etc(dev->sem_cb.Get(), 1, B_DO_NOT_RESCHEDULE);