2.4.7.1 Cấu trúc Streamtab
Dùng để định nghĩa một mô đun hoặc trình điều khiển streamtab {
struct qinit *st_rdinit; /*định nghĩa hàng đợi đọc */ struct qinit *st_wrinit; /*định nghĩa hàng đợi viết*/
struct qinit *st_muxrinit /*hàng đợi đọc dùng cho đa luồng */
struct qinit *st_muxwinit /*hàng đợi đọc dùng cho driver của stream đa luồng*/
};
2.4.7.2 Các cấu trúc hàng đợi queue Struct queue {
struct qinit *q_qinfo; /*Khởi tạo queue */
struct msgb *q_first; /* khối thông báo đầu tiên*/ struct msgb *q_last; /* khối thông báo cuối cùng*/
struct queue *q_next; /* Queue tiếp theo của stream */ struct queue *q_link; /* Queue tiếp theo để xếp lịch*/ caddr_t q_ptr; /*Dữ liệu riêng */
short q_count; /* Số byte dữ liệu trong queue */ unsigned short q_flag; /* Trạng thái queue */
short q_minpsz; /* Cỡ gói tối thiểu*/ short q_maxpsz; /* Cỡ gói tối đa*/ short q_hiwat; /* Dấu n−ớc cao*/ short q_lowat; /* Dấu n−ớc thấp*/
char *q_pad; /*pad field*/
};
typedef struct queue queue_t; 2.4.7.3 Cấu trúc qinit
struct qinit {
int (*qi_putp) ( ); /* thủ tục put */ int (*qi_srvp) ( ); /*thủ tục service */
int (*qi_qopen) ( ); /*đ−ợc gọi để mở driver/chèn mô đun */
int (*qi_qclose) ( ); /*đ−ợc gọi để đóng driver/đẩy mô đun lần cuối */ int (*qi_qadmin) ( ); /*dự trữ cho t−ơng lai*/
struct module_info *qi_minfo; /*cấu trúc thông tin mô đun */ struct module_stat *qi_mstat; /*Tr−ờng lựa chọn */
};
2.4.7.4 Cấu trúc module_info struct module_info {
short mi_idnum; /*số định danh của mô đun */ char *mi_idname; /*tên mô đun */
short mi_minpsz; /*cỡ gói tối thiểu */ short mi_maxpsz; /*cỡ gói tối đa */
short mi_lowat; /*mức n−ớc thấp */ };
2.4.7.5 Các cấu trúc thông báo msgb struct msgb{
Struct msgb *b_next /*thông báo tiếp theo trên queue */ Struct msgb *b_prev /*thông báo tr−ớc trên queue*/ Struct msgb *b_cont /*khối thông báo tiếp theo*/
Unsighed char * b_rptr /*byte ch−a đọc đầu tiên trong buffer*/ Unsigned char b_wptr /*byte ch−a viết đầu tiên trong buffer*/ Struct datab *b_datap /*chỉ tới khối dữ liệu*/
Unsighed char b_band /*quyền −u tiên thông báo*/
Unsighed short b_flag /*cờ thông báo*/ }
Giá trị cờ:
MSGMARK byte cuối cùng của thông báo đ−ợc đánh dấu MSGDELIM thông báo không bị giới hạn
2.4.7.6 Cấu trúc datab struct datab {
unsigned char *db_base; /* byte đầu tiên của buffer */ unsigned char *db_lim; /* byte cuối cùng của buffer +1 */
unsigned char db_ref; /* số thông báo dùng chung khối dữ liệu này */ unsigned char db_type; /* kiểu thông báo */