āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻŽāĻžāĻ° āĻĨā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻā§
āĻĄāĻžāĻāĻž āĻŽā§āĻāĻŽā§āĻ¨ā§āĻ āĻŽā§āĻāĻžāĻ¨āĻŋāĻāĻŽ
- āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ dblk_t
- āĻŦāĻžāĻ°ā§āĻ¤āĻž mblk_t
- mblk_t āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨
- āĻ¸āĻžāĻ°āĻŋ āĻ¸āĻžāĻ°āĻŋ_āĻāĻŋ
- quees queue_t āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨
- āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻā§āĻā§
- āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻā§āĻ°āĻžāĻĢā§āĻ° āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ
- āĻĒāĻ°ā§āĻĻāĻžāĻ° āĻāĻĄāĻŧāĻžāĻ˛ā§ āĻāĻŋāĻāĻžāĻ° āĻ¤ā§āĻĒāĻ°āĻ¤āĻž
- āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻāĻāĻžāĻ° (MSBufferizer)
- MSBufferizer āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨
āĻļā§āĻˇā§
āĻĄāĻžāĻāĻž āĻŽā§āĻāĻŽā§āĻ¨ā§āĻ āĻŽā§āĻāĻžāĻ¨āĻŋāĻāĻŽ
āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ°ā§ āĻĄā§āĻāĻž āĻāĻ¨ā§āĻĻā§āĻ˛āĻ¨ āĻāĻžāĻ āĻžāĻŽā§ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ queue_t. āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻŽāĻ¤ mblk_t, āĻ¯āĻž āĻ¨āĻŋāĻā§āĻ°āĻžāĻ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻĄā§āĻāĻž āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ āĻ¨āĻž, āĻ¤āĻŦā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§, āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻŦāĻ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ˛āĻŋāĻā§āĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻŽāĻŋ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻā§āĻ° āĻĻāĻŋāĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻāĻāĻ āĻ§āĻ°āĻŖā§āĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻ˛āĻŋāĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻāĻāĻāĻāĻžāĻŦā§ āĻ˛āĻŋāĻā§āĻāĻ¯ā§āĻā§āĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻāĻāĻ āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻĒāĻā§ āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛ āĻŦāĻ˛āĻŦāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻ¸āĻžāĻ°āĻŋāĻ° āĻ¯ā§āĻā§āĻ¨ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻāĻāĻŋ āĻāĻāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ mblk_t, āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻŋāĻĒāĻ˛ āĻŽāĻžāĻĨāĻž mblk_t. āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻŋāĻĒāĻ˛ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻā§ āĻĒāĻ°ā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻŦ āĻā§āĻ¨ tuples āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
āĻāĻĒāĻ°ā§ āĻāĻ˛ā§āĻ˛āĻŋāĻāĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻ¨āĻŋāĻā§āĻ āĻĄā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻŦā§āĻ˛āĻ āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ āĻ¨āĻž; āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽā§āĻŽāĻ°āĻŋ āĻāĻ˛āĻžāĻāĻžāĻ° āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻŦā§āĻ˛āĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻ āĻāĻļā§, āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ°ā§āĻ° āĻāĻžāĻā§āĻ° āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻŋāĻ¤ā§āĻ° āĻāĻžāĻ°ā§āĻā§āĻ¨ "āĻŽāĻ¨āĻ¸ā§āĻāĻžāĻ°āĻ¸, āĻāĻ¨āĻāĻ°ā§āĻĒā§āĻ°ā§āĻā§āĻĄ"-āĻāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻā§āĻĻāĻžāĻŽā§āĻ° āĻāĻĨāĻž āĻŽāĻ¨ā§ āĻāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻ¯āĻŧ, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĻāĻ°āĻāĻžāĻā§āĻ˛āĻŋ (āĻĄā§āĻāĻž - āĻ°ā§āĻŽāĻā§āĻ˛āĻŋāĻ° āĻ˛āĻŋāĻā§āĻ) āĻāĻāĻžāĻ°āĻšā§āĻĄ āĻāĻ¨āĻā§āĻ¯āĻŧāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻŽāĻžāĻĻ āĻāĻ¤āĻŋāĻ¤ā§ āĻāĻ˛ā§, āĻ¯āĻāĻ¨ āĻ°ā§āĻŽāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻā§āĻ āĻāĻ¤āĻŋāĻšā§āĻ¨ āĻĨāĻžāĻāĻž
āĻāĻāĻ¨, āĻ¨ā§āĻā§ āĻĨā§āĻā§ āĻāĻĒāĻ°ā§ āĻ¸ā§āĻ¤āĻ°āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻŦāĻ°āĻžāĻŦāĻ° āĻ¸āĻ°āĻžāĻ¨ā§, āĻāĻ¸ā§āĻ¨ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ°ā§ āĻĄā§āĻāĻž āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ āĻŽā§āĻāĻžāĻ¨āĻŋāĻāĻŽā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻ¸āĻ¤ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻā§ āĻŦāĻŋāĻļāĻĻāĻāĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŋāĨ¤
āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ dblk_t
āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻāĻāĻāĻŋ āĻšā§āĻĄāĻžāĻ° āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤āĨ¤ āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽāĻāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻžāĻ āĻžāĻŽā§ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§,
typedef struct datab
{
unsigned char *db_base; // ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ĐŊĐ°ŅĐ°ĐģĐž ĐąŅŅĐĩŅ Đ´Đ°ĐŊĐŊŅŅ
.
unsigned char *db_lim; // ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ĐēĐžĐŊĐĩŅ ĐąŅŅĐĩŅ Đ´Đ°ĐŊĐŊŅŅ
.
void (*db_freefn)(void*); // ФŅĐŊĐēŅиŅ ĐžŅвОйОĐļĐ´ĐĩĐŊиŅ ĐŋĐ°ĐŧŅŅи ĐŋŅи ŅĐ´Đ°ĐģĐĩĐŊии ĐąĐģĐžĐēĐ°.
int db_ref; // ĐĄŅĐĩŅŅиĐē ŅŅŅĐģĐžĐē.
} dblk_t;
āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§, āĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻļā§āĻˇā§āĻ° āĻĻāĻŋāĻā§ āĻāĻŦāĻ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ° āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĨāĻžāĻā§āĨ¤ āĻšā§āĻĄāĻžāĻ°ā§ āĻļā§āĻˇ āĻāĻĒāĻžāĻĻāĻžāĻ¨ db_ref â āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ°, āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻļā§āĻ¨ā§āĻ¯ā§ āĻĒā§āĻāĻāĻžāĻ¯āĻŧ, āĻāĻāĻŋ āĻŽā§āĻŽāĻ°āĻŋ āĻĨā§āĻā§ āĻāĻ āĻŦā§āĻ˛āĻāĻāĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ datab_alloc() , āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄāĻžāĻāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻšā§āĻĄāĻžāĻ°ā§āĻ° āĻĒāĻ°āĻĒāĻ°āĻ āĻŽā§āĻŽāĻ°āĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻ āĻ¨ā§āĻ¯ āĻ¸āĻŦ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻŦāĻžāĻĢāĻžāĻ° āĻāĻ˛āĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻā§āĻĨāĻžāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ā§āĻ° āĻ¨āĻŽā§āĻ¨āĻž āĻŦāĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĄā§āĻāĻž āĻĨāĻžāĻāĻŦā§ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻā§ˇ
āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§:
dblk_t *datab_alloc(int size);
āĻāĻāĻāĻŋ āĻāĻ¨āĻĒā§āĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻŦā§āĻ˛āĻāĻāĻŋ āĻ¯ā§ āĻĄā§āĻāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŦā§ āĻ¤āĻžāĻ° āĻāĻāĻžāĻ° āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻā§āĻ¤ āĻŽā§āĻŽāĻ°āĻŋāĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻšā§āĻĄāĻžāĻ° - āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° - āĻ°āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°āĻ āĻŽā§āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻĄā§āĻāĻžāĻŦ. āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŦā§ āĻ¨āĻž; āĻāĻŋāĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻšā§āĻĄāĻžāĻ° āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻāĻ˛āĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§ āĻ¤āĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°āĻāĻŋ db_base āĻ¤āĻĨā§āĻ¯ āĻāĻ˛āĻžāĻāĻžāĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤, āĻāĻŦāĻ db_lim āĻ¤āĻžāĻ° āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ˛āĻŋāĻā§āĻ āĻāĻŖāĻ¨āĻž db_ref āĻāĻ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ. āĻĄā§āĻāĻž āĻā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ° āĻĢāĻžāĻāĻļāĻ¨ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻļā§āĻ¨ā§āĻ¯ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻŦāĻžāĻ°ā§āĻ¤āĻž mblk_t
āĻ¯ā§āĻŽāĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¸āĻžāĻ°āĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻžāĻāĻĒ āĻšāĻ¯āĻŧ mblk_t, āĻāĻāĻž āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
typedef struct msgb
{
struct msgb *b_prev; // ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ĐŋŅĐĩĐ´ŅĐ´ŅŅиК ŅĐģĐĩĐŧĐĩĐŊŅ ŅĐŋиŅĐēĐ°.
struct msgb *b_next; // ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ŅĐģĐĩĐ´ŅŅŅиК ŅĐģĐĩĐŧĐĩĐŊŅ ŅĐŋиŅĐēĐ°.
struct msgb *b_cont; // ĐŖĐēаСаŅĐĩĐģŅ Đ´ĐģŅ ĐŋОдĐēĐģĐĩĐšĐēи Đē ŅООйŅĐĩĐŊиŅ Đ´ŅŅĐŗиŅ
ŅООйŅĐĩĐŊиК, Đ´ĐģŅ ŅОСдаĐŊиŅ ĐēĐžŅŅĐĩĐļĐ° ŅООйŅĐĩĐŊиК.
struct datab *b_datap; // ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ŅŅŅŅĐēŅŅŅŅ ĐąĐģĐžĐēĐ° Đ´Đ°ĐŊĐŊŅŅ
.
unsigned char *b_rptr; // ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ĐŊĐ°ŅĐ°ĐģĐž ОйĐģĐ°ŅŅи Đ´Đ°ĐŊĐŊŅŅ
Đ´ĐģŅ ŅŅĐĩĐŊиŅ Đ´Đ°ĐŊĐŊŅŅ
ĐąŅŅĐĩŅĐ° b_datap.
unsigned char *b_wptr; // ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ĐŊĐ°ŅĐ°ĐģĐž ОйĐģĐ°ŅŅи Đ´Đ°ĐŊĐŊŅŅ
Đ´ĐģŅ СаĐŋиŅи Đ´Đ°ĐŊĐŊŅŅ
ĐąŅŅĐĩŅĐ° b_datap.
uint32_t reserved1; // ĐĐ°ŅĐĩСĐĩŅвиŅОваĐŊĐŊĐžĐĩ ĐŋĐžĐģĐĩ1, ĐŧĐĩдиаŅŅŅиĐŧĐĩŅ ĐŋĐžĐŧĐĩŅĐ°ĐĩŅ ŅŅĐ´Đ° ŅĐģŅĐļĐĩĐąĐŊŅŅ иĐŊŅĐžŅĐŧĐ°ŅиŅ.
uint32_t reserved2; // ĐĐ°ŅĐĩСĐĩŅвиŅОваĐŊĐŊĐžĐĩ ĐŋĐžĐģĐĩ2, ĐŧĐĩдиаŅŅŅиĐŧĐĩŅ ĐŋĐžĐŧĐĩŅĐ°ĐĩŅ ŅŅĐ´Đ° ŅĐģŅĐļĐĩĐąĐŊŅŅ иĐŊŅĐžŅĐŧĐ°ŅиŅ.
#if defined(ORTP_TIMESTAMP)
struct timeval timestamp;
#endif
ortp_recv_addr_t recv_addr;
} mblk_t;
āĻāĻ āĻ¨ mblk_t āĻļā§āĻ°ā§āĻ¤ā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§ b_prev, b_āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻ¯āĻž āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻ˛āĻŋāĻā§āĻāĻ¯ā§āĻā§āĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻāĻāĻ āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ (āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°āĻŋ queue_t).
āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻāĻ¸ā§ b_cont, āĻ¯āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻāĻ¨āĻ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻ āĻāĻļ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŋāĻĒāĻ˛ā§ āĻļā§āĻˇ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°āĻāĻŋ āĻļā§āĻ¨ā§āĻ¯ āĻĨāĻžāĻā§āĨ¤
āĻāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ b_datap, āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨āĨ¤ āĻāĻāĻŋ āĻŦā§āĻ˛āĻ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§āĻ° āĻāĻ˛āĻžāĻāĻžāĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻŽāĻžāĻ b_rptr āĻ¯ā§ āĻ¸ā§āĻĨāĻžāĻ¨ āĻĨā§āĻā§ āĻŦāĻžāĻĢāĻžāĻ° āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧāĻž āĻšāĻŦā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĨ¤ āĻŽāĻžāĻ b_wptr āĻ¸ā§āĻĨāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ āĻ¯ā§āĻāĻžāĻ¨ āĻĨā§āĻā§ āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻ°āĻžāĻāĻ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĒā§āĻ°āĻā§āĻ¤āĻŋāĻ° āĻāĻŦāĻ āĻĄā§āĻāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤
āĻ¨āĻŋāĻā§ āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻā§ m1 āĻāĻŦāĻ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ d1.
āĻ¨āĻŋāĻā§āĻ° āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛ āĻĻā§āĻāĻžāĻ¯āĻŧ m1, m1_1, m1_2.
āĻŽā§āĻ¸ā§āĻāĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ mblk_t
āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž mblk_t āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§āĻ°āĻŋ:
mblk_t *allocb(int size, int pri);
āĻ¸ā§ āĻ¸ā§āĻŽā§āĻ¤āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ°āĻžāĻā§ mblk_t āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻ¸āĻš āĻāĻ¯āĻŧāĻ¤āĻ¨, āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ¯ā§āĻā§āĻ¤āĻŋ - pri āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻāĻž āĻļā§āĻ¨ā§āĻ¯ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤. āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋāĻ° āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨, āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŽā§āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻ˛ āĻāĻ°āĻž āĻšāĻŦā§ mblk_init(), āĻ¯āĻž āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸ā§āĻ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§, āĻāĻĒāĻ°ā§ āĻāĻ˛ā§āĻ˛āĻŋāĻāĻŋāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ datab_alloc(), āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§āĨ¤ āĻāĻ° āĻĒāĻ°ā§ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§:
mp->b_datap=datab;
mp->b_rptr=mp->b_wptr=datab->db_base;
mp->b_next=mp->b_prev=mp->b_cont=NULL;
āĻāĻāĻāĻĒā§āĻā§ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻžāĻ˛āĻŋ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻāĨ¤ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻĄā§āĻāĻž āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
memcpy(msg->b_rptr, data, size);
āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻžāĻ¤ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻā§āĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°, āĻāĻŦāĻ āĻāĻ¯āĻŧāĻ¤āĻ¨ - āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻžāĻ°āĨ¤
āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°āĻāĻŋāĻā§ āĻ˛ā§āĻāĻžāĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻāĻŦāĻžāĻ° āĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻŽā§āĻā§āĻ¤ āĻ
āĻā§āĻāĻ˛ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§:
msg->b_wptr = msg->b_wptr + size
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¨āĻž āĻāĻ°ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻŦāĻžāĻĢāĻžāĻ° āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻŦā§ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨:
mblk_t *esballoc(uint8_t *buf, int size, int pri, void (*freefn)(void*));
āĻĢāĻžāĻāĻļāĻ¨, āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻŦāĻ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻāĻžāĻ āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻĄā§āĻāĻžāĻ¤ā§ āĻ¤āĻžāĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻŦā§ āĻŦā§āĻĢ. āĻ¸ā§āĻā§āĻ˛ā§. āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ°āĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻšā§āĻĄāĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻĒāĻ°ā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŋāĻ˛ datab_alloc(). āĻĢāĻžāĻāĻļāĻ¨ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻĄā§āĻāĻž āĻ¸āĻš āĻŦāĻžāĻĢāĻžāĻ°āĻāĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŋāĻ˛ āĻ¸ā§āĻāĻžāĻ¨ā§āĻ āĻĨāĻžāĻāĻŦā§, āĻ¤āĻŦā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻ¸ā§āĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§āĨ¤
āĻāĻāĻāĻž āĻŽā§āĻ¸ā§āĻā§āĻ° āĻāĻžāĻā§ mblk_t āĻŦā§āĻļ āĻāĻŋāĻā§ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ°āĻŽā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
mblk_t * appendb(mblk_t *mp, const char *data, int size, bool_t pad);
mp â āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ
āĻ¨ā§āĻ¯ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§;
āĻāĻĒāĻžāĻ¤ā§āĻ¤ â āĻŦā§āĻ˛āĻā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°, āĻ¯āĻžāĻ° āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§;
āĻāĻ¯āĻŧāĻ¤āĻ¨ - āĻĄā§āĻāĻž āĻāĻāĻžāĻ°;
āĻĒā§āĻ¯āĻžāĻĄ â āĻāĻāĻāĻŋ āĻĒāĻ¤āĻžāĻāĻž āĻ¯āĻž āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻž āĻŽā§āĻŽāĻ°āĻŋāĻ° āĻāĻāĻžāĻ° āĻ
āĻŦāĻļā§āĻ¯āĻ 4-āĻŦāĻžāĻāĻā§āĻ° āĻ¸ā§āĻŽāĻžāĻ¨āĻž āĻŦāĻ°āĻžāĻŦāĻ° āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ (āĻĒā§āĻ¯āĻžāĻĄāĻŋāĻ āĻļā§āĻ¨ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ°āĻž āĻšāĻŦā§)āĨ¤
āĻ¯āĻĻāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻŽā§āĻ¸ā§āĻ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻāĻžāĻ¯āĻŧāĻāĻž āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¨āĻ¤ā§āĻ¨ āĻĄā§āĻāĻž āĻāĻā§ āĻĨā§āĻā§ āĻĨāĻžāĻāĻž āĻĄā§āĻāĻžāĻ° āĻĒāĻŋāĻāĻ¨ā§ āĻĒā§āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻŽā§āĻ¸ā§āĻ āĻĄāĻžāĻāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻŽ āĻĢāĻžāĻāĻāĻž āĻāĻžāĻ¯āĻŧāĻāĻž āĻĨāĻžāĻāĻ˛ā§ āĻāĻ¯āĻŧāĻ¤āĻ¨, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻŦāĻžāĻĢāĻžāĻ° āĻāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĄā§āĻāĻž āĻ¤āĻžāĻ° āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž, āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¸āĻ˛āĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ˛āĻŋāĻā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ā§ˇ b_cont. āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻŋāĻĒāĻ˛ā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻā§āĻĒāĻ˛ā§ āĻĄā§āĻāĻžāĻ° āĻ āĻ¨ā§āĻ¯ āĻŦā§āĻ˛āĻ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
void msgappend(mblk_t *mp, const char *data, int size, bool_t pad);
āĻ¸ā§ āĻāĻŋāĻĒāĻ˛ā§ āĻļā§āĻˇ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻŦā§ (āĻ¤āĻžāĻ° āĻāĻžāĻā§ āĻāĻā§ b_cont āĻ¨āĻžāĻ˛ āĻšāĻŦā§) āĻāĻŦāĻ āĻāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛ āĻāĻ°āĻŦā§ āĻ¸āĻāĻ¯ā§āĻāĻ¨ ().
āĻāĻĒāĻ¨āĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŦāĻž āĻāĻŋāĻĒāĻ˛ā§ āĻĄā§āĻāĻžāĻ° āĻāĻāĻžāĻ° āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
int msgdsize(const mblk_t *mp);
āĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻ˛ā§āĻĒ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻ¸ā§āĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŽā§āĻ āĻĄā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻŦā§āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻĄā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
mp->b_wptr - mp->b_rptr
āĻĻā§āĻāĻŋ āĻāĻŋāĻĒāĻ˛ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§, āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨:
mblk_t *concatb(mblk_t *mp, mblk_t *newm);
āĻ¸ā§ āĻāĻŋāĻĒāĻ˛ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§ newm āĻā§āĻĒāĻ˛ā§āĻ° āĻ˛ā§āĻā§āĻ° āĻāĻžāĻā§ mp āĻāĻŦāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻļā§āĻˇ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĢā§āĻ°āĻ¤ āĻĻā§āĻ¯āĻŧāĨ¤
āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§, āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛āĻā§ āĻĄā§āĻāĻžāĻ° āĻāĻāĻ āĻŦā§āĻ˛āĻ āĻ¸āĻš āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§; āĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
void msgpullup(mblk_t *mp,int len);
āĻ¯āĻĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ˛ā§āĻ¨ āĻšāĻ¯āĻŧ -1, āĻ¤āĻžāĻšāĻ˛ā§ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻā§āĻ¤ āĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻāĻāĻžāĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻ˛ā§āĻ¨ āĻāĻāĻāĻŋ āĻ§āĻ¨āĻžāĻ¤ā§āĻŽāĻ āĻ¸āĻāĻā§āĻ¯āĻž, āĻāĻ āĻāĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻžāĻĢāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āĻĒāĻ˛ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĄā§āĻāĻž āĻāĻ¤ā§ āĻāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻŦāĻžāĻĢāĻžāĻ° āĻĢā§āĻ°āĻŋāĻ¯āĻŧā§ āĻā§āĻ˛ā§, āĻāĻĒāĻŋ āĻāĻ°āĻž āĻ¸ā§āĻāĻžāĻ¨ā§āĻ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§āĨ¤ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻāĻĒāĻŋ āĻāĻ°āĻž āĻĄā§āĻāĻž āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻāĻžāĻ°ā§āĻ° āĻŦāĻžāĻĢāĻžāĻ° āĻĒāĻžāĻŦā§āĨ¤ āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻŽā§āĻŽāĻ°āĻŋāĻāĻŋ āĻšāĻŋāĻĒā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ mblk_t āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¯āĻĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻŖāĻ¨āĻž āĻŦāĻŋāĻŦā§āĻāĻ¨āĻžāĻ¯āĻŧ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ freeb() āĻāĻāĻž āĻļā§āĻ¨ā§āĻ¯ āĻšāĻ¤ā§ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻāĻ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¤āĻĨā§āĻ¯ āĻŦāĻžāĻĢāĻžāĻ° āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻŦāĻ°āĻžāĻŦāĻ° āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧ mblk_t, āĻ¯āĻž āĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§āĨ¤
āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻšāĻā§āĻā§:
void mblk_init(mblk_t *mp);
āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻĄā§āĻāĻžāĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻ āĻāĻļ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§:
mblk_t * appendb(mblk_t *mp, const char *data, size_t size, bool_t pad);
āĻ¯āĻĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĄā§āĻāĻž āĻŽā§āĻ¸ā§āĻ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻĢāĻžāĻāĻāĻž āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻžāĻĢāĻžāĻ° āĻ¸āĻš āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻāĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻ¸ā§āĻ āĻāĻ°āĻž āĻāĻā§) āĻāĻŦāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻŋāĻĒāĻ˛ā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻāĻāĻāĻŋ āĻā§āĻĒāĻ˛ā§ āĻĄā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻ āĻāĻļ āĻ¯ā§āĻ āĻāĻ°āĻž:
void msgappend(mblk_t *mp, const char *data, size_t size, bool_t pad);
āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻāĻāĻŋ āĻ˛ā§āĻĒā§ appendb() āĻāĻ˛ āĻāĻ°ā§āĨ¤
āĻāĻāĻāĻŋāĻ¤ā§ āĻĻā§āĻāĻŋ āĻāĻŋāĻĒāĻ˛ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻž:
mblk_t *concatb(mblk_t *mp, mblk_t *newm);
āĻŦāĻžāĻ°ā§āĻ¤āĻž newm āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻŦā§ mp.
āĻāĻāĻāĻŋ āĻāĻāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž:
mblk_t *copyb(const mblk_t *mp);
āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ:
mblk_t *copymsg(const mblk_t *mp);
āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻĒāĻŋāĻŦ().
āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ mblk_t. āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¤āĻžāĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ db_ref:
mblk_t *dupb(mblk_t *mp);
āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻšāĻžāĻ˛āĻāĻž āĻāĻĒāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĨ¤ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻĻā§āĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ db_ref:
mblk_t *dupmsg(mblk_t* m);
āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻāĻ āĻžāĻ˛ā§:
void msgpullup(mblk_t *mp,size_t len);
āĻ¯āĻĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ˛ā§āĻ¨ āĻšāĻ¯āĻŧ -1, āĻ¤āĻžāĻšāĻ˛ā§ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻā§āĻ¤ āĻŦāĻžāĻĢāĻžāĻ°ā§āĻ° āĻāĻāĻžāĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻā§āĻā§, āĻāĻŋāĻĒāĻ˛:
void freemsg(mblk_t *mp);
āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻŖāĻ¨āĻž āĻāĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻļā§āĻ¨ā§āĻ¯ā§ āĻĒā§āĻāĻāĻžāĻ¯āĻŧ, āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻāĻāĻŋāĻ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŦāĻž āĻāĻŋāĻĒāĻ˛ā§ āĻĄā§āĻāĻžāĻ° āĻŽā§āĻ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§āĻ° āĻāĻŖāĻ¨āĻžāĨ¤
size_t msgdsize(const mblk_t *mp);
āĻ¸āĻžāĻ°āĻŋāĻ° āĻ˛ā§āĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§:
mblk_t *ms_queue_peek_last (q);
āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ āĻ¨ā§āĻ¯ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž (āĻāĻ¸āĻ˛ā§, āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĒāĻ¤āĻžāĻāĻž āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ):
mblk_meta_copy(const mblk_t *source, mblk *dest);
āĻŽā§āĻĄāĻŧ queue_t
āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ°ā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻžāĻ°āĻŋ āĻāĻāĻāĻŋ āĻŦā§āĻ¤ā§āĻ¤āĻžāĻāĻžāĻ° āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻ˛āĻŋāĻā§āĻāĻ¯ā§āĻā§āĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻ¨āĻŽā§āĻ¨āĻž āĻ¸āĻš āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻĻā§āĻāĻž āĻ¯āĻžāĻā§āĻā§ āĻ¯ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄāĻžāĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°āĻā§āĻ˛ā§ āĻā§āĻ°ā§ āĻĻāĻžāĻāĻĄāĻŧāĻžāĻ¯āĻŧ, āĻ¯āĻāĻ¨ āĻĄāĻžāĻāĻž āĻ¨āĻŋāĻā§āĻ āĻāĻ¤āĻŋāĻšā§āĻ¨ āĻĨāĻžāĻā§āĨ¤ āĻ¸ā§āĻā§āĻ˛ā§. āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻĻā§āĻ° āĻ˛āĻŋāĻā§āĻ āĻ¸āĻ°āĻžāĻ¨ā§ āĻšāĻ¯āĻŧ.
āĻ¸āĻžāĻ°āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻāĻžāĻ°ā§ āĻāĻžāĻ āĻžāĻŽā§ queue_t, āĻ¨āĻŋāĻā§ āĻĻā§āĻāĻžāĻ¨ā§:
typedef struct _queue
{
mblk_t _q_stopper; /* "ĐĨĐžĐģĐžŅŅОК" ŅĐģĐĩĐŧĐĩĐŊŅ ĐžŅĐĩŅĐĩди, ĐŊĐĩ ŅĐēаСŅваĐĩŅ ĐŊĐ° Đ´Đ°ĐŊĐŊŅĐĩ, иŅĐŋĐžĐģŅСŅĐĩŅŅŅ ŅĐžĐģŅĐēĐž Đ´ĐģŅ ŅĐŋŅавĐģĐĩĐŊиŅ ĐžŅĐĩŅĐĩĐ´ŅŅ. ĐŅи иĐŊиŅиаĐģиСаŅии ĐžŅĐĩŅĐĩди (qinit()) ĐĩĐŗĐž ŅĐēаСаŅĐĩĐģи ĐŊĐ°ŅŅŅаиваŅŅŅŅ ŅĐ°Đē, ŅŅОйŅ ĐžĐŊи ŅĐēаСŅваĐģи ĐŊĐ° ĐŊĐĩĐŗĐž ŅĐ°ĐŧĐžĐŗĐž. */
int q_mcount; // ĐĐžĐģиŅĐĩŅŅвО ŅĐģĐĩĐŧĐĩĐŊŅОв в ĐžŅĐĩŅĐĩди.
} queue_t;
āĻāĻžāĻ āĻžāĻŽā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻ°āĻ¯āĻŧā§āĻā§ - āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° _q_āĻ¸ā§āĻāĻĒāĻžāĻ° *mblk_t āĻāĻžāĻāĻĒ āĻāĻ°ā§āĻ¨, āĻāĻāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨ (āĻŦāĻžāĻ°ā§āĻ¤āĻž) āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§āĨ¤ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻĨāĻžāĻāĻž āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ°āĨ¤
āĻ¨ā§āĻā§āĻ° āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ q1 āĻ¨āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§āĻāĻžāĻ¨ā§ 4āĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž m1, m2, m3, m4 āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ q1 āĻ¨āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§āĻāĻžāĻ¨ā§ 4āĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž m1,m2,m3,m4 āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž m2 āĻšāĻ˛ āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻŽāĻžāĻĨāĻž āĻ¯āĻžāĻ¤ā§ āĻāĻ°āĻ āĻĻā§āĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž m2_1 āĻāĻŦāĻ m2_2 āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
quees queue_t āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨
āĻ¸āĻžāĻ°āĻŋ āĻāĻ°āĻŽā§āĻ:
void qinit(queue_t *q);
āĻā§āĻˇā§āĻ¤ā§āĻ° _q_āĻ¸ā§āĻāĻĒāĻžāĻ° (āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻā§ "āĻ¸ā§āĻāĻĒāĻžāĻ°" āĻŦāĻ˛āĻŦ) āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ°āĻŽā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ mblk_init(), āĻāĻ° āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻŦāĻ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ¨āĻŋāĻā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¸āĻžāĻ°āĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻļā§āĻ¨ā§āĻ¯ āĻ°āĻŋāĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ.
āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§ (āĻŦāĻžāĻ°ā§āĻ¤āĻž):
void putq(queue_t *q, mblk_t *m);
āĻ¨āĻ¤ā§āĻ¨ āĻāĻĒāĻžāĻĻāĻžāĻ¨ m āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻļā§āĻˇā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§ āĻ¸ā§āĻāĻĒāĻžāĻ°āĻāĻŋ āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻšāĻ¯āĻŧā§ āĻāĻ ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸ā§āĻāĻĒāĻžāĻ°ā§āĻ° āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¸āĻžāĻ°āĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ.
āĻ¸āĻžāĻ°āĻŋ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§:
mblk_t * getq(queue_t *q);
āĻ¸ā§āĻāĻĒāĻžāĻ° āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻ¯ā§ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻāĻ¸ā§ āĻāĻŦāĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ°āĻāĻŋ āĻšā§āĻ°āĻžāĻ¸ āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻ¸ā§āĻāĻĒāĻžāĻ° āĻāĻžāĻĄāĻŧāĻž āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻā§āĻ¨ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¨āĻž āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ 0 āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻž āĻšāĻā§āĻā§:
void insq(queue_t *q, mblk_t *emp, mblk_t *mp);
āĻāĻĒāĻžāĻĻāĻžāĻ¨ mp āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻā§ āĻĸā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧ EMPāĨ¤ āĻ¯āĻĻāĻŋ EMP=0, āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ° āĻ˛ā§āĻā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¸āĻžāĻ°āĻŋāĻ° āĻŽāĻžāĻĨāĻž āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§:
void remq(queue_t *q, mblk_t *mp);
āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ.
āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĒāĻĄāĻŧāĻž:
mblk_t * peekq(queue_t *q);
āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻžāĻ°āĻŋ āĻĨā§āĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻ°āĻžāĻ¨ā§ āĻšāĻā§āĻā§:
void flushq(queue_t *q, int how);
āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž. āĻ¸āĻžāĻ°āĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻļā§āĻ¨ā§āĻ¯ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ.
āĻ¸āĻžāĻ°āĻŋāĻ° āĻļā§āĻˇ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĒāĻĄāĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§:
mblk_t * qlast(queue_t *q);
āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻžāĻ°āĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ āĻāĻ˛ āĻāĻ°āĻŦā§āĻ¨ āĻ¤āĻāĻ¨ āĻ¸āĻā§āĻ¤āĻ¨ āĻĨāĻžāĻā§āĻ¨ ms_queue_put(q, m) āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻ¨āĻžāĻ˛ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ¸āĻš, āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻ˛ā§āĻĒ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻšāĻŋāĻŽāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻŦā§. āĻāĻāĻāĻāĻžāĻŦā§ āĻāĻāĻ°āĻŖ āĻāĻ°ā§ ms_queue_next(q, m).
āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻĒāĻ°ā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸āĻžāĻ°āĻŋāĻāĻŋ āĻāĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻ āĻ¨ā§āĻ¯ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ āĻŦāĻž āĻāĻ āĻĨā§āĻā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻāĻ¯ā§āĻ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻā§āĻ°āĻžāĻĢ āĻāĻ āĻ¨ āĻāĻ°ā§āĨ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨āĻĒā§āĻ āĻŦāĻž āĻāĻāĻāĻĒā§āĻāĻā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻļāĻŦā§āĻĻ "āĻĒāĻŋāĻ¨" āĻŦāĻ˛āĻž āĻšāĻŦā§āĨ¤ āĻ¯ā§ āĻā§āĻ°āĻŽā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻĨāĻžāĻā§ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§, āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ° āĻāĻāĻāĻŋ "āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ" āĻ§āĻžāĻ°āĻŖāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻ¸āĻāĻā§āĻ¤ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻāĻ āĻ¨ _MSCP āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ, āĻ¯āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻāĻ° āĻāĻāĻāĻŋ āĻĒāĻŋāĻ¨ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§; āĻ¸ā§āĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨āĻĒā§āĻ āĻŦāĻž āĻāĻāĻāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋāĻ° āĻ¸āĻāĻ¯ā§āĻ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§āĨ¤
āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻā§āĻ°āĻžāĻĢā§āĻ° āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ
typedef struct _MSCPoint{
struct _MSFilter *filter; // ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ŅиĐģŅŅŅ ĐŧĐĩдиаŅŅŅиĐŧĐĩŅĐ°.
int pin; // ĐĐžĐŧĐĩŅ ОдĐŊĐžĐŗĐž иС вŅ
ОдОв иĐģи вŅŅ
ОдОв ŅиĐģŅŅŅĐ°, Ņ.Đĩ. ĐŋиĐŊ.
} MSCPoint;
āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻĒāĻŋāĻ¨āĻā§āĻ˛āĻŋ āĻļā§āĻ¨ā§āĻ¯ āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻ¸āĻāĻā§āĻ¯āĻžāĻ¯ā§āĻā§āĻ¤āĨ¤
āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻžāĻ°āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĻā§āĻāĻŋ āĻĒāĻŋāĻ¨ā§āĻ° āĻ¸āĻāĻ¯ā§āĻ āĻāĻžāĻ āĻžāĻŽā§ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧ _MS āĻ¸āĻžāĻ°āĻŋ, āĻāĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻžāĻ°āĻŋ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻāĻāĻžāĻ°ā§ āĻĻā§āĻāĻŋ āĻ¸āĻāĻā§āĻ¤ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§:
typedef struct _MSQueue
{
queue_t q;
MSCPoint prev;
MSCPoint next;
}MSQueue;
āĻāĻŽāĻ°āĻž āĻāĻ āĻāĻžāĻ āĻžāĻŽā§āĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ¤ āĻ˛āĻŋāĻā§āĻ āĻŦāĻ˛āĻŦāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻĒā§āĻ āĻ˛āĻŋāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻāĻĒā§āĻ āĻ˛āĻŋāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§ (MSQueue) āĻāĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻžāĻ° āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ; āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻāĻĒā§āĻ° āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋ MSFilterDesc, āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋāĨ¤ āĻ¨ā§āĻā§ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ°ā§ āĻ¯ā§ āĻā§āĻ¨āĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§, āĻāĻŽāĻāĻ¸āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°:
struct _MSFilter{
MSFilterDesc *desc; /* ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° Đ´ĐĩŅĐēŅиĐŋŅĐžŅ ŅиĐģŅŅŅĐ°. */
/* ĐĐ°ŅиŅĐĩĐŊĐŊŅĐĩ Đ°ŅŅийŅŅŅ, иŅ
ĐŊĐĩĐģŅСŅ ŅдвиĐŗĐ°ŅŅ иĐģи ŅйиŅĐ°ŅŅ иĐŊĐ°ŅĐĩ ĐąŅĐ´ĐĩŅ ĐŊĐ°ŅŅŅĐĩĐŊĐ° ŅайОŅĐ° Ņ ĐŋĐģĐ°ĐŗиĐŊĐ°Đŧи. */
ms_mutex_t lock; /* ĐĄĐĩĐŧĐ°ŅĐžŅ. */
MSQueue **inputs; /* ĐĸĐ°ĐąĐģиŅĐ° вŅ
ОдĐŊŅŅ
ĐģиĐŊĐēОв. */
MSQueue **outputs; /* ĐĸĐ°ĐąĐģиŅĐ° вŅŅ
ОдĐŊŅŅ
ĐģиĐŊĐēОв. */
struct _MSFactory *factory; /* ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ŅĐ°ĐąŅиĐēŅ, ĐēĐžŅĐžŅĐ°Ņ ŅОСдаĐģĐ° Đ´Đ°ĐŊĐŊŅĐš ŅĐēСĐĩĐŧĐŋĐģŅŅ ŅиĐģŅŅŅĐ°. */
void *padding; /* ĐĐĩ иŅĐŋĐžĐģŅСŅĐĩŅŅŅ, ĐąŅĐ´ĐĩŅ СадĐĩĐšŅŅвОваĐŊ ĐĩŅĐģи дОйавŅŅŅŅ СаŅиŅĐĩĐŊĐŊŅĐĩ ĐŋĐžĐģŅ. */
void *data; /* ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ĐŋŅОиСвОĐģŅĐŊŅŅ ŅŅŅŅĐēŅŅŅŅ Đ´ĐģŅ Ņ
ŅĐ°ĐŊĐĩĐŊиŅ Đ´Đ°ĐŊĐŊŅŅ
вĐŊŅŅŅĐĩĐŊĐŊĐĩĐŗĐž ŅĐžŅŅĐžŅĐŊиŅ ŅиĐģŅŅŅĐ° и ĐŋŅĐžĐŧĐĩĐļŅŅĐžŅĐŊŅŅ
вŅŅиŅĐģĐĩĐŊиК. */
struct _MSTicker *ticker; /* ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ОйŅĐĩĐēŅ ŅиĐēĐĩŅĐ°, ĐēĐžŅĐžŅŅĐš ĐŊĐĩ Đ´ĐžĐģĐļĐĩĐŊ ĐąŅŅŅ ĐŊŅĐģĐĩвŅĐŧ ĐēĐžĐŗĐ´Đ° вŅСŅваĐĩŅŅŅ ŅŅĐŊĐēŅиŅ process(). */
/*private attributes, they can be moved and changed at any time*/
MSList *notify_callbacks; /* ĐĄĐŋиŅĐžĐē ОйŅĐ°ŅĐŊŅŅ
вŅСОвОв, иŅĐŋĐžĐģŅСŅĐĩĐŧŅŅ
Đ´ĐģŅ ОйŅайОŅĐēи ŅОйŅŅиК ŅиĐģŅŅŅĐ°. */
uint32_t last_tick; /* ĐĐžĐŧĐĩŅ ĐŋĐžŅĐģĐĩĐ´ĐŊĐĩĐŗĐž ŅĐ°ĐēŅĐ°, ĐēĐžĐŗĐ´Đ° вŅĐŋĐžĐģĐŊŅĐģŅŅ вŅСОв process(). */
MSFilterStats *stats; /* ĐĄŅĐ°ŅиŅŅиĐēĐ° ŅайОŅŅ ŅиĐģŅŅŅĐ°.*/
int postponed_task; /*ĐĐžĐģиŅĐĩŅŅвО ĐžŅĐģĐžĐļĐĩĐŊĐŊŅŅ
СадаŅ. ĐĐĩĐēĐžŅĐžŅŅĐĩ ŅиĐģŅŅŅŅ ĐŧĐžĐŗŅŅ ĐžŅĐēĐģĐ°Đ´ŅваŅŅ ОйŅайОŅĐēŅ Đ´Đ°ĐŊĐŊŅŅ
(вŅСОв process()) ĐŊĐ° ĐŊĐĩŅĐēĐžĐģŅĐēĐž ŅĐ°ĐēŅОв.*/
bool_t seen; /* ФĐģĐ°Đŗ, ĐēĐžŅĐžŅŅĐš иŅĐŋĐžĐģŅСŅĐĩŅ ŅиĐēĐĩŅ, ŅŅОйŅ ĐŋĐžĐŧĐĩŅĐ°ŅŅ ŅŅĐž ŅŅĐžŅ ŅĐēСĐĩĐŧĐŋĐģŅŅ ŅиĐģŅŅŅĐ° ĐžĐŊ ŅĐļĐĩ ОйŅĐģŅĐļиĐģ ĐŊĐ° Đ´Đ°ĐŊĐŊĐžĐŧ ŅĐ°ĐēŅĐĩ.*/
};
typedef struct _MSFilter MSFilter;
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻ¸āĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ (āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻŋāĻ¨āĻŋ), āĻāĻŽāĻ°āĻž āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻā§āĻ°āĻžāĻĢ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ, āĻ¯āĻžāĻ° āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻŽāĻāĻ¸āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°, āĻāĻŦāĻ āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤āĻā§āĻ˛āĻŋ āĻ˛āĻŋāĻā§āĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ MSQueue.
āĻĒāĻ°ā§āĻĻāĻžāĻ° āĻāĻĄāĻŧāĻžāĻ˛ā§ āĻāĻŋāĻāĻžāĻ° āĻ¤ā§āĻĒāĻ°āĻ¤āĻž
āĻ¯āĻāĻ¨ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻāĻŋāĻāĻžāĻ°āĻāĻŋ āĻāĻŋāĻāĻā§āĻ˛āĻŋāĻ° āĻāĻ¤ā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°, āĻ¤āĻāĻ¨ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸āĻ¤ā§āĻ¯ āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤ āĻāĻāĻāĻŋ āĻāĻŋāĻāĻžāĻ° āĻšāĻ˛ āĻāĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¯āĻž āĻāĻĄāĻŧāĻŋāĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž() āĻ¸āĻžāĻ°ā§āĻāĻŋāĻā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° (āĻā§āĻ°āĻžāĻĢ) āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤āĨ¤ āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻāĻāĻāĻŋ āĻā§āĻ°āĻžāĻĢ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻŋāĻāĻžāĻ° āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻŋ, āĻ¤āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻŋāĻāĻžāĻ°ā§āĻ° āĻā§āĻ°āĻžāĻĢāĻāĻŋ āĻĻā§āĻāĻžāĻ āĻ¯āĻž āĻāĻāĻŋ āĻāĻāĻ¨ āĻĨā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻŦā§ āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻŋāĨ¤ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŋāĻāĻžāĻ°āĻāĻŋ āĻ¤āĻžāĻ° āĻ¯āĻ¤ā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ°ā§āĻĒāĻŋāĻ¤ āĻā§āĻ°āĻžāĻĢāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, āĻāĻāĻŋ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻāĻāĻ˛āĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻāĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§ āĻĻā§āĻŦāĻžāĻ° "āĻāĻŖāĻ¨āĻž" āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻŋ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻā§āĻāĻŦāĻā§āĻ¸ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°ā§ āĻĻā§āĻāĻž. āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻā§ āĻ¯ā§ āĻ˛āĻŋāĻā§āĻ āĻā§āĻŦāĻŋāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻžāĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧ.
āĻā§āĻ°āĻžāĻĢā§āĻ° āĻĒāĻ°āĻŋāĻāĻžāĻ¯āĻŧāĻ āĻ¸āĻĢāĻ°ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŋāĻāĻžāĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻ¯ā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻāĻā§ āĻ¯āĻž āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻāĻ¤ā§āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋ āĻā§āĻ¨āĻāĻŋ āĻ¨āĻž āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻā§āĻ°āĻžāĻĢāĻāĻŋ āĻā§āĻ˛ āĻŦāĻ˛ā§ āĻŦāĻŋāĻŦā§āĻāĻŋāĻ¤ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻŋāĻāĻžāĻ° āĻā§āĻ°ā§āĻ¯āĻžāĻļ āĻšāĻŦā§āĨ¤
āĻ¯āĻĻāĻŋ āĻā§āĻ°āĻžāĻĢāĻāĻŋ "āĻ¸āĻ āĻŋāĻ" āĻšāĻ¤ā§ āĻĻā§āĻāĻž āĻ¯āĻžāĻ¯āĻŧ, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋāĻā§ āĻāĻ°āĻŽā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻĒā§āĻ°ā§āĻŦ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž(). āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻāĻā§āĻ°ā§āĻ° (āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻĒā§āĻ°āĻ¤āĻŋ 10 āĻŽāĻŋāĻ˛āĻŋāĻ¸ā§āĻā§āĻ¨ā§āĻĄā§) āĻŽā§āĻšā§āĻ°ā§āĻ¤āĻāĻŋ āĻāĻ¸āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻāĻŋāĻāĻžāĻ° āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋāĻā§ āĻāĻ˛ āĻāĻ°ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž() āĻĒā§āĻ°ā§āĻŦā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ¸ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ¨āĻĒā§āĻ āĻ˛āĻŋāĻā§āĻ āĻāĻā§, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž() āĻāĻ¨āĻĒā§āĻ āĻ˛āĻŋāĻā§āĻ āĻ¸āĻžāĻ°āĻŋ āĻāĻžāĻ˛āĻŋ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ° āĻĒāĻ°ā§, āĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ¨āĻĒā§āĻ āĻ˛āĻŋāĻā§āĻāĻā§āĻ˛āĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŽā§āĻā§āĻ¤ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻāĻŋāĻā§ "āĻ¸ā§āĻā§āĻ°ā§āĻ˛" āĻāĻ°ā§āĨ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻļā§āĻˇ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻŋāĻāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻāĻā§āĻ°ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°ā§āĨ¤
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻŋāĻĒāĻ˛ā§ āĻĢāĻŋāĻ°ā§ āĻ¯āĻžāĻŦ āĻāĻŦāĻ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ°ā§ āĻā§āĻ¨ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻ¤ā§āĻ¤āĻž āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§ āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĄā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻŽāĻŋāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻž āĻāĻŦāĻ āĻāĻ¨āĻĒā§āĻā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻžāĻ°ā§āĻ° āĻāĻāĻžāĻ§āĻŋāĻ āĻ¨āĻ¯āĻŧā§ˇ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ˛āĻŋāĻāĻāĻŋ āĻ¯āĻž āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻĢā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§, āĻ¯āĻž āĻ¸āĻāĻā§āĻāĻž āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻžāĻ° āĻāĻāĻžāĻ° āĻĻā§āĻāĻŋ āĻļāĻā§āĻ¤āĻŋāĨ¤ āĻāĻāĻž 512 āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻ¯āĻžāĻ. āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻŋāĻĢā§āĻ¨ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĄā§āĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ¨āĻĒā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻĄā§āĻāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻāĻŽāĻžāĻĻā§āĻ° 160āĻāĻŋ āĻ¸āĻāĻā§āĻ¤ āĻ¨āĻŽā§āĻ¨āĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ¸āĻŦā§āĨ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻĄā§āĻāĻž āĻ¨āĻž āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻ¨āĻĒā§āĻ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻ¸āĻāĻā§āĻ°āĻš āĻ¨āĻž āĻāĻ°āĻž āĻĒā§āĻ°āĻ˛ā§āĻŦā§āĻ§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ°ā§āĻˇ āĻāĻāĻŦā§, āĻ¯āĻž āĻāĻ¨āĻĒā§āĻ āĻ˛āĻŋāĻā§āĻāĻāĻŋ āĻāĻžāĻ˛āĻŋ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻāĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻ˛ āĻāĻ°āĻžāĻ° āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦā§āĨ¤ āĻĒā§āĻ°ā§āĻŦā§, āĻāĻŽāĻ°āĻž āĻāĻ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻāĻŋāĻā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻ¨ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŽāĻ¨ā§āĻ¨ā§āĻ¤ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻ āĻ¨ā§āĻ¤āĻŋ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž() āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻ¨āĻĒā§āĻ āĻ¸āĻžāĻ°āĻŋ āĻĨā§āĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§āĻāĻž āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŦā§āĨ¤
āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻ¨āĻĒā§āĻ āĻĨā§āĻā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 512āĻāĻŋ āĻ¨āĻŽā§āĻ¨āĻž āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻŦā§ āĻ¨āĻž, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŦā§āĻ˛āĻ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨, āĻ¯ā§āĻŽāĻ¨ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻāĻŋāĻā§ 640āĻāĻŋ āĻ¨āĻŽā§āĻ¨āĻž āĻ¨āĻŋāĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ 512āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ āĻŦāĻļāĻŋāĻˇā§āĻāĻāĻŋ āĻĄā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ āĻāĻļ āĻāĻŽāĻž āĻāĻ°āĻžāĻ° āĻāĻā§āĨ¤ āĻāĻāĻāĻžāĻŦā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°, āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻ āĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻ¨āĻĒā§āĻ āĻĄā§āĻāĻžāĻ° āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§ āĻ¸ā§āĻā§āĻ°ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ°ā§āĻ° āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻāĻŦāĻ āĻāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻ āĻŦāĻā§āĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻā§āĻ¨ - āĻāĻŽāĻāĻ¸āĻŦāĻŋāĻĢāĻžāĻ°āĻžāĻāĻāĻžāĻ° (āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻ°), āĻ¯āĻž āĻāĻŋāĻĒāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻāĻāĻžāĻ° (MSBufferizer)
āĻāĻāĻŋ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¯āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻ¨āĻĒā§āĻ āĻĄā§āĻāĻž āĻāĻŽāĻž āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ
ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¯āĻĨā§āĻˇā§āĻ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻž āĻĻā§āĻāĻ¯āĻŧāĻž āĻļā§āĻ°ā§ āĻāĻ°āĻŦā§āĨ¤ āĻ¯āĻāĻ¨ āĻŦāĻžāĻĢāĻžāĻ° āĻĄā§āĻāĻž āĻāĻŽāĻž āĻāĻ°āĻā§, āĻ¤āĻāĻ¨ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻāĻŋ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻŽā§āĻĄā§ āĻāĻžāĻ āĻāĻ°āĻŦā§, āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻļāĻā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻāĻ°ā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻ¤ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻ° āĻĨā§āĻā§ āĻ°āĻŋāĻĄāĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻļā§āĻ¨ā§āĻ¯ āĻāĻžāĻĄāĻŧāĻž āĻ
āĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž() āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻāĻžāĻ°ā§āĻ° āĻ
āĻāĻļā§ āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻ° āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻā§āĻ°āĻšāĻŖ āĻāĻŦāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻāĻāĻŋ āĻļā§āĻˇ āĻšāĻ¯āĻŧāĨ¤
āĻ¯ā§ āĻĄā§āĻāĻž āĻāĻāĻ¨āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž āĻ¤āĻž āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻĨāĻžāĻā§, āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨āĻĒā§āĻ āĻĄā§āĻāĻžāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻžāĻ āĻžāĻŽā§ āĻ¯āĻž āĻŦāĻžāĻĢāĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§:
struct _MSBufferizer{
queue_t q; /* ĐŅĐĩŅĐĩĐ´Ņ ŅООйŅĐĩĐŊиК. */
int size; /* ĐĄŅĐŧĐŧĐ°ŅĐŊŅĐš ŅаСĐŧĐĩŅ Đ´Đ°ĐŊĐŊŅŅ
ĐŊĐ°Ņ
ОдŅŅиŅ
ŅŅ в ĐąŅŅĐĩŅиСаŅĐžŅĐĩ в Đ´Đ°ĐŊĐŊŅĐš ĐŧĐžĐŧĐĩĐŊŅ. */
};
typedef struct _MSBufferizer MSBufferizer;
MSBufferizer āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻļāĻ¨
āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻĢāĻžāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§:
MSBufferizer * ms_bufferizer_new(void);
āĻŽā§āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ ms_buferizer_init() āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¸ā§āĻāĻ¨āĻž āĻĢāĻžāĻāĻļāĻ¨:
void ms_bufferizer_init(MSBufferizer *obj);
āĻ¸āĻžāĻ°āĻŋ āĻļā§āĻ°ā§ āĻšāĻā§āĻā§ q, āĻā§āĻˇā§āĻ¤ā§āĻ° āĻāĻ¯āĻŧāĻ¤āĻ¨ āĻļā§āĻ¨ā§āĻ¯ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§:
void ms_bufferizer_put(MSBufferizer *obj, mblk_t *m);
āĻŦāĻžāĻ°ā§āĻ¤āĻž m āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§āĨ¤ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻāĻŖāĻ¨āĻžāĻā§āĻ¤ āĻāĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻ¯āĻŧāĻ¤āĻ¨.
āĻ˛āĻŋāĻā§āĻ āĻĄā§āĻāĻž āĻ¸āĻžāĻ°āĻŋ āĻĨā§āĻā§ āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§ q:
void ms_bufferizer_put_from_queue(MSBufferizer *obj, MSQueue *q);
āĻāĻāĻāĻŋ āĻ˛āĻŋāĻā§āĻ āĻĨā§āĻā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° q āĻŦāĻžāĻĢāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ ms_buferizer_put().
āĻŦāĻžāĻĢāĻžāĻ° āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻž:
int ms_bufferizer_read(MSBufferizer *obj, uint8_t *data, int datalen);
āĻ¯āĻĻāĻŋ āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻāĻŽāĻž āĻšāĻāĻ¯āĻŧāĻž āĻĄā§āĻāĻžāĻ° āĻāĻāĻžāĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ¤ā§āĻ° āĻā§āĻ¯āĻŧā§ āĻāĻŽ āĻšāĻ¯āĻŧ (āĻĄā§āĻāĻžāĻ˛ā§āĻ¨), āĻ¤āĻžāĻ°āĻĒāĻ° āĻĢāĻžāĻāĻļāĻ¨ āĻļā§āĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§, āĻĄā§āĻāĻž āĻĄā§āĻāĻžāĻ¤ā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻāĻŋāĻĒāĻ˛ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻ āĻ¨ā§āĻā§āĻ°āĻŽāĻŋāĻ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŋāĻĒāĻ˛ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻŽā§āĻŽāĻ°āĻŋ āĻŽā§āĻā§āĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻĄā§āĻāĻžāĻ˛ā§āĻ¨ āĻŦāĻžāĻāĻ āĻāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻ˛ā§ āĻāĻĒāĻŋ āĻāĻ°āĻž āĻļā§āĻˇ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻŽāĻžāĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻĨāĻžāĻ¨ āĻĢā§āĻ°āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ, āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻāĻāĻŋ āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻāĻ¨āĻāĻĒāĻŋ āĻāĻ°āĻž āĻ āĻāĻļā§ āĻšā§āĻ°āĻžāĻ¸ āĻĒāĻžāĻŦā§āĨ¤ āĻĒāĻ°ā§āĻ° āĻŦāĻžāĻ° āĻ¯āĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻ˛ āĻāĻ°āĻŦā§āĻ¨, āĻ¤āĻāĻ¨ āĻĨā§āĻā§ āĻāĻĒāĻŋ āĻāĻ°āĻž āĻāĻ˛āĻŦā§āĨ¤
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻĄā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻĒāĻĄāĻŧāĻž:
int ms_bufferizer_get_avail(MSBufferizer *obj);
āĻŽāĻžāĻ ā§ āĻĢā§āĻ°ā§ āĻāĻ¯āĻŧāĻ¤āĻ¨ āĻŦāĻžāĻĢāĻžāĻ°āĻžāĻ°
āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻĄā§āĻāĻžāĻ° āĻ āĻāĻļ āĻŦāĻžāĻĻ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻā§āĻā§:
void ms_bufferizer_skip_bytes(MSBufferizer *obj, int bytes);
āĻĄā§āĻāĻžāĻ° āĻŦāĻžāĻāĻā§āĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻā§āĻ¯āĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻžāĻā§āĻ¨āĻ¤āĻŽ āĻ¤āĻĨā§āĻ¯ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧ.
āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻā§āĻā§:
void ms_bufferizer_flush(MSBufferizer *obj);
āĻĄā§āĻāĻž āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ°āĻāĻŋ āĻļā§āĻ¨ā§āĻ¯ā§ āĻ°āĻŋāĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻā§āĻā§:
void ms_bufferizer_uninit(MSBufferizer *obj);
āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻ°āĻŋāĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž.
āĻŦāĻžāĻĢāĻžāĻ° āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻŦāĻ āĻŽā§āĻŽāĻ°āĻŋ āĻŽā§āĻā§āĻ¤ āĻāĻ°āĻž:
void ms_bufferizer_destroy(MSBufferizer *obj);
āĻŦāĻžāĻĢāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§āĻ° āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, MS_L16_ENC āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§, āĻ¯āĻž āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ
āĻ°ā§āĻĄāĻžāĻ° āĻĨā§āĻā§ āĻšā§āĻ¸ā§āĻ āĻ
āĻ°ā§āĻĄāĻžāĻ°ā§ āĻ¨āĻŽā§āĻ¨āĻžāĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦāĻžāĻāĻāĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ¨āĻ°ā§āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻāĻ°ā§:
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻŋāĻāĻžāĻ°ā§āĻ° āĻāĻĒāĻ° āĻ˛ā§āĻĄ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻŦāĻ āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻžāĻ°ā§ āĻ āĻ¤ā§āĻ¯āĻ§āĻŋāĻ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻŋāĻ āĻ˛ā§āĻĄā§āĻ° āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§ āĻ˛āĻĄāĻŧāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻĒāĻžāĻ¯āĻŧāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻŦāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com