You are on page 1of 38

Event Flag T-kernel

Nhm 2: Lm Lng Bnh MSSV:50700161


V Vn Vn MSSV:50702906

I/Gii thiu
ng b ha l cn thit cho cc task share cc

mutually exclusive resources(ti nguyn loi tr tng h)


(devices, buffers, vv) v cho php cc task c thc
thi ng thi
Vd: Task A cn mt kt qu t task B, th task A ch c th

chy cho n khi task B cho ra kt qu m task A cn.

ng b task c thc hin bng cch s dng 1 trong

2 loi c ch
1) Event Flag
2) Semaphores.

II/Khi nim
Event flag (hay c s kin) l mt i tng c dng

cho s ng b ha, n cha mt mu cc bit (bit


pattern(c s dng nh cc c)) cho bit s tn ti
ca s kin tng ng.

II/Khi nim
Event flag c s dng khi ng b ha task lc khng

c chia s ti nguyn. N cho php mt hay nhiu task


ch i cho mt s kin c quy nh xy ra. Mt
Event Flag c th tn ti hai trng thi: triggered v
non-triggered.
Mt Event Flag trong trng thi triggered s ch ra mt
task ang waiting s thot ra khi trng thi wait. Ni
cch khc, nu mt Event Flag ang trng thi nontriggered, th mt task ang waiting s phi tip tc ch
i.

II/Khi nim

II/Khi nim
OS cung cp cc hm to v hu b mt event flag, thit lp hay

xo event flag, i event flag , v tham kho trng thi ca event flag.
Mi event flag c nh danh bi mt s ID gi l event flag ID.
Ngoi mu bit cho bit s tn ti ca s kin tng ng, mi event
flag c mt hng i cc task m ang ch event flag. i khi mu bit
ca event flag cn c gi n gin l event flag (v sau khi ni n
event flag cn c ngm hiu l mu bit ca event flag trong mt s
hm).
Chng trnh khai bo s kin c th thit lp hay xo cc bit c
ch nh ca event flag. Mt task c th i tt c hay ch mt vi cc
bit event flag c thit lp. Mt task m ang i mt event flag th
c t trong hng i ca event flag .

III/API trong T-Kernel


1/Hm tk_cre_flg
Hm tk_cre_flg
ID flgid = tk_cre_flg ( T_CFLG * pk_cflg ) ;
Thng s:
T_CFLG * pk_cflg: thng tin v Event Flag c to.
ID flgid : Event flag ID hay m li (Error codes)
Description
To mt event flag v gn cho n mt event flag ID.

Next
Function

Hm tk_cre_flg
Chi tit ca pk_cflg :

VP exinf: Thng tin ph c thm vo

ATR flgatr: Cc thuc tnh ca event flag

INT iflgptn: Mu event flag khi to

Return

Error codes
Chi tit v cc gi tr tr v ca Error codes
E_OK: Kt thc bnh thng
E_NOMEM: Thiu b nh ( vng nh cho khi iu
khin khng c cp pht)
E_LIMIT: S lng event flag vt qu gii hn ca h
thng
E_RSATR: Li thuc tnh (flgatr khng hp l hay khng
s dng c)
E_PAR: Li tham s ( pk_cflg khng hp l)

Return

VP exinf
exinf c th c s dng t do bi ngi dng chn

thm tthng tin v event flag, v c tham kho bng


hm tk_ref_flg. Nu thng tin ca event flag l mt vng
ln, ng dng phi xin cp pht vng nh ring bic v
t a ch vo exinf.

Return

Flgatr
flgatr cho bit cc thuc tnh h thng trong cc bit thp ca n v

thng tin hin thc trong cc bit cao


flgatr := (TA_TFIFO || TA_TPRI) | (TA_WMUL ||

TA_WSGL) | [TA_NODISWAI]
TA_TFIFO: Cc task i trong hng i theo th t FIFO
TA_TPRI: Cc task i trong hng i theo u tin
TA_WSGL: Ch cho php mt task i mt event flag ti mt thi

im
TA_WMUL: Cho php nhiu task i mt event flag ti cng mt
thi im
TA _NODISWAI: Cm lm v hiu trng thi i bi hm
tk_dis_wai

Return

2/Hm tk_del_flg
Hm tk_del_flg
ER ercd = tk_del_flg ( ID flgid );

Thng s:.
ID flgid : Event flag ID
ER ercd: M li (Error Codes)

Description

Previous

Next
Function

Error codes
Chi tit v cc gi tr tr v ca Error codes
E_OK: Kt thc bnh thng
E_ID: flgid khng hp l hay khng c s dng
E_NOEXS: Event flag c ch nh trong flgid khng tn
ti

Return

Description
Loi b mt event flag c ID l flgid .
Hm system call ny gii phng event flag ID tng ng

v khng gian b nh khi iu khin n.


Hm ny kt thc bnh thng ngay c khi c mt task
ang i event flag, nhng m li E_DLT c tr v cho
task .

Return

3/tk_set_flg
Hm tk_set_flg
ER ercd = tk_set_flg ( ID flgid, UINT setptn );
Thng s:.
ID flgid: Event flag ID
UINT setptn: Mu bit c thit lp
ER ercd M li (Error Codes)
Description

Previous

Next
Function

Description
Hm tk_set_flg thit lp cc bit c ch trong setptn cho

mt event flag ( ni n mu bit ca event flag) c ch


nh trong flgid.
Sau khi gi tr ca event flag c thay i bi hm
tk_set_flg, nu iu kin gii phng trng thi i ca
mt task tc l tk_wai_flg c tha mn, th trng thi
WAIT ca task s c gii phng v c t trong
trng thi RUN hay READY (hay SUSPEND nu trng
thi ca task l WAIT-SUSPEND).
(Continue)

Description
Nhiu task c th cng i mt event flag nu event flag

c thuc tnh TA_WMUL. V event flag trong trng


hp ny c mt hng i cc task. Khi mt hm tk_set_flg
gi cho mt event flag c th gii phng nhiu task ang
i cng mt lc.
Khng c g xy ra cho event flag nu cc bit ca setptn
u l 0 vi hm tk_set_flg. V khng c li tr v trng
hp ny.

Return

Error codes
Chi tit v cc gi tr tr v ca Error codes
E_OK Kt thc bnh thng
E_ID flgid khng hp l hay khng c s dng
E_NOEXS Event flag c ch nh trong flgid khng tn
ti

Return

4/tk_clr_flg
Hm tk_clr_flg
ER ercd = tk_clr_flg ( ID flgid, UINT clrptn);
Thng s:.
D flgid: Event flag ID
UINT clrptn: Mu bit c xo
ER ercd M li (Error Code)
Description

Previous

Next
Function

Description
Hm tk_clr_flg xo cc bit ca event flag da trn cc bit

0 tng ng ca clrptn. C ngha l mt tch lun l ca


gi tr event flag trong flgid v gi tr ca clrptn s c
thc hin.
Vic xo event flag bi tk_clr_flg s khng gii phng bt
k task no ang i event flag, iu ny c ngha
dispatching s khng bao gi xut hin cng vi
tk_clr_flg.
(Continue)

Description
Khng c g xy ra cho event flag nu cc bit ca clrptn

u l 1 vi hm tk_clr_flg. V khng c li tr v trong


trng hp ny.

Return

Error codes
Chi tit v cc gi tr tr v ca Error codes
E_OK: Kt thc bnh thng
E_ID : flgid khng hp l hay khng c s dng
E_NOEXS: Event flag c ch nh trong flgid khng
tn ti

Return

5/tk_wai_flg
Hm tk_wai_flg
ER ercd = tk_wai_flg (ID flgid, UINT waiptn, UINT wfmode, UINT*

flgptn,TMO tmout );

Thng s:.
ID flgid: Event flag ID
UINT waiptn: Mu bit i
UINT wfmode: iu kin gii phng i
UINT flgptn: Mu bit ca event flag (thng c gi l gi tr ca

event flag)
TMO tmout: Thi gian timeout
ER ercd M li (Error Code)

Description

Previous

Next
Function

Error codes
Chi tit v cc gi tr tr v ca Error codes
E_OK: Kt thc bnh thng
E_ID flgid: khng hp l hay khng c s dng
E_PAR: Li tham s ( waiptn = 0,wfmode khng hp l, hay
tmout (2))
E_NOEXS: Event flag c ch nh trong flgid khng tn ti
E_DLT: i tng c i b xo (event flag ch nh b xo
khi task ang i)
E_TMOUT: Thm d b li hay timeout
(continue)

Error codes
E_RLWAI Trng thi WAIT ca Task c gii phng ( do

Task nhn c tk_rel_wai khi ang trng thi WAIT)


E_DISWAI Trng thi WAIT ca Task c gii phng bi
trng thi WAIT ca Task b v hiu
E_CTX Li ng cnh ( hm c gi t mt Task c lp vi
ng cnh hay dispatch b v hiu)
E_OBJ Nhiu task cng i mt event flag c thuc tnh
TA_WSGL (khng cho php nhiu task cng i)(continue)

Return

UINT wfmode
wfmode c ch nh nh sau:
wfmode := (TWF_ANDW || TWF_ORW) | [TWF_CLR ||
TWF_BITCLR]

TWF_ANDW 0x00 AND wait condition


TWF_ORW 0x01 OR wait condition
TWF_CLR 0x10 Clear all
TWF_BITCLR 0x20 Clear condition bit only

Return

TWF_ANDW
Khi TWF_ANDW c ch nh, task gi hm s i cho

ti khi tt c cc no c ch nh trong waiptn (nhng


bit cao) c thit lp cho event flag (flgid) (AND wait).

Return

TWF_ORW
Khi TWF_ORW c ch nh, task gi hm s i cho

ti khi bt c bit no c ch nh tng ng trong


waiptn (nhng bit cao) c thit lp cho event flag
(flgid) (OR wait).

Return

TWF_CLR
Nu TWF_CLR c ch nh th tt c cc bit ca event

flag s c xo v 0 mi khi c mt task tho iu kin


v c gii phng khi trng thi WAIT.

Return

TWF_BITCLR
Cn nu TWF_BITCLR c ch nh th ch c nhng

bit ca event flag m bit tng ng trong waiptn l mc 1


c xo v 0 mi khi c mt task tho iu kin v c
gii phng khi trng thi WAIT, tc l gi tr ca event
flag &= ~ waiptn.

Return

flgptn
Tham s tr v flgptn cha gi tr ca event flag sau khi

trng thi ca mt task c gii phng bi hm system


call ny. Nu TWF_CLR hay TWF_BITCLR c ch
nh th gi tr ca event flag trc khi b xo s c tr
v. Gii tr tr v bi flgptn thc hin cc iu kin gii
phng trng thi i ca hm system call ny. Ni dung
ca flgptn s khng xc nh nu trng thi i c gii
phng do timeout hay nhng l do tng t.

Return

Time Out
Mt thi gian i ti a (timeout) c th c thit

lp trong tmout. Nu b timeout trc khi iu kin


gii phng i tha mn (tk_sig_sem khng c
thc thi), th hm system call ny s kt thc, v tr
v m li E_TMOUT. Ch c gi tr dng mi c
gn cho tmout. n v ca timeout l ms. Khi
TMO_POL =0 c gn cho tmout, th m li
E_TMOUT c tr v m khng vo trng thi WAIT
ngay c khi khng c ti nguyn no b chim gi.
Khi TMO_FEVR = -1 c gn cho tmout, th task s
i cho ti khi chim gi c ti nguyn m khng
b timeout.

Return

Description
i mt event flag c flag ID l flgid, iu kin gii

phng c ch nh trong wfmode.


Nu event flag c ch nh trong flgid tha iu kin
c thit lp trong wfmode, th task s tip tc thc thi
m khng cn vo trng thi WAIT.

Return

6/tk_ref_flg
Hm tk_ref_flg
ER ercd = tk_ref_flg ( ID

flgid, T_RFLG * pk_rflg ) ;

Thng s:.
ID flgid Event flag ID
T_RFLG* pk_rflg a ch ca gi tthng tin v trng thi
ER ercd

M li (Error Code)

Description

Previous
Function

The End

pk_rflg
Chi tit pk_rflg :
VP exinf: Thng tin m rng
ID wtsk: Thng tin task ang i
INT flgptn: Mu bit ca event flag

Return

Error Code
Chi tit v cc gi tr tr v ca Error codes
E_OK: Kt thc bnh thng
E_ID:
flgid khng hp l hay khng c s
dng
E_NOEXS: Event flag c ch nh trong flgid
khng tn ti
E_PAR: Li tham s (a ch ca gi tthng tin
tr v khng dng c)

Return

Description
Tham kho trng thi ca event flag c event

flag ID l flgid, truyn trong cc thng s tr v


mu bit hin ti (flgptn), tthng tin task ang i
event flag (wtsk), v thng tin m rng (exinf).
Tham s wtsk cho bit ID ca mt task ang i
event flag. Nu c nhiu hn mt task ang i
th ID ca task ng u hng i s c tr v.
Nu khng c task no th wtsk = 0 c tr v.
Nu event flag tng ng khng tn ti, m li
E_NOEXS c tr v.

Return

Thank you For


Paying Attention

You might also like