Một số cấu trúc dữ liệu đ−ợc dùngtrong luồng

Một phần của tài liệu Hệ thống an toàn trên môi trường mạng sun solaris (Trang 57 - 59)

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 */

Một phần của tài liệu Hệ thống an toàn trên môi trường mạng sun solaris (Trang 57 - 59)