เจฒเฉเจ เจธเจฎเฉฑเจเจฐเฉ เจฎเฉเจฐเฉ เจคเฉเจ เจฒเจ เจเจ เจนเฉ
เจกเจพเจเจพ เจ เฉฐเจฆเฉเจฒเจจ เจตเจฟเจงเฉ
- เจกเจพเจเจพ เจฌเจฒเจพเจ dblk_t
- เจธเฉเจจเฉเจนเจพ mblk_t
- mblk_t เจธเฉเจจเฉเจนเจฟเจเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจซเฉฐเจเจธเจผเจจ
- เจเจคเจพเจฐ เจเจคเจพเจฐ_t
- queues queue_t เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจซเฉฐเจเจธเจผเจจ
- เจเจจเฉเจเจ เจเจฐเจจ เจตเจพเจฒเฉ เจซเจฟเจฒเจเจฐ
- เจกเจพเจเจพ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจเฉเจฐเจพเจซ เจฆเจพ เจธเจฟเจเจจเจฒ เจชเฉเจเจเฉฐเจ
- เจชเจฐเจฆเฉ เจชเจฟเฉฑเจเฉ เจเจฟเจเจฐ เจฆเฉเจเจ เจเจคเฉเจตเจฟเจงเฉเจเจ
- เจฌเจซเจฐเจพเจเจเจผเจฐ (MSBufferizer)
- MSBufferizer เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจซเฉฐเจเจธเจผเจจ
เจชเจฟเจเจฒเฉ เจตเจฟเฉฑเจ
เจกเจพเจเจพ เจ เฉฐเจฆเฉเจฒเจจ เจตเจฟเจงเฉ
เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจฎเฉเจตเจฎเฉเจเจ เจจเฉเฉฐ เจขเจพเจเจเฉ เจฆเฉเจเจฐเจพ เจตเจฐเจฃเจฟเจค เจเจคเจพเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ เจเจคเจพเจฐ_เจเฉ. เจตเจฐเจเฉ เจธเฉเจจเฉเจนเจฟเจเจ เจฆเฉเจเจ เจธเจคเจฐเจพเจ mblk_t, เจเจฟเจธ เจตเจฟเฉฑเจ เจเจชเจฃเฉ เจเจช เจตเจฟเฉฑเจ เจธเจฟเจเจจเจฒ เจกเฉเจเจพ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจชเจฐ เจธเจฟเจฐเจซ เจชเจฟเจเจฒเฉ, เจ เจเจฒเฉ เจธเฉฐเจฆเฉเจธเจผ เจ เจคเฉ เจกเฉเจเจพ เจฌเจฒเจพเจ เจจเจพเจฒ เจฒเจฟเฉฐเจ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจฎเฉเจ เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจเจธ เจเฉฑเจฒ 'เจคเฉ เจเจผเฉเจฐ เจฆเฉเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ เจเจฟ เจเจธเฉ เจเจฟเจธเจฎ เจฆเฉ เจธเฉฐเจฆเฉเจธเจผ เจฆเฉ เจฒเจฟเฉฐเจ เจฒเจ เจเฉฑเจ เจเฉเจคเจฐ เจตเฉ เจนเฉ, เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจธเฉเจจเฉเจนเจฟเจเจ เจฆเฉ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจฒเจฟเฉฐเจเจก เจธเฉเจเฉ เจจเฉเฉฐ เจธเฉฐเจเจ เจฟเจค เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจ เจธเฉเจ เจ เจเจฟเจนเฉ เจธเฉเจเฉ เจฆเฉเจเจฐเจพ เจธเฉฐเจฏเฉเจเจค เจธเฉฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจธเจฎเฉเจน เจจเฉเฉฐ เจเฉฑเจ เจเฉเจชเจฒ เจเจนเจพเจเจเฉเฅค เจเจธ เจคเจฐเฉเจนเจพเจ, เจเจคเจพเจฐ เจฆเจพ เจเฉเจ เจตเฉ เจคเฉฑเจค เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจธเฉเจจเฉเจนเจพ เจนเฉ เจธเจเจฆเจพ เจนเฉ mblk_t, เจ เจคเฉ เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟ เจเฉฑเจ เจธเฉเจจเฉเจนเจพ tuple เจฆเจพ เจธเจฟเจฐ mblk_t. เจนเจฐเฉเจ เจเฉเจชเจฒ เจธเฉฐเจฆเฉเจธเจผ เจฆเจพ เจเจชเจฃเจพ เจตเจพเจฐเจก เจกเจพเจเจพ เจฌเจฒเจพเจ เจนเฉ เจธเจเจฆเจพ เจนเฉเฅค เจ เจธเฉเจ เจฅเฉเฉเฉ เจฆเฉเจฐ เจฌเจพเจ เจฆ เจเจฐเจเจพ เจเจฐเจพเจเจเฉ เจเจฟ เจเฉเจชเจฒเจพเจ เจฆเฉ เจเจฟเจเจ เจฒเฉเฉ เจนเฉเฅค
เจเจฟเจตเฉเจ เจเจฟ เจเฉฑเจชเจฐ เจฆเฉฑเจธเจฟเจ เจเจฟเจ เจนเฉ, เจธเฉเจจเฉเจนเฉ เจตเจฟเฉฑเจ เจเจชเจฃเฉ เจเจช เจตเจฟเฉฑเจ เจกเฉเจเจพ เจฆเจพ เจเฉฑเจ เจฌเจฒเจพเจ เจธเจผเจพเจฎเจฒ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ; เจเจธ เจฆเฉ เจฌเจเจพเจ, เจเจธ เจตเจฟเฉฑเจ เจธเจฟเจฐเจซ เจฎเฉเจฎเฉเจฐเฉ เจเฉเจคเจฐ เจฒเจ เจเฉฑเจ เจชเฉเจเจเฉฐเจเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟเฉฑเจฅเฉ เจฌเจฒเจพเจ เจธเจเฉเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจธ เจนเจฟเฉฑเจธเฉ เจตเจฟเฉฑเจ, เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจฆเฉ เจเฉฐเจฎ เจฆเฉ เจธเจฎเฉเฉฑเจเฉ เจคเจธเจตเฉเจฐ เจเจพเจฐเจเฉเจจ "เจฎเฉเจจเจธเจเจฐเจเจผ, เจเฉฐเจ." เจตเจฟเฉฑเจ เจฆเจฐเจตเจพเจเจผเฉ เจฆเฉ เจเฉเจฆเจพเจฎ เจฆเฉ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจเจฆเฉ เจนเฉ, เจเจฟเฉฑเจฅเฉ เจฆเจฐเจตเจพเจเจผเฉ (เจกเฉเจเจพ - เจเจฎเจฐเจฟเจเจ เจฆเฉ เจฒเจฟเฉฐเจ) เจเจตเจฐเจนเฉเฉฑเจก เจเจจเจตเฉเจ เจฐเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจชเจพเจเจฒ เจเจคเฉ เจจเจพเจฒ เจ เฉฑเจเฉ เจตเจงเจฆเฉ เจนเจจ, เจเจฆเฉเจ เจเจฟ เจเจฎเจฐเฉ เจเฉเจฆ เจเจคเฉเจนเฉเจฃ เจฐเจนเจฟเจฃเจพเฅค
เจนเฉเจฃ, เจนเฉเจ เจพเจ เจคเฉเจ เจธเจฟเจเจฐ เจคเฉฑเจ เจฒเฉเฉ เจฆเฉ เจจเจพเจฒ เจ เฉฑเจเฉ เจตเจงเจฆเฉ เจนเฉเจ, เจเจ เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจเฉเจฐเจพเจเจธเจฎเจฟเจธเจผเจจ เจตเจฟเจงเฉ เจฆเฉเจเจ เจธเฉเจเฉเจฌเฉฑเจง เจเจเจพเจเจเจ เจฌเจพเจฐเฉ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจ เจตเจฟเจเจพเจฐ เจเจฐเฉเจเฅค
เจกเจพเจเจพ เจฌเจฒเจพเจ 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_เจ เจเจฒเจพ, เจเฉ เจเจฟ เจเฉฑเจ เจฆเฉเฉฑเจเจฃเฉ เจฒเจฟเฉฐเจเจก เจธเฉเจเฉ เจจเฉเฉฐ เจธเฉฐเจเจ เจฟเจค เจเจฐเจจ เจฒเจ เจเจผเจฐเฉเจฐเฉ เจนเจจ (เจเฉ เจเจฟ เจเฉฑเจ เจเจคเจพเจฐ เจนเฉ เจเจคเจพเจฐ_เจเฉ).
เจซเจฟเจฐ เจชเฉเจเจเฉฐเจเจฐ เจเจเจเจฆเจพ เจนเฉ 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 เจจเจฟเจฐเจงเจพเจฐเจค เจเจเจพเจฐ เจฆเฉ เจกเฉเจเจพ เจฌเจฒเจพเจ เจฆเฉ เจจเจพเจฒ เจฆเจพ เจเจเจพเจฐ, เจฆเฉเจเฉ เจฆเจฒเฉเจฒ - เจชเฉเจฐเฉ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฆเฉ เจเจธ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจตเจฐเจคเจฟเจ เจเจฟเจเฅค เจเจน เจเจผเฉเจฐเฉ เจนเฉ เจฐเจนเจฟเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจธเฉฐเจเจพเจฒเจจ เจฆเฉ เจฆเฉเจฐเจพเจจ, เจจเจตเฉเจ เจธเฉฐเจฆเฉเจธเจผ เจฆเฉ เจฌเจฃเจคเจฐ เจฒเจ เจฎเฉเจฎเฉเจฐเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉ เจเจพเจตเฉเจเฉ เจ เจคเฉ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจฌเฉเจฒเจพเจเจ เจเจพเจตเฉเจเจพ 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 null) เจนเฉ เจเจพเจตเฉเจเจพ เจ เจคเฉ เจเจธ เจธเฉเจจเฉเจนเฉ เจฒเจ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเจพเจฒ เจเจฐเฉเจเจพ addendb().
เจคเฉเจธเฉเจ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฑเจ เจธเฉฐเจฆเฉเจธเจผ เจเจพเจ เจเฉเจชเจฒ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจฆเฉ เจเจเจพเจฐ เจฆเจพ เจชเจคเจพ เจฒเจเจพ เจธเจเจฆเฉ เจนเฉ:
int msgdsize(const mblk_t *mp);
เจเจน เจเฉเจชเจฒ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจธเฉฐเจฆเฉเจธเจผเจพเจ เจจเฉเฉฐ เจฒเฉเจช เจเจฐเฉเจเจพ เจ เจคเฉ เจเจนเจจเจพเจ เจธเฉฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจกเฉเจเจพ เจฌเจซเจฐเจพเจ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจฆเฉ เจเฉเฉฑเจฒ เจฎเจพเจคเจฐเจพ เจตเจพเจชเจธ เจเจฐเฉเจเจพเฅค เจนเจฐเฉเจ เจธเฉเจจเฉเจนเฉ เจฒเจ, เจกเฉเจเจพ เจฆเฉ เจฎเจพเจคเจฐเจพ เจฆเฉ เจเจฃเจจเจพ เจเจธ เจคเจฐเฉเจนเจพเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ:
mp->b_wptr - mp->b_rptr
เจฆเฉ เจเฉเจชเจฒเจพเจ เจจเฉเฉฐ เจเฉเฉเจจ เจฒเจ, เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ:
mblk_t *concatb(mblk_t *mp, mblk_t *newm);
เจเจน เจเฉเจชเจฒ เจเฉเฉเจฆเฉ เจนเฉ newm tuple เจฆเฉ เจชเฉเจ เจจเฉเฉฐ mp เจ เจคเฉ เจจเจคเฉเจเฉ เจตเจพเจฒเฉ เจเฉเจชเจฒ เจฆเฉ เจเจเจฐเฉ เจธเฉฐเจฆเฉเจธเจผ เจฒเจ เจเฉฑเจ เจชเฉเจเจเฉฐเจเจฐ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉเฅค
เจเฉ เจเจฐเฉเจฐเฉ เจนเฉเจตเฉ, เจคเจพเจ เจเฉฑเจ เจเฉเจชเจฒ เจจเฉเฉฐ เจกเฉเจเจพ เจฆเฉ เจเฉฑเจ เจฌเจฒเจพเจ เจจเจพเจฒ เจเฉฑเจ เจธเฉฐเจฆเฉเจธเจผ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ; เจเจน เจซเฉฐเจเจธเจผเจจ เจฆเฉเจเจฐเจพ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ:
void msgpullup(mblk_t *mp,int len);
เจเฉเจเจฐ เจฆเจฒเฉเจฒ len -1 เจนเฉ, เจซเจฟเจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจฌเจซเจฐ เจฆเจพ เจเจเจพเจฐ เจเจชเจฃเฉ เจเจช เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจเฉ len เจเฉฑเจ เจธเจเจพเจฐเจพเจคเจฎเจ เจธเฉฐเจเจฟเจ เจนเฉ, เจเจธ เจเจเจพเจฐ เจฆเจพ เจเฉฑเจ เจฌเจซเจฐ เจฌเจฃเจพเจเจ เจเจพเจตเฉเจเจพ เจ เจคเฉ เจเฉเจชเจฒ เจธเฉเจจเฉเจนเจพ เจกเฉเจเจพ เจเจธ เจตเจฟเฉฑเจ เจเจพเจชเฉ เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค เจเฉเจเจฐ เจฌเจซเจฐ เจเจคเจฎ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจจเจเจฒ เจเจฐเจจเจพ เจเฉฑเจฅเฉ เจนเฉ เจฌเฉฐเจฆ เจนเฉ เจเจพเจตเฉเจเจพเฅค เจเฉเจชเจฒ เจฆเจพ เจชเจนเจฟเจฒเจพ เจธเฉเจจเฉเจนเจพ เจเจพเจชเฉ เจเฉเจคเฉ เจกเฉเจเจพ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจจเจตเฉเจ เจเจเจพเจฐ เจฆเจพ เจฌเจซเจฐ เจชเฉเจฐเจพเจชเจค เจเจฐเฉเจเจพเฅค เจฌเจพเจเฉ เจฌเจเฉ เจธเฉเจจเฉเจนเฉ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเฉ เจเจพเจฃเจเฉ เจ เจคเฉ เจฎเฉเจฎเฉเจฐเฉ เจนเฉเจช เจตเจฟเฉฑเจ เจตเจพเจชเจธ เจ เจเจพเจตเฉเจเฉเฅค
เจเฉฑเจ เจฌเจฃเจคเจฐ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃ เจตเฉเจฒเฉ 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);
เจเฉเจเจฐ เจจเจตเจพเจ เจกเฉเจเจพ เจฎเฉเจธเฉเจ เจกเฉเจเจพ เจฌเจซเจฐ เจฆเฉ เจเจพเจฒเฉ เจฅเจพเจ เจตเจฟเฉฑเจ เจซเจฟเฉฑเจ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจคเจพเจ เจฒเฉเฉเฉเจเจฆเฉ เจเจเจพเจฐ เจฆเฉ เจเฉฑเจ เจฌเจซเจฐ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจฌเจฃเจพเจเจ เจเจฟเจ เจธเฉเจจเฉเจนเจพ เจธเฉฐเจฆเฉเจธเจผ เจจเจพเจฒ เจเฉเฉเจฟเจ เจนเฉเจเจ เจนเฉ (เจเฉเฉเฉ เจเจ เจธเฉฐเจฆเฉเจธเจผ เจฒเจ เจเฉฑเจ เจชเฉเจเจเฉฐเจเจฐ เจชเจนเจฟเจฒเฉ เจธเฉฐเจฆเฉเจธเจผ เจตเจฟเฉฑเจ เจธเฉเฉฑเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ) เจ เจคเฉ เจธเฉเจจเฉเจนเจพ เจเฉฑเจ tuple เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฆเจพ เจนเฉ.
เจเฉฑเจ เจเฉเจชเจฒ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจฆเฉ เจเฉฑเจ เจเฉเจเฉเฉ เจจเฉเฉฐ เจเฉเฉเจจเจพ:
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);
เจเฉเจชเจฒ เจฆเฉ เจคเฉฑเจค เจซเฉฐเจเจธเจผเจจ เจฆเฉเจเจฐเจพ เจจเจเจฒ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจ copyb().
เจเฉฑเจ เจธเฉเจจเฉเจนเฉ เจฆเฉ เจเฉฑเจ เจเจธเจพเจจ เจเจพเจชเฉ เจฌเจฃเจพเจ 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);
เจเฉ เจฆเจฒเฉเจฒ 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);
เจเจคเจพเจฐ เจเจคเจพเจฐ_เจเฉ
เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจตเจฟเฉฑเจ เจธเฉเจจเฉเจนเจพ เจเจคเจพเจฐ เจเฉฑเจ เจธเจฐเจเฉเจฒเจฐ เจกเจฌเจฒ เจฒเจฟเฉฐเจเจก เจธเฉเจเฉ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจนเจฐเฉเจ เจธเฉเจเฉ เจคเฉฑเจค เจตเจฟเฉฑเจ เจธเจฟเจเจจเจฒ เจจเจฎเฉเจจเจฟเจเจ เจตเจพเจฒเฉ เจกเฉเจเจพ เจฌเจฒเจพเจ เจฒเจ เจเฉฑเจ เจชเฉเจเจเฉฐเจเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจเจน เจชเจคเจพ เจเจฒเจฆเจพ เจนเฉ เจเจฟ เจธเจฟเจฐเจซ เจกเฉเจเจพ เจฌเจฒเจพเจ เจตเฉฑเจฒ เจชเฉเจเจเฉฐเจเจฐ เจฌเจฆเจฒเฉ เจตเจฟเฉฑเจ เจเจฒเฉ เจเจพเจเจฆเฉ เจนเจจ, เจเจฆเฉเจ เจเจฟ เจกเฉเจเจพ เจเจชเจฃเฉ เจเจช เจตเจฟเฉฑเจ เจเจคเฉเจนเฉเจฃ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉ. เจเจน. เจเจนเจจเจพเจ เจฒเจ เจธเจฟเจฐเจซเจผ เจฒเจฟเฉฐเจ เจนเฉ เจญเฉเจเฉ เจเจพเจเจฆเฉ เจนเจจเฅค
เจเจคเจพเจฐ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจ เจตเจพเจฒเฉ เจฌเจฃเจคเจฐ เจเจคเจพเจฐ_เจเฉ, เจนเฉเจ เจพเจ เจฆเจฟเจเจพเจเจ เจเจฟเจ เจนเฉ:
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 เจนเจจเฅค
queues 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).
เจเจจเฉเจเจ เจเจฐเจจ เจตเจพเจฒเฉ เจซเจฟเจฒเจเจฐ
เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจ เจเจคเจพเจฐ เจจเฉเฉฐ เจเฉฑเจ เจซเจฟเจฒเจเจฐ เจคเฉเจ เจฆเฉเจเฉ เจเจพเจ เจเฉฑเจ เจคเฉเจ เจเจ เจซเจฟเจฒเจเจฐเจพเจ เจตเจฟเฉฑเจ เจธเฉฐเจฆเฉเจธเจผ เจญเฉเจเจฃ เจฒเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจซเจฟเจฒเจเจฐ เจ เจคเฉ เจเจนเจจเจพเจ เจฆเฉ เจเจจเฉเจเจธเจผเจจ เจเฉฑเจ เจจเจฟเจฐเจฆเฉเจธเจผเจฟเจค เจเฉเจฐเจพเจซ เจฌเจฃเจพเจเจเจฆเฉ เจนเจจเฅค เจซเจฟเจฒเจเจฐ เจฆเฉ เจเจจเจชเฉเจ เจเจพเจ เจเจเจเจชเฉเฉฑเจ เจจเฉเฉฐ เจเจฎ เจธเจผเจฌเจฆ "เจชเจฟเฉฐเจจ" เจเจฟเจนเจพ เจเจพเจตเฉเจเจพเฅค เจเจธ เจเฉเจฐเจฎ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจ เจฒเจ เจเจฟเจธ เจตเจฟเฉฑเจ เจซเจฟเจฒเจเจฐ เจเฉฑเจ เจฆเฉเจเฉ เจจเจพเจฒ เจเฉเฉเฉ เจนเฉเจ เจนเจจ, เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจเฉฑเจ "เจธเจฟเจเจจเจฒ เจชเฉเจเจเฉฐเจ" เจฆเฉ เจงเจพเจฐเจจเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉเฅค เจธเจฟเจเจจเจฒ เจชเฉเจเจเฉฐเจ เจฌเจฃเจคเจฐ เจนเฉ _MSCPpoint, เจเจฟเจธ เจตเจฟเฉฑเจ เจซเจฟเจฒเจเจฐ เจฒเจ เจเฉฑเจ เจชเฉเจเจเฉฐเจเจฐ เจ เจคเฉ เจเจธเจฆเฉ เจเฉฑเจ เจชเจฟเฉฐเจจ เจฆเฉ เจธเฉฐเจเจฟเจ เจนเฉเฉฐเจฆเฉ เจนเฉ; เจเจธเจฆเฉ เจ เจจเฉเจธเจพเจฐ, เจเจน เจซเจฟเจฒเจเจฐ เจฆเฉ เจเจจเจชเฉเจเจธ เจเจพเจ เจเจเจเจชเฉเฉฑเจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจฆเฉ เจเจจเฉเจเจธเจผเจจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉเฅค
เจกเจพเจเจพ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจเฉเจฐเจพเจซ เจฆเจพ เจธเจฟเจเจจเจฒ เจชเฉเจเจเฉฐเจ
typedef struct _MSCPoint{
struct _MSFilter *filter; // ะฃะบะฐะทะฐัะตะปั ะฝะฐ ัะธะปััั ะผะตะดะธะฐัััะธะผะตัะฐ.
int pin; // ะะพะผะตั ะพะดะฝะพะณะพ ะธะท ะฒั
ะพะดะพะฒ ะธะปะธ ะฒัั
ะพะดะพะฒ ัะธะปัััะฐ, ั.ะต. ะฟะธะฝ.
} MSCPoint;
เจซเจฟเจฒเจเจฐ เจชเจฟเฉฐเจจเจพเจ เจจเฉเฉฐ เจธเจฟเจซเจผเจฐ เจคเฉเจ เจธเจผเฉเจฐเฉ เจเจฐเจเฉ เจจเฉฐเจฌเจฐ เจฆเจฟเฉฑเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจเฉฑเจ เจธเฉเจจเฉเจนเจพ เจเจคเจพเจฐ เจฆเฉเจเจฐเจพ เจฆเฉ เจชเจฟเฉฐเจจเจพเจ เจฆเฉ เจเจจเฉเจเจธเจผเจจ เจจเฉเฉฐ เจฌเจฃเจคเจฐ เจฆเฉเจเจฐเจพ เจฆเจฐเจธเจพเจเจ เจเจฟเจ เจนเฉ _MS เจเจคเจพเจฐ, เจเจฟเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเฉเจจเฉเจนเจพ เจเจคเจพเจฐ เจ เจคเฉ เจฆเฉ เจธเจฟเจเจจเจฒ เจชเฉเจเจเฉฐเจเจพเจ เจฒเจ เจชเฉเจเจเฉฐเจเจฐ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ เจนเจจ เจเฉ เจเจธเจจเฉเฉฐ เจเฉเฉเจฆเจพ เจนเฉ:
typedef struct _MSQueue
{
queue_t q;
MSCPoint prev;
MSCPoint next;
}MSQueue;
เจ เจธเฉเจ เจเจธ เจขเจพเจเจเฉ เจจเฉเฉฐ เจธเจฟเจเจจเจฒ เจฒเจฟเฉฐเจ เจเจนเจพเจเจเฉเฅค เจนเจฐเฉเจ เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจซเจฟเจฒเจเจฐ เจตเจฟเฉฑเจ เจเจจเจชเฉเจ เจฒเจฟเฉฐเจเจพเจ เจฆเฉ เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจ เจคเฉ เจเจเจเจชเฉเฉฑเจ เจฒเจฟเฉฐเจเจพเจ เจฆเฉ เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ (MSQueue). เจซเจฟเจฒเจเจฐ เจฌเจฃเจพเจเจฃ เจตเฉเจฒเฉ เจเฉเจฌเจฒเจพเจ เจฆเจพ เจเจเจพเจฐ เจธเฉเฉฑเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ; เจ เจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจฟเจธเจฎ เจฆเฉ เจจเจฟเจฐเจฏเจพเจค เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจ เจเจฟเจนเจพ เจเจฐ เจเฉเฉฑเจเฉ เจนเจพเจ MSFilterDesc, เจเจฆเฉเจ เจ เจธเฉเจ เจเจชเจฃเจพ เจซเจฟเจฒเจเจฐ เจตเจฟเจเจธเจฟเจค เจเฉเจคเจพ เจนเฉเฅค เจนเฉเจ เจพเจ เจเฉฑเจ เจขเจพเจเจเจพ เจนเฉ เจเฉ เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจตเจฟเฉฑเจ เจเจฟเจธเฉ เจตเฉ เจซเจฟเจฒเจเจฐ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉ, MSFilter:
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;
เจเจฆเฉเจ เจ เจธเฉเจ เจเจชเจฃเฉ เจฏเฉเจเจจเจพ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจธเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจตเจฟเฉฑเจ เจซเจฟเจฒเจเจฐเจพเจ เจจเฉเฉฐ เจเฉเฉเจฆเฉ เจนเจพเจ (เจชเจฐ เจเจฟเจเจฐ เจจเฉเฉฐ เจจเจนเฉเจ เจเฉเฉเจฟเจ), เจคเจพเจ เจ เจธเฉเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจเฉฑเจ เจจเจฟเจฐเจฆเฉเจธเจผเจฟเจค เจเฉเจฐเจพเจซ เจฌเจฃเจพเจเจ, เจเจฟเจธ เจฆเฉ เจจเฉเจก เจฌเจฃเจคเจฐ เจฆเฉ เจเจฆเจพเจนเจฐเจฃ เจนเจจ MSFilter, เจ เจคเฉ เจเจฟเจจเจพเจฐเฉ เจฒเจฟเฉฐเจเจพเจ เจฆเฉ เจเจฆเจพเจนเจฐเจฃ เจนเจจ MSQueue.
เจชเจฐเจฆเฉ เจชเจฟเฉฑเจเฉ เจเจฟเจเจฐ เจฆเฉเจเจ เจเจคเฉเจตเจฟเจงเฉเจเจ
เจเจฆเฉเจ เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเฉฑเจธเจฟเจ เจเจฟ เจเจฟเจเจฐ เจเจฟเฉฑเจ เจฆเฉ เจธเจฐเฉเจค เจฒเจ เจเฉฑเจ เจซเจฟเจฒเจเจฐ เจนเฉ, เจคเจพเจ เจเจธ เจฌเจพเจฐเฉ เจชเฉเจฐเฉ เจธเฉฑเจเจพเจ เจจเจนเฉเจ เจธเฉเฅค เจเฉฑเจ เจเจฟเจเจฐ เจเฉฑเจ เจตเจธเจคเฉ เจนเฉ เจเฉ เจเฉเฉ 'เจคเฉ เจซเฉฐเจเจธเจผเจจ เจเจฒเจพเจเจเจฆเฉ เจนเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ() เจธเจฐเจเจ เจฆเฉ เจธเจพเจฐเฉ เจซเจฟเจฒเจเจฐ (เจเฉเจฐเจพเจซ) เจเจฟเจธ เจจเจพเจฒ เจเจน เจเฉเฉเจฟเจ เจนเฉเจเจ เจนเฉเฅค เจเจฆเฉเจ เจ เจธเฉเจ เจเฉฑเจ C เจชเฉเจฐเฉเจเจฐเจพเจฎ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฟเจเจฐ เจจเฉเฉฐ เจเฉฑเจ เจเฉเจฐเจพเจซ เจซเจฟเจฒเจเจฐ เจจเจพเจฒ เจเฉเฉเจฆเฉ เจนเจพเจ, เจคเจพเจ เจ เจธเฉเจ เจเจฟเจเจฐ เจจเฉเฉฐ เจเจน เจเฉเจฐเจพเจซ เจฆเจฟเจเจพเจเจเจฆเฉ เจนเจพเจ เจเจฟเจธเจจเฉเฉฐ เจเจน เจนเฉเจฃ เจคเฉเจ เจเจฆเฉเจ เจคเฉฑเจ เจเฉฐเจเจฐเฉเจฒ เจเจฐเฉเจเจพ เจเจฆเฉเจ เจคเฉฑเจ เจ เจธเฉเจ เจเจธเจจเฉเฉฐ เจฌเฉฐเจฆ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเจพเจเฅค เจเจจเฉเจเจ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจเจฟเจเจฐ เจเจชเจฃเฉ เจฆเฉเจเจญเจพเจฒ เจฒเจ เจธเฉเจเจชเฉ เจเจ เจเฉเจฐเจพเจซ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐเจฆเจพ เจนเฉ, เจซเจฟเจฒเจเจฐเจพเจ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจคเจฟเจเจฐ เจเจฐเจฆเจพ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจเจน เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจเฉฑเจเฉ เจซเจฟเจฒเจเจฐ เจจเฉเฉฐ เจฆเฉ เจตเจพเจฐ "เจเจฃเจจเจพ" เจจเจพ เจเจฐเจจ เจฒเจ, เจเจน เจเฉเจเฉ เจเจ เจซเจฟเจฒเจเจฐเจพเจ เจจเฉเฉฐ เจเจนเจจเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจเจฌเจพเจเจธ เจฐเฉฑเจ เจเฉ เจจเจฟเจธเจผเจพเจจเจฌเฉฑเจง เจเจฐเจฆเจพ เจนเฉ เจจเฉเฉฐ เจตเฉเจเจฟเจ. เจเฉเจ เจเจนเจจเจพเจ เจฒเจฟเฉฐเจ เจเฉเจฌเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเฉ เจนเจฐเฉเจ เจซเจฟเจฒเจเจฐ เจเฉเจฒ เจนเจจเฅค
เจเฉเจฐเจพเจซ เจฆเฉ เจเจชเจฃเฉ เจธเจผเฉเจฐเฉเจเจคเฉ เจฆเฉเจฐเฉ เจฆเฉเจฐเจพเจจ, เจเจฟเจเจฐ เจเจพเจเจ เจเจฐเจฆเจพ เจนเฉ เจเจฟ เจเฉ เจซเจฟเจฒเจเจฐเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจเฉ-เจเฉฑเจ เจเฉฑเจ เจ เจเจฟเจนเจพ เจนเฉ เจเฉ เจกเฉเจเจพ เจฌเจฒเจพเจเจพเจ เจฆเฉ เจธเจฐเฉเจค เจตเจเฉเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค เจเฉเจเจฐ เจเฉเจ เจตเฉ เจจเจนเฉเจ เจนเฉ, เจคเจพเจ เจเฉเจฐเจพเจซ เจจเฉเฉฐ เจเจฒเจค เจฎเฉฐเจจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจฟเจเจฐ เจเจฐเฉเจธเจผ เจนเฉ เจเจพเจเจฆเจพ เจนเฉเฅค
เจเฉเจเจฐ เจเฉเจฐเจพเจซ "เจธเจนเฉ" เจจเจฟเจเจฒเจฆเจพ เจนเฉ, เจคเจพเจ เจนเจฐเฉเจ เจฒเฉฑเจญเฉ เจเจ เจซเจฟเจฒเจเจฐ เจฒเจ, เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจธเจผเฉเจฐเฉเจเจคเฉเจเจฐเจฃ เจฒเจ เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉ เจชเฉเจฐเฉเจชเฉเจฐเฉเจธเฉเจธ(). เจเจฟเจตเฉเจ เจนเฉ เจ เจเจฒเฉ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจเฉฑเจเจฐ เจฒเจ เจชเจฒ เจเจเจเจฆเจพ เจนเฉ (เจกเจฟเจซเฉเจฒเจ เจฐเฉเจช เจตเจฟเฉฑเจ เจนเจฐ 10 เจฎเจฟเจฒเฉเจธเจเจฟเฉฐเจ), เจเจฟเจเจฐ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเจพเจฒ เจเจฐเจฆเจพ เจนเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ() เจธเจพเจฐเฉ เจชเจนเจฟเจฒเจพเจ เจฎเจฟเจฒเฉ เจธเจฐเฉเจค เจซเจฟเจฒเจเจฐเจพเจ เจฒเจ, เจ เจคเฉ เจซเจฟเจฐ เจธเฉเจเฉ เจตเจฟเฉฑเจ เจฌเจพเจเฉ เจฌเจเฉ เจซเจฟเจฒเจเจฐเจพเจ เจฒเจเฅค เจเฉเจเจฐ เจซเจฟเจฒเจเจฐ เจตเจฟเฉฑเจ เจเจจเจชเฉเจ เจฒเจฟเฉฐเจ เจนเจจ, เจคเจพเจ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเจฒเจพเจเจฃเจพ เจชเฉเจฐเจเจฟเจฐเจฟเจ() เจเฉฐเจชเฉเฉฑเจ เจฒเจฟเฉฐเจ เจเจคเจพเจฐเจพเจ เจเจพเจฒเฉ เจนเฉเจฃ เจคเฉฑเจ เจฆเฉเจนเจฐเจพเจเจเจฆเจพ เจนเฉเฅค เจเจธ เจคเฉเจ เจฌเจพเจ เจฆ, เจเจน เจธเฉเจเฉ เจตเจฟเฉฑเจ เจ เจเจฒเฉ เจซเจฟเจฒเจเจฐ 'เจคเฉ เจเจพเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจเจฆเฉเจ เจคเฉฑเจ "เจธเจเฉเจฐเฉเจฒ" เจเจฐเจฆเจพ เจนเฉ เจเจฆเฉเจ เจคเฉฑเจ เจเจจเจชเฉเจ เจฒเจฟเฉฐเจ เจธเฉเจจเฉเจนเจฟเจเจ เจคเฉเจ เจฎเฉเจเจค เจจเจนเฉเจ เจนเฉเฉฐเจฆเฉเฅค เจเจฟเจเจฐ เจธเฉเจเฉ เจฆเฉ เจเจคเจฎ เจนเฉเจฃ เจคเฉฑเจ เจซเจฟเจฒเจเจฐ เจคเฉเจ เจซเจฟเจฒเจเจฐ เจคเฉฑเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจน เจเฉฑเจเจฐ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจชเฉเจฐเจพ เจเจฐเจฆเจพ เจนเฉ.
เจนเฉเจฃ เจ เจธเฉเจ เจเฉเจชเจฒเจเจผ 'เจคเฉ เจตเจพเจชเจธ เจเจตเจพเจเจเฉ เจ เจคเฉ เจเจธ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจพเจเจเฉ เจเจฟ เจ เจเจฟเจนเฉ เจเจเจพเจ เจจเฉเฉฐ เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจตเจฟเฉฑเจ เจเจฟเจเจ เจเฉเฉเจฟเจ เจเจฟเจ เจธเฉเฅค เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจซเจฟเจฒเจเจฐ เจฆเฉ เจ เฉฐเจฆเจฐ เจเฉฐเจฎ เจเจฐเจจ เจตเจพเจฒเฉ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจฆเฉเจเจฐเจพ เจฒเฉเฉเฉเจเจฆเฉ เจกเฉเจเจพ เจฆเฉ เจฎเจพเจคเจฐเจพ เจฎเฉเจฒ เจจเจนเฉเจ เจเจพเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเจจเจชเฉเจ 'เจคเฉ เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉ เจกเฉเจเจพ เจฌเจซเจฐเจพเจ เจฆเฉ เจเจเจพเจฐ เจฆเจพ เจเฉเจฃเจ เจจเจนเฉเจ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจ เจธเฉเจ เจเฉฑเจ เจซเจฟเจฒเจเจฐ เจฒเจฟเจ เจฐเจนเฉ เจนเจพเจ เจเฉ เจเฉฑเจ เจคเฉเจเจผ เจซเฉเจฐเฉเจ เจฐ เจเจฐเจพเจเจธเจซเจพเจฐเจฎ เจเจฐเจฆเจพ เจนเฉ, เจเฉ เจเจฟ เจชเจฐเจฟเจญเจพเจธเจผเจพ เจฆเฉเจเจฐเจพ เจธเจฟเจฐเจซ เจเจนเจจเจพเจ เจกเฉเจเจพ เจฌเจฒเจพเจเจพเจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐ เจธเจเจฆเจพ เจนเฉ เจเจฟเจจเฉเจนเจพเจ เจฆเจพ เจเจเจพเจฐ เจฆเฉ เจฆเฉ เจธเจผเจเจคเฉ เจนเฉเฅค เจเจธ เจจเฉเฉฐ 512 เจเจฟเจฃเจจ เจฆเจฟเจ. เจเฉเจเจฐ เจกเฉเจเจพ เจเฉฑเจ เจเฉเจฒเฉเจซเฉเจจ เจเฉเจจเจฒ เจฆเฉเจเจฐเจพ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจเจจเจชเฉเจ 'เจคเฉ เจนเจฐเฉเจ เจธเฉฐเจฆเฉเจธเจผ เจฆเจพ เจกเฉเจเจพ เจฌเจซเจฐ เจธเจพเจกเฉ เจฒเจ 160 เจธเจฟเจเจจเจฒ เจจเจฎเฉเจจเฉ เจฒเจฟเจเจเจเจพเฅค เจเจฆเฉเจ เจคเฉฑเจ เจกเฉเจเจพ เจฆเฉ เจฒเฉเฉเฉเจเจฆเฉ เจฎเจพเจคเจฐเจพ เจจเจนเฉเจ เจนเฉเฉฐเจฆเฉ เจเจฆเฉเจ เจคเฉฑเจ เจเจจเจชเฉเจ เจคเฉเจ เจกเฉเจเจพ เจเจเฉฑเจ เจพ เจจเจพ เจเจฐเจจ เจฒเจ เจเจน เจฒเฉเจญเจพเจเจฃ เจตเจพเจฒเจพ เจนเฉเฅค เจชเจฐ เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจเจฟเจเจฐ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจเฉฑเจเจฐ เจนเฉเจตเฉเจเฉ, เจเฉ เจเจฟ เจเจจเจชเฉเจ เจฒเจฟเฉฐเจ เจเจพเจฒเฉ เจนเฉเจฃ เจคเฉฑเจ เจซเจฟเจฒเจเจฐ เจจเฉเฉฐ เจธเจเฉเจฐเฉเจฒ เจเจฐเจจ เจฆเฉ เจ เจธเจซเจฒ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจเจพเฅค เจชเจนเจฟเจฒเจพเจ, เจ เจธเฉเจ เจเจธ เจจเจฟเจฏเจฎ เจจเฉเฉฐ เจซเจฟเจฒเจเจฐ เจฆเฉ เจคเฉเจเฉ เจธเจฟเจงเจพเจเจค เจตเจเฉเจ เจฎเจจเฉเจจเฉเจค เจเฉเจคเจพ เจธเฉเฅค เจเจธ เจธเจฟเจงเจพเจเจค เจฆเฉ เจ เจจเฉเจธเจพเจฐ, เจซเจฟเจฒเจเจฐ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ() เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเจจเจชเฉเจ เจเจคเจพเจฐเจพเจ เจคเฉเจ เจธเจพเจฐเจพ เจกเจพเจเจพ เจฒเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจจเจชเฉเจ เจคเฉเจ เจธเจฟเจฐเจซ 512 เจจเจฎเฉเจจเฉ เจฒเฉเจฃเจพ เจธเฉฐเจญเจต เจจเจนเฉเจ เจนเฉเจตเฉเจเจพ, เจเจฟเจเจเจเจฟ เจคเฉเจธเฉเจ เจธเจฟเจฐเจซ เจชเฉเจฐเฉ เจฌเจฒเจพเจ เจนเฉ เจฒเฉ เจธเจเจฆเฉ เจนเฉ, เจฏเจพเจจเฉ. เจซเจฟเจฒเจเจฐ เจจเฉเฉฐ 640 เจจเจฎเฉเจจเฉ เจฒเฉเจฃเฉ เจชเฉเจฃเจเฉ เจ เจคเฉ เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ 512 เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเฉ เจชเจตเฉเจเฉ, เจฌเจพเจเฉ เจกเฉเจเจพ เจฆเฉ เจเฉฑเจ เจจเจตเฉเจ เจนเจฟเฉฑเจธเฉ เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเจฐเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจเฅค เจเจธ เจคเจฐเฉเจนเจพเจ, เจธเจพเจกเฉ เจซเจฟเจฒเจเจฐ เจจเฉเฉฐ, เจเจธเจฆเฉ เจฎเฉเฉฑเจ เจเฉฐเจฎ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจจเจชเฉเจ เจกเฉเจเจพ เจฆเฉ เจตเจฟเจเจเจพเจฐเจฒเฉ เจธเจเฉเจฐเฉเจ เจฒเจ เจธเจนเจพเจเจ เจเจฟเจฐเจฟเจเจตเจพเจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจเฉเจเจ เจเจพเจนเฉเจฆเฉเจเจ เจนเจจเฅค เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจฐ เจฆเฉ เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจ เจคเฉ เจเจธ เจเจฎ เจธเจฎเฉฑเจธเจฟเจ เจฆเฉ เจนเฉฑเจฒ เจฒเจ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจเจฌเจเฉเจเจ - MSBufferizer (เจฌเจซเจฐเจฐ) เจตเจฟเจเจธเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจเฉ เจเจฟ เจเฉเจชเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจฆเจพ เจนเฉเฅค
เจฌเจซเจฐเจพเจเจเจผเจฐ (MSBufferizer)
เจเจน เจเฉฑเจ เจ
เจเจฟเจนเจพ เจเจฌเจเฉเจเจ เจนเฉ เจเฉ เจซเจฟเจฒเจเจฐ เจฆเฉ เจ
เฉฐเจฆเจฐ เจเจจเจชเฉเจ เจกเฉเจเจพ เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเจฐเฉเจเจพ เจ
เจคเฉ เจซเจฟเจฒเจเจฐ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฒเจ เจเจพเจฃเจเจพเจฐเฉ เจฆเฉ เจฎเจพเจคเจฐเจพ เจเจพเจซเจผเฉ เจนเฉเจฃ เจฆเฉ เจจเจพเจฒ เจนเฉ เจเจธเจจเฉเฉฐ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจฒเจ เจเจฎเฉเจนเจพเจ เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐ เจฆเฉเจตเฉเจเจพเฅค เจเจฆเฉเจ เจฌเจซเจฐ เจกเจพเจเจพ เจเจเฉฑเจ เจพ เจเจฐ เจฐเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจซเจฟเจฒเจเจฐ เจชเฉเจฐเฉเจธเฉเจธเจฐ เจฆเฉ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจชเจพเจตเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ, เจจเจฟเจธเจผเจเจฟเจฐเจฟเจ เจฎเฉเจก เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเฉเจเจพเฅค เจชเจฐ เจเจฟเจตเฉเจ เจนเฉ เจฌเจซเจฐเจฐ เจคเฉเจ เจฐเฉเจกเจฟเฉฐเจ เจซเฉฐเจเจธเจผเจจ เจเจผเฉเจฐเฉ เจคเฉเจ เจเจฒเจพเจตเจพ เจเฉเจ เจนเฉเจฐ เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉ, เจซเจฟเจฒเจเจฐ เจฆเจพ process() เจซเฉฐเจเจธเจผเจจ เจฒเฉเฉเฉเจเจฆเฉ เจเจเจพเจฐ เจฆเฉ เจนเจฟเฉฑเจธเจฟเจเจ เจตเจฟเฉฑเจ เจฌเจซเจฐเจฐ เจคเฉเจ เจกเฉเจเจพ เจฒเฉเจฃเจพ เจ
เจคเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจเจฆเฉเจ เจคเฉฑเจ เจเจน เจเจคเจฎ เจจเจนเฉเจ เจนเฉ เจเจพเจเจฆเจพเฅค
เจเจน เจกเฉเจเจพ เจเฉ เจ
เจเฉ เจฒเฉเฉเฉเจเจฆเจพ เจจเจนเฉเจ เจนเฉ, เจเฉเจชเจฒ เจฆเฉ เจชเจนเจฟเจฒเฉ เจคเฉฑเจค เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฌเจซเจฐ เจตเจฟเฉฑเจ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉ, เจเจฟเจธ เจจเจพเจฒ เจเจจเจชเฉเจ เจกเฉเจเจพ เจฆเฉ เจฌเจพเจ
เจฆ เจฆเฉ เจฌเจฒเจพเจ เจเฉเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค
เจฌเจฃเจคเจฐ เจเฉ เจฌเจซเจฐ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเฉ เจนเฉ:
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);
เจเฉเจเจฐ เจฌเจซเจฐ เจตเจฟเฉฑเจ เจเจเฉฑเจคเจฐ เจเฉเจคเฉ เจกเฉเจเจพ เจฆเจพ เจเจเจพเจฐ เจฌเฉเจจเจคเฉ เจเฉเจคเฉ เจกเฉเจเจพ เจคเฉเจ เจเฉฑเจ เจนเฉ (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