Welcome to The Fiwix Project
A UNIX-like kernel for the i386 architecture
q 48 drivers/char/tty_queue.c static struct cblock *insert_cblock_in_head(struct clist *q) q 52 drivers/char/tty_queue.c if(q->cb_num >= NR_CB_QUEUE) { q 63 drivers/char/tty_queue.c q->cb_num++; q 65 drivers/char/tty_queue.c if(!q->head) { q 66 drivers/char/tty_queue.c q->head = q->tail = cb; q 69 drivers/char/tty_queue.c cb->next = q->head; q 70 drivers/char/tty_queue.c q->head->prev = cb; q 71 drivers/char/tty_queue.c q->head = cb; q 76 drivers/char/tty_queue.c static struct cblock *insert_cblock_in_tail(struct clist *q) q 80 drivers/char/tty_queue.c if(q->cb_num >= NR_CB_QUEUE) { q 91 drivers/char/tty_queue.c q->cb_num++; q 93 drivers/char/tty_queue.c if(!q->tail) { q 94 drivers/char/tty_queue.c q->head = q->tail = cb; q 96 drivers/char/tty_queue.c cb->prev = q->tail; q 98 drivers/char/tty_queue.c q->tail->next = cb; q 99 drivers/char/tty_queue.c q->tail = cb; q 104 drivers/char/tty_queue.c static void delete_cblock_from_head(struct clist *q) q 108 drivers/char/tty_queue.c if(!q->head) { q 112 drivers/char/tty_queue.c tmp = q->head; q 113 drivers/char/tty_queue.c if(q->head == q->tail) { q 114 drivers/char/tty_queue.c q->head = q->tail = NULL; q 116 drivers/char/tty_queue.c q->head = q->head->next; q 117 drivers/char/tty_queue.c q->head->prev = NULL; q 120 drivers/char/tty_queue.c q->count -= tmp->end_off - tmp->start_off; q 121 drivers/char/tty_queue.c q->cb_num--; q 125 drivers/char/tty_queue.c static void delete_cblock_from_tail(struct clist *q) q 129 drivers/char/tty_queue.c if(!q->tail) { q 133 drivers/char/tty_queue.c tmp = q->tail; q 134 drivers/char/tty_queue.c if(q->head == q->tail) { q 135 drivers/char/tty_queue.c q->head = q->tail = NULL; q 137 drivers/char/tty_queue.c q->tail = q->tail->prev; q 138 drivers/char/tty_queue.c q->tail->next = NULL; q 141 drivers/char/tty_queue.c q->count -= tmp->end_off - tmp->start_off; q 142 drivers/char/tty_queue.c q->cb_num--; q 146 drivers/char/tty_queue.c int tty_queue_putchar(struct tty *tty, struct clist *q, unsigned char ch) q 154 drivers/char/tty_queue.c cb = q->tail; q 156 drivers/char/tty_queue.c cb = insert_cblock_in_tail(q); q 166 drivers/char/tty_queue.c q->count++; q 168 drivers/char/tty_queue.c } else if(insert_cblock_in_tail(q)) { q 169 drivers/char/tty_queue.c tty_queue_putchar(tty, q, ch); q 179 drivers/char/tty_queue.c int tty_queue_unputchar(struct clist *q) q 188 drivers/char/tty_queue.c cb = q->tail; q 193 drivers/char/tty_queue.c q->count--; q 196 drivers/char/tty_queue.c delete_cblock_from_tail(q); q 204 drivers/char/tty_queue.c unsigned char tty_queue_getchar(struct clist *q) q 213 drivers/char/tty_queue.c cb = q->head; q 218 drivers/char/tty_queue.c q->count--; q 221 drivers/char/tty_queue.c delete_cblock_from_head(q); q 229 drivers/char/tty_queue.c void tty_queue_flush(struct clist *q) q 235 drivers/char/tty_queue.c while(q->head != NULL) { q 236 drivers/char/tty_queue.c delete_cblock_from_head(q); q 242 drivers/char/tty_queue.c int tty_queue_room(struct clist *q) q 244 drivers/char/tty_queue.c return (NR_CB_QUEUE * CBSIZE) - q->count; q 25 include/fiwix/tty.h #define LAST_CHAR(q) ((q)->tail ? (q)->tail->data[(q)->tail->end_off - 1] : NULL) q 94 include/fiwix/tty.h int tty_queue_room(struct clist *q);