qio: Add non-blocking queues
[akaros.git] / kern / include / ns.h
index d102584..dd289dc 100644 (file)
@@ -607,6 +607,7 @@ enum {
        Qcoalesce = (1 << 4),   /* coallesce packets on read */
        Qkick = (1 << 5),       /* always call the kick routine after qwrite */
        Qdropoverflow = (1 << 6),       /* writes that would block will be dropped */
        Qcoalesce = (1 << 4),   /* coallesce packets on read */
        Qkick = (1 << 5),       /* always call the kick routine after qwrite */
        Qdropoverflow = (1 << 6),       /* writes that would block will be dropped */
+       Qnonblock = (1 << 7),   /* do not block, throw EAGAIN */
 };
 
 #define DEVDOTDOT -1
 };
 
 #define DEVDOTDOT -1
@@ -816,6 +817,7 @@ int qisclosed(struct queue *);
 int qiwrite(struct queue *, void *, int);
 int qlen(struct queue *);
 void qdropoverflow(struct queue *, bool);
 int qiwrite(struct queue *, void *, int);
 int qlen(struct queue *);
 void qdropoverflow(struct queue *, bool);
+void qnonblock(struct queue *, bool);
 struct queue *qopen(int unused_int, int, void (*)(void *), void *);
 int qpass(struct queue *, struct block *);
 int qpassnolim(struct queue *, struct block *);
 struct queue *qopen(int unused_int, int, void (*)(void *), void *);
 int qpass(struct queue *, struct block *);
 int qpassnolim(struct queue *, struct block *);