📄 design.txt
字号:
側偍丆僴儞僪儔偺弌岥張棟偼丆僞乕僎僢僩埶懚晹偱採嫙偝傟傞丏
(5) 僞僗僋偺婲摦偲廔椆帪偺張棟
僞僗僋婲摦帪偺儗僕僗僞暅婣偲丆僞僗僋廔椆帪偺儗僕僗僞曐懚偼丆僞乕僎僢僩
埶懚晹偺幚憰偵傛偭偰偼徣棯偱偒傞丏
僞僗僋偺婲摦偼丆create_context 偲 activate_context 偵傛偭偰丆師偵偦偺
僞僗僋傊偺僨傿僗僷僢僠偑婲偙偭偨帪偵丆僞僗僋偺婲摦斣抧偐傜幚峴偡傞傛偆
偵僞僗僋僐儞僥僉僗僩傪愝掕偡傞偙偲偱峴偆丏
僞僗僋廔椆帪偵偼丆unlock_cpu 偵戙偊偰丆exit_and_dispatch 傪屇傃弌偡丏
exit_and_dispatch 偼丆尰嵼幚峴拞偺僐儞僥僉僗僩傪曐懚偣偢偵丆僨傿僗僷僢
僠傪峴偆娭悢偱偁傞丏
側偍丆create_context丆activate_context丆exit_and_dispatch 偺張棟偼丆僞乕
僎僢僩埶懚晹偱採嫙偝傟傞丏
(6) 幚峴偱偒傞忬懺偺僞僗僋偑側偄応崌偺埖偄
幚峴偱偒傞忬懺偺僞僗僋偑側偄応崌偺懳嶔偲偟偰丆傾僀僪儖僞僗僋傪摫擖偡傞
曽朄偑偁傞丏傾僀僪儖僞僗僋傪摫擖偡傞偲丆僨傿僗僷僢僠儍偺搑拞偱妱崬傒懸
偪傪偡傞昁梫偑側偄偺偱丆僜僼僩僂僃傾偺峔憿揑偵偼僄儗僈儞僩偵側傞丏傑偨丆
僨傿僗僷僢僠儍拞偱偺忦審暘婒傕尭傞丏媡偵丆RAM 偺巊梡検偑偳偆偟偰傕憹偊
偰偟傑偆偲偄偆栤戣偑偁傞丏偙偺偙偲偐傜丆傾僀僪儖僞僗僋偼巊傢側偄曽恓偲
偡傞丏
(7) 僨傿僗僷僢僠曐棷忬懺偺曐帩曽朄
僨傿僗僷僢僠偑曐棷偝傟傞偺偼丆師偺偄偢傟偐偺応崌偱偁傞丏
丒僨傿僗僷僢僠嬛巭忬懺
丒旕僞僗僋僐儞僥僉僗僩幚峴拞
CPU椺奜僴儞僪儔偼旕僞僗僋僐儞僥僉僗僩偱幚峴偡傞偲偟偨偨傔丆CPU椺奜僴儞
僪儔幚峴拞偼丆旕僞僗僋僐儞僥僉僗僩幚峴拞偵娷傔偰峫偊傞偙偲偑偱偒傞丏傑
偨丆僒乕價僗僐乕儖偼偡傋偰妱崬傒嬛巭偱幚峴偡傞偨傔丆僒乕價僗僐乕儖幚峴
拞傕峫椂偡傞昁梫偑側偄丏
偙偺拞偱丆旕僞僗僋僐儞僥僉僗僩幚峴拞偼丆sense_context() 偱敾掕偱偒傞丏
偦偙偱丆僨傿僗僷僢僠嬛巭忬懺傪昞偡BOOL宆偺曄悢傪梡堄偡傟偽丆僨傿僗僷僢
僠曐棷忬懺偑曐帩偱偒傞偙偲偵側傞丏幚嵺偵偼丆僨傿僗僷僢僠嫋壜忬懺傪昞偡
BOOL宆偺曄悢 enatex 傪摫擖偟偨丏
仸 僒乕價僗僐乕儖幚峴拞偵妱崬傒傪嫋壜偡傞乮僨傿僗僷僢僠偼嫋壜偟側偄乯
応崌偵偼丆僒乕價僗僐乕儖張棟偺搑拞偱婲摦偝傟偨妱崬傒僴儞僪儔偺弌岥偱偼丆
僨傿僗僷僢僠傕僞僗僋椺奜張棟儖乕僠儞偺婲摦傕峴偭偰偼側傜側偄丏嶲徠偡傞
応強偑堘偆偙偲偐傜丆椉幰偺嬛巭傪暿乆偺曄悢偵偡傞曽朄傕峫偊傜傟傞偑丆愝
掕偡傞曽偺岠棪傪峫偊傞偲丆堦偮偺曄悢偱椉曽嬛巭偱偒傞曽偑椙偄偲巚傢傟傞丏
偡側傢偪丆僨傿僗僷僢僠嬛巭忬懺偲僒乕價僗僐乕儖幚峴拞忬懺傪丆摨偠曄悢傪
價僢僩僼傿乕儖僪偵暘偗偰婰壇偡傞偺偑懨摉偲峫偊傜傟傞丏偝傜偵丆CPU椺奜
僴儞僪儔傪僞僗僋僐儞僥僉僗僩偱幚峴偡傞幚憰偱偼丆摨偠曄悢偵CPU椺奜僴儞
僪儔偺僱僗僩夞悢傕婰壇偟偨偔側傞丏椺偊偽丆師偺傛偆側曄悢 pndflg 傪摫擖
偡傞曽朄偑峫偊傜傟傞丏
丒嵟壓埵價僢僩 乧 僒乕價僗僐乕儖幚峴拞
仺 1 側傜椉幰曐棷
丒壓偐傜2價僢僩傔 乧 僨傿僗僷僢僠嬛巭忬懺
仺 1 側傜僞僗僋愗懼偊曐棷
丒巆傝偺價僢僩 乧 CPU椺奜僴儞僪儔偺僱僗僩夞悢
仺 0 埲奜側傜僞僗僋愗懼偊曐棷
係丏僒乕價僗僐乕儖偺婰弎曽朄
(1) sns_xxx
sns_ctx丆sns_loc丆sns_dsp丆sns_tex 偼丆僒乕價僗僐乕儖撪晹偱僋儕僥傿僇
儖僙僋僔儑儞傪嶌傜側偔偰傕幚憰偱偒傞丏
(2) 僞僗僋僐儞僥僉僗僩愱梡偺僒乕價僗僐乕儖
仸 CPU儘僢僋忬懺偱屇偽傟傞偲僄儔乕偵側傞偙偲偵拲堄丏
(2-1) 僞僗僋愗姺偊傪婲偙偝側偄傕偺乮椺: get_pri乯
僄儔乕僠僃僢僋
t_lock_cpu();
/*
* 僋儕僥傿僇儖僙僋僔儑儞幚峴
*/
t_unlock_cpu();
(2-2) 僞僗僋愗姺偊傪婲偙偡壜擻惈偺偁傞傕偺乮椺: act_tsk乯
僄儔乕僠僃僢僋
t_lock_cpu();
/*
* 僋儕僥傿僇儖僙僋僔儑儞幚峴
*/
if (僞僗僋僨傿僗僷僢僠偑昁梫 && enadsp) {
/* 帺僞僗僋傪懸偪忬懺偵偡傞僒乕價僗僐乕儖偱偼丆
忋偱 enadsp 傪僠僃僢僋偡傞昁梫偼側偄丏*/
dispatch();
}
t_unlock_cpu();
(2-3) 帺僞僗僋傪廔椆偡傞傕偺乮ext_tsk乯
僄儔乕僠僃僢僋
t_lock_cpu();
/*
* 僋儕僥傿僇儖僙僋僔儑儞幚峴
*/
exit_and_dispatch();
(2-4) ras_tex
僄儔乕僠僃僢僋
tcb = get_tcb_self(tskid);
t_lock_cpu();
E_OBJ僄儔乕偺僠僃僢僋
tcb->texptn |= rasptn;
if (tcb == runtsk && runtsk->enatex) {
texptn = runtsk->texptn;
runtsk->enatex = FALSE;
runtsk->texptn = 0;
t_unlock_cpu();
(*runtsk->tinib->texrtn)(texptn, runtsk->tinib->exinf);
/* CPU儘僢僋忬懺偺傑傑儕僞乕儞偟偨応崌傪懳嶔 */
if (!t_sense_lock()) {
t_lock_cpu();
}
僞僗僋椺奜張棟儖乕僠儞偺婲摦忦審傪嵞搙僠僃僢僋仌婲摦
乮runtsk->texptn 偑 0 偵側傞傑偱忋偺張棟傪孞傝曉偡乯
runtsk->enatex = TRUE;
}
t_unlock_cpu();
(2-5) ena_tex
僄儔乕僠僃僢僋
t_lock_cpu();
E_OBJ僄儔乕偺僠僃僢僋
runtsk->enatex = TRUE;
if (runtsk->texptn != 0) {
texptn = runtsk->texptn;
runtsk->enatex = FALSE;
runtsk->texptn = 0;
t_unlock_cpu();
(*runtsk->tinib->texrtn)(texptn, runtsk->tinib->exinf);
/* CPU儘僢僋忬懺偺傑傑儕僞乕儞偟偨応崌傪懳嶔 */
if (!t_sense_lock()) {
t_lock_cpu();
}
僞僗僋椺奜張棟儖乕僠儞偺婲摦忦審傪嵞搙僠僃僢僋仌婲摦
乮runtsk->texptn 偑 0 偵側傞傑偱忋偺張棟傪孞傝曉偡乯
runtsk->enatex = TRUE;
}
t_unlock_cpu();
(3) 旕僞僗僋僐儞僥僉僗僩愱梡偺僒乕價僗僐乕儖
仸 CPU儘僢僋忬懺偱屇偽傟傞偲僄儔乕偵側傞偙偲偵拲堄丏
(3-1) 僞僗僋愗懼偊傪婲偙偝側偄傕偺
i_lock_cpu();
/*
* 僋儕僥傿僇儖僙僋僔儑儞幚峴
*/
i_unlock_cpu();
(3-2) 僞僗僋愗懼偊傪婲偙偡壜擻惈偺偁傞傕偺乮椺: iact_tsk乯
i_lock_cpu();
/*
* 僋儕僥傿僇儖僙僋僔儑儞幚峴
*
* 僞僗僋僨傿僗僷僢僠偑昁梫側応崌偵偼丆reqflg 傪 TRUE 偵偡傞丏
* 偨偩偟丆enadsp 偑 FALSE 偺帪偼丆reqflg 傪 TRUE 偵偟側偄丏
*/
i_unlock_cpu();
(3-3) iras_tex
僄儔乕僠僃僢僋
tcb = get_tcb(tskid);
i_lock_cpu();
E_OBJ僄儔乕偺僠僃僢僋
tcb->texptn |= rasptn;
if (tcb == runtsk && runtsk->enatex) {
reqflg = TRUE;
}
i_unlock_cpu();
埲忋
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -