Date: Wed, 14 May 2008 12:25:03 +0200 From: Matthias Apitz <matthias.apitz@oclc.org> To: freebsd-drivers@freebsd.org Subject: question about tty->t_outq && clist && cblock Message-ID: <20080514102503.GA5862@rebelion.Sisis.de>
next in thread | raw e-mail | index | archive | help
Hello, I've some small questions about the struct 'clist', 'cblock' and 'tty' /usr/src/sys/sys/tty.h says about 'clist' /* * Clists are character lists, which is a variable length linked list * of cblocks, with a count of the number of characters in the list. */ struct clist { int c_cc; /* Number of characters in the clist. */ int c_cbcount; /* Number of cblocks. */ int c_cbmax; /* Max # cblocks allowed for this clist. */ int c_cbreserved; /* # cblocks reserved for this clist. */ char *c_cf; /* Pointer to the first cblock. */ char *c_cl; /* Pointer to the last cblock. */ }; and about 'tty' struct tty { struct clist t_rawq; /* Device raw input queue. */ long t_rawcc; /* Raw input queue statistics. */ struct clist t_canq; /* Device canonical queue. */ long t_cancc; /* Canonical queue statistics. */ struct clist t_outq; /* Device output queue. */ ... } and /usr/src/sys/sys/clist.h about 'cblock' struct cblock { struct cblock *c_next; /* next cblock in queue */ unsigned char c_quote[CBQSIZE]; /* quoted characters */ unsigned char c_info[CBSIZE]; /* characters */ }; In the driver it seems that tty->t_outq.c_cf is pointing to the data bytes itself which the driver should send to the device and not to a 'cblock' (the comment in 'clist' says *c_cf; is Pointer to the first cblock); is this just a small error in the comment and t_outq.c_cf is really pointing to cblock.c_info[]? what would be the correct way to pick up the next 'cblock' in that chain if there is already more data to deliver when for example tty->t_outq.c_cc says 810 bytes? picking up the 4 byte pointer at t_outq.c_cf - 20? thanks in advance for some clarification matthias -- Matthias Apitz http://www.UnixArea.de/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080514102503.GA5862>