#ifndef KERNEL_EQUEUE_H_ #define KERNEL_EQUEUE_H_ #include #include #include #include #define EQUEUE_PACKET_MAX 100 enum equeue_flags { EQUEUE_WAIT, EQUEUE_DISCARD, }; struct equeue { struct object eq_base; unsigned short eq_read_ptr, eq_write_ptr; equeue_packet_t eq_packets[EQUEUE_PACKET_MAX]; struct waitqueue eq_wq; }; extern kern_status_t equeue_type_init(void); extern struct equeue *equeue_cast(struct object *obj); extern struct equeue *equeue_create(void); extern kern_status_t equeue_enqueue( struct equeue *q, const equeue_packet_t *pkt, enum equeue_flags flags); extern kern_status_t equeue_dequeue(struct equeue *q, equeue_packet_t *out); #endif