
рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рддрдВрддреНрд░ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдЕрд▓рдЧ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдмреВрдЯ (рдЗрдВрдЬреАред рдмреВрдЯ), рдпрд╣ "рдмреВрдЯрд╕реНрдЯреНрд░реИрдк" рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИ, рдЬреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ "рдХрд┐рд╕реА рдХреЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рджреНрд╡рд╛рд░рд╛ рдмрд╛рдбрд╝ рдкрд░ рдЦреБрдж рдХреЛ рдЦреАрдВрдЪреЛ" рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХреИрд╕реЗ рдЪрд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдореГрддрд┐ рд╢реВрдиреНрдпрддрд╛ рд╕реЗ рднрд░реА рд╣реЛрддреА рд╣реИ (
рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: рдпрджрд┐ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдЯреАрдХ рд╣реИ, рддреЛ рдХрдЪрд░рд╛ ) рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдПред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рд░реЛрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрддреАрдд рдореЗрдВ, рдЗрд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдореЛрд░реНрдЪреЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдпрд╣ рдмреВрдЯрд▓реЛрдбрд░ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмреВрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЖрдЬ, рдбреЗрд╕реНрдХрдЯреЙрдк рдХрдВрдкреНрдпреВрдЯрд░ рдмреВрдЯ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: BIOS рдХреЛрдб рдбрд┐рд╡рд╛рдЗрд╕ (рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡, рд╕реАрдбреА-рд░реЛрдо, рдпреВрдПрд╕рдмреА рд╕реНрдЯрд┐рдХ) рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдмреВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдмреВрдЯ рдХрд░рддрд╛ рд╣реИред
рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдУрдПрд╕ рдХреЛ рднреА рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреЗрд╕реНрдХрдЯреЙрдк рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдПрдореНрдмреЗрдбреЗрдб рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ "рдХреНрд▓рд╛рд╕рд┐рдХ" рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ, рдПрдХ рдмрд╣реБрдд рд╕рд░рд▓ (рдФрд░ рдЗрд╕рд▓рд┐рдП рддреЗрдЬ) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрдореЛрд░реА рдореЗрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд░реВрдк рдпрд╛ рд░реЙрдо рдХреЗ рдЕрдиреНрдп рдореЗрдВ), рддреЛ рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд░реАрд╕реЗрдЯ рдХреЗ рдмрд╛рдж рд╕реАрдкреАрдпреВ рдХрдорд╛рдВрдб рдХрд╛ рдХреНрд░рдо рдУрдПрд╕ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ (
рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: рдпрд╣ рд╣рдорд╛рд░реЗ рдЖрд░рдЯреАрдУрдПрд╕ рдореИрдХреНрд╕ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ ) рд╕рд╣рд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрд░рдЯреАрдУрдПрд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдореНрдмреЗрдбреЗрдб рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓ рдореЗрдВ
рдореБрдЦреНрдп рдФрд░ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реАрдкреАрдпреВ рд░реАрд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреЛрдб рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдирд┐рдкрдЯрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдпрдерд╛рд╕рдВрднрд╡ рдкреЛрд░реНрдЯреЗрдмрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдореЗрдВ
рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕реАрдкреАрдпреВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдУрдПрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлреАрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ: рд╕реНрдореГрддрд┐ рдЖрд░рдВрднреАрдХрд░рдг
рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛрдб рдореЗрдВ рд╕рднреА рд╕реНрдерд┐рд░ рдЪрд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд░реЛрдо рдпрд╛
рд░реИрдо рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрди рджреЛ
#define рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ
nuse_types.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг (рд╕рдВрдХрд▓рдХ рдФрд░ рд▓рд┐рдВрдХрд░) рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реЗрдЯ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдорддреМрд░ рдкрд░,
ROM рдЯрд╛рдЗрдк
рдХрд╛рд╕реНрдЯ (
рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ, рдХрд╛рд╕реНрдЯ рд╣рдореЗрд╢рд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдмреЗрд╣рддрд░ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЙрд╕реНрдЯ рд╣реИ ) рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░
RAM рдПрдХ рдЦрд╛рд▓реА рдореВрд▓реНрдп рд╣реИред
рд╕рднреА
ROM рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╡реИрдзрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рддрд╛рд░реНрдХрд┐рдХ рд╣реИред
рд░реИрдо рдЪрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рдЯреВрд▓рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░реЛрдо рд╕реЗ рд░реИрдо рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ); рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛрдб рдЖрд╡реЗрджрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рд░реИрдо рдореЗрдВ "рдирд┐рд░рдВрддрд░" рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЫреЛрдЯреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдХрдо рдЖрдкреВрд░реНрддрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рд╕рд░рдгрд┐рдпреЛрдВ) рдХреЗ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд░реЙрдо рдпрд╛ рд░реИрдо рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЗ
рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:
void main(void) { NUSE_Init(); /* initialize kernel data */ /* user initialization code here */ NUSE_Scheduler(); /* start tasks */ }
рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдХреНрд░рдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, NUSE_Init () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рд╕рднреА рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рдХреЛ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЯрд╛рд╕реНрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВред
- рдЕрдВрдд рдореЗрдВ, рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдЕрдиреБрд╕реВрдЪрдХ ( NUSE_Scheduler () ) рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
NUSE_Init () рдлрд╝рдВрдХреНрд╢рди
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рднреА рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХрд░реНрдиреЗрд▓ рдЪрд░ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред
рдиреАрдЪреЗ рдкреВрд░реНрдг рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╣реИ: void NUSE_Init(void) { U8 index; /* global data */ NUSE_Task_Active = 0; NUSE_Task_State = NUSE_STARTUP_CONTEXT; #if NUSE_SYSTEM_TIME_SUPPORT NUSE_Tick_Clock = 0; #endif #if NUSE_SCHEDULER_TYPE == NUSE_TIME_SLICE_SCHEDULER NUSE_Time_Slice_Ticks = NUSE_TIME_SLICE_TICKS; #endif /* tasks */ #if ((NUSE_SCHEDULER_TYPE != NUSE_RUN_TO_COMPLETION_SCHEDULER) || NUSE_SIGNAL_SUPPORT || NUSE_TASK_SLEEP || NUSE_SUSPEND_ENABLE || NUSE_SCHEDULE_COUNT_SUPPORT) for (index=0; index<NUSE_TASK_NUMBER; index++) { NUSE_Init_Task(index); } #endif /* partition pools */ #if NUSE_PARTITION_POOL_NUMBER != 0 for (index=0; index<NUSE_PARTITION_POOL_NUMBER; index++) { NUSE_Init_Partition_Pool(index); } #endif /* mailboxes */ #if NUSE_MAILBOX_NUMBER != 0 for (index=0; index<NUSE_MAILBOX_NUMBER; index++) { NUSE_Init_Mailbox(index); } #endif /* queues */ #if NUSE_QUEUE_NUMBER != 0 for (index=0; index<NUSE_QUEUE_NUMBER; index++) { NUSE_Init_Queue(index); } #endif /* pipes */ #if NUSE_PIPE_NUMBER != 0 for (index=0; index<NUSE_PIPE_NUMBER; index++) { NUSE_Init_Pipe(index); } #endif /* semaphores */ #if NUSE_SEMAPHORE_NUMBER != 0 for (index=0; index<NUSE_SEMAPHORE_NUMBER; index++) { NUSE_Init_Semaphore(index); } #endif /* event groups */ #if NUSE_EVENT_GROUP_NUMBER != 0 for (index=0; index<NUSE_EVENT_GROUP_NUMBER; index++) { NUSE_Init_Event_Group(index); } #endif /* timers */ #if NUSE_TIMER_NUMBER != 0 for (index=0; index<NUSE_TIMER_NUMBER; index++) { NUSE_Init_Timer(index); } #endif }
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЖрд░рдВрднрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ:
- NUSE_Task_Active - рд╕рдХреНрд░рд┐рдп рдХрд╛рд░реНрдп рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ, рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрднрд┐рдХ; рдмрд╛рдж рдореЗрдВ рдпрд╣ рд╢реЗрдбреНрдпреВрд▓рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
- NUSE_Task_State - рдорд╛рди NUSE_STARTUP_CONTEXT , рдЬреЛ рдХрд┐рд╕реА рднреА рдмрд╛рдж рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреЗ рд╕рд╛рде рдЖрд░рдВрднрд┐рдХред
- рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ NUSE_Tick_Clock рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
- рдпрджрд┐ рдЯрд╛рдЗрдо рд╕реНрд▓рд╛рдЗрд╕ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ NUSE_Time_Slice_Ticks рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди NUSE_TIME_SLICE_TICKS рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
рдлрд┐рд░ рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- NUSE_Init_Task () рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЙрд▓ рдХреЗрд╡рд▓ рддрднреА рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИ рдЬрдм рд░рди рдЯреВ рдХрдореНрдкреНрд▓реАрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рдЧреНрдирд▓, рдЯрд╛рд╕реНрдХ рдкреЙрдЬрд╝, рдФрд░ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХрд╛рдЙрдВрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрд╕ рд╕рдВрдпреЛрдЬрди рд╕реЗ рд░реИрдо рдореЗрдВ рдЗрди рдХрд╛рд░реНрдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП, рдЖрд░рдВрднреАрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
- NUSE_Init_Partition_Pool () рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
- рдкреНрд░рддреНрдпреЗрдХ рдореЗрд▓рдмреЙрдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NUSE_Init_Mailbox () рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдореЗрд▓рдмреЙрдХреНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
- NUSE_Init_Queue () рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХрддрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
- NUSE_Init_Pipe () рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЪреИрдирд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
- NUSE_Init_Semaphore () рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдорд╛рдлрд╝реЛрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕реЗрдорд╛рдлрд╝реЛрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
- NUSE_Init_Event_Group () рдкреНрд░рддреНрдпреЗрдХ рдИрд╡реЗрдВрдЯ рд╕рдореВрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рд╕рдореВрд╣ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
- NUSE_Init_Timer () рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рдЗрдорд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЯрд╛рдЗрдорд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
рдЯрд╛рд╕реНрдХ рдЖрд░рдВрднреАрдХрд░рдг
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд NUSE_Init_Task () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ: void NUSE_Init_Task(NUSE_TASK task) { #if NUSE_SCHEDULER_TYPE != NUSE_RUN_TO_COMPLETION_SCHEDULER NUSE_Task_Context[task][15] = /* SR */ NUSE_STATUS_REGISTER; NUSE_Task_Context[task][16] = /* PC */ NUSE_Task_Start_Address[task]; NUSE_Task_Context[task][17] = /* SP */ (U32 *)NUSE_Task_Stack_Base[task] + NUSE_Task_Stack_Size[task]; #endif #if NUSE_SIGNAL_SUPPORT || NUSE_INCLUDE_EVERYTHING NUSE_Task_Signal_Flags[task] = 0; #endif #if NUSE_TASK_SLEEP || NUSE_INCLUDE_EVERYTHING NUSE_Task_Timeout_Counter[task] = 0; #endif #if NUSE_SUSPEND_ENABLE || NUSE_INCLUDE_EVERYTHING #if NUSE_INITIAL_TASK_STATE_SUPPORT || NUSE_INCLUDE_EVERYTHING NUSE_Task_Status[task] = NUSE_Task_Initial_State[task]; #else NUSE_Task_Status[task] = NUSE_READY; #endif #endif #if NUSE_SCHEDULE_COUNT_SUPPORT || NUSE_INCLUDE_EVERYTHING NUSE_Task_Schedule_Count[task] = 0; #endif }
рдпрджрд┐ рд░рди рдЯреВ
рдХрдВрдкреНрд▓реАрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ
NUSE_Task_Context [рдХрд╛рд░реНрдп] [] рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдмреНрд▓реЙрдХ рдЖрд░рдВрднреАрдХреГрдд рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рддрддреНрд╡реЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╢реАрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрд╛рд╣рд░рдг (рдлрд╝реНрд░реАрд╕реНрдХреЗрд▓ рдХреЛрд▓реНрдбрдлрд╝рд╛рдпрд░) рдореЗрдВ (рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рд╕рдорд╛рди рд╣реЛрдЧрд╛) рдЕрдВрддрд┐рдо рддреАрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИрдВ:
- NUSE_Task_Context [рдХрд╛рд░реНрдп] [15] рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ ( SR , рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░) рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ #define NUSE_STATUS_REGISTER рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИред
- NUSE_Task_Context [рдХрд╛рд░реНрдп] [16] рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░ ( рдкреАрд╕реА , рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░) рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛрдб рдХреЗ рдЗрдирдкреБрдЯ рдмрд┐рдВрджреБ рдХрд╛ рдкрддрд╛ рдореВрд▓реНрдп рд╣реИ: NUSE_Task_Start_Address [рдХрд╛рд░реНрдп] ред
- NUSE_Task_Context [рдХрд╛рд░реНрдп] [17] рдореЗрдВ рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░ ( SP , рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░) рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рд░реНрдп рд╕реНрдЯреИрдХ ( NUSE_Task_Stack_Base (рдХрд╛рд░реНрдп) ) рдХреЗ рдкрддреЗ рдХреЗ рдпреЛрдЧ рдФрд░ рдХрд╛рд░реНрдп рд╕реНрдЯреИрдХ рдХреЗ рдЖрдХрд╛рд░ ( NUSE_Task_Stack_Size [рдХрд╛рд░реНрдп] ) рдХреЗ рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рдпрджрд┐ рд╕рдВрдХреЗрдд рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рд╕рдВрдХреЗрдд рдЭрдВрдбреЗ (
NUSE_Task_Signal_Flags [рдХрд╛рд░реНрдп] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИрдВред
рдпрджрд┐ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рд╕рдХреНрд░рд┐рдп рд╣реИ (рдЕрд░реНрдерд╛рдд,
NUSE_Task_Sleep () API рд╕реЗрд╡рд╛ рдХреЙрд▓), рдХрд╛рд░реНрдп рд╕рдордп-рд╕реАрдорд╛ рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Task_Timeout_Counter [рдХрд╛рд░реНрдп] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдпрджрд┐ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрд┐рдд рдЕрд╡рд╕реНрдерд╛ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ (
NUSE_Task_Status [рдХрд╛рд░реНрдп] ) рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (
NUSE_Task_Initial_State [рдХрд╛рд░реНрдп] ) рдореЗрдВ рдпрджрд┐
рдХрд╛рд░реНрдп рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИред рдЕрдиреНрдпрдерд╛, рд░рд╛рдЬреНрдп рдХреЛ
NUSE_READY рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
рдпрджрд┐ рдирд┐рдпреЛрдЬрди рдХрд╛рдЙрдВрдЯрд░ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Task_Schedule_Count [рдХрд╛рд░реНрдп] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ рдХреА рд╢реБрд░реБрдЖрдд
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
NUSE_Init_Partition_Pool () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:
void NUSE_Init_Partition_Pool(NUSE_PARTITION_POOL pool) { NUSE_Partition_Pool_Partition_Used[pool] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Partition_Pool_Blocking_Count[pool] = 0; #endif }
"рдкреНрд░рдпреБрдХреНрдд" рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Partition_Pool__Partition_Used [рдкреВрд▓] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ (
NUSE_Partition_Pool_Blocking_Count [рдкреВрд▓]) рдХрд╛ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдп рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░
рд╕реЗрдЯ рд╣реИред
рдореЗрд▓рдмреЙрдХреНрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
рдиреАрдЪреЗ рдкреВрд░рд╛
NUSE_Init_Mailbox () рдХреЛрдб рд╣реИ:
void NUSE_Init_Mailbox(NUSE_MAILBOX mailbox) { NUSE_Mailbox_Data[mailbox] = 0; NUSE_Mailbox_Status[mailbox] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Mailbox_Blocking_Count[mailbox] = 0; #endif }
рдореЗрд▓рдмреЙрдХреНрд╕ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ (
NUSE_Mailbox_Data [рдореЗрд▓рдмреЙрдХреНрд╕] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ рд░рд╛рдЬреНрдп (
NUSE_Mailbox_Status [рдореЗрд▓рдмреЙрдХреНрд╕] ) "рдЕрдкреНрд░рдпреБрдХреНрдд" (рдпрд╛рдиреА, рд╢реВрдиреНрдп) рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдЕрд╡рд░реБрджреНрдз рдореЗрд▓рдмреЙрдХреНрд╕ рдХрд╛рд░реНрдпреЛрдВ (
NUSE_Mailbox_Blocking_Count [рдореЗрд▓рдмреЙрдХреНрд╕] ) рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдХрддрд╛рд░ рдкреНрд░рд╛рд░рдВрдн
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
NUSE_Init_Queue () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:
void NUSE_Init_Queue(NUSE_QUEUE queue) { NUSE_Queue_Head[queue] = 0; NUSE_Queue_Tail[queue] = 0; NUSE_Queue_Items[queue] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Queue_Blocking_Count[queue] = 0; #endif }
рдХрддрд╛рд░ рдХреЗ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд┐рдд
рдмрд┐рдВрджреБ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдПрдБ рд╣реИрдВ
NUSE_Queue_Head [рдХрддрд╛рд░ ] рдФрд░
NUSE_Queue_Tail [рдХрддрд╛рд░] ) рд╡реЗ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрддрд╛рд░реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рд╡реЗ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ)ред рдХрддрд╛рд░ рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Queue_Items [рдХрддрд╛рд░] ) рднреА рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдЕрд╡рд░реБрджреНрдз рдХрддрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ (
NUSE_Queue_Blocking_Count [рдХрддрд╛рд░] ) рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдЪреИрдирд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
NUSE_Init_Pipe () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:
void NUSE_Init_Pipe(NUSE_PIPE pipe) { NUSE_Pipe_Head[pipe] = 0; NUSE_Pipe_Tail[pipe] = 0; NUSE_Pipe_Items[pipe] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Pipe_Blocking_Count[pipe] = 0; #endif }
рдЪреИрдирд▓ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИрдВ -
NUSE_Pipe_Head [рдкрд╛рдЗрдк] рдФрд░
NUSE_Pipe_Tail [рдкрд╛рдЗрдк] ) рдХреЛ рдПрдХ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЪреИрдирд▓ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рд╡реЗ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ)ред рдЪреИрдирд▓
рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Pipe_Items [рдкрд╛рдЗрдк] ) рднреА рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдЪреИрдирд▓ рдХрд╛ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдп рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Pipe_Blocking_Count [рдкрд╛рдЗрдк] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рд╕реЗрдорд╛рдлреЛрд░ рдЖрд░рдВрднреАрдХрд░рдг
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
NUSE_Init_Semaphore () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:
void NUSE_Init_Semaphore(NUSE_SEMAPHORE semaphore) { NUSE_Semaphore_Counter[semaphore] = NUSE_Semaphore_Initial_Value[semaphore]; #if NUSE_BLOCKING_ENABLE NUSE_Semaphore_Blocking_Count[semaphore] = 0; #endif }
рд╕реЗрдореАрдлреЛрд░ рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Semaphore_Counter [рд╕реЗрдореАрдлреЛрд░]] рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп (
NUSE_Semaphore_Initial_Value [рд╕реЗрдореАрдлреЛрд░] ) рдХреЗ рд╕рд╛рде рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рд▓реЙрдХ рдХрд┐рдП рдЧрдП
рдЕрд░реНрдз- рдХрд╛рд░реНрдп рдЯрд╛рд╕реНрдХ рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Semaphore_Blocking_Count [semaphore] ) рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╡реЗрдВрдЯ рд╕рдореВрд╣реЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
NUSE_Init_Event_Group () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:
void NUSE_Init_Event_Group(NUSE_EVENT_GROUP group) { NUSE_Event_Group_Data[group] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Event_Group_Blocking_Count[group] = 0; #endif }
рдИрд╡реЗрдВрдЯ рд╕рдореВрд╣ рдХреЗ рдЭрдВрдбреЗ рд░реАрд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд
NUSE_Event_Group_Data [рд╕рдореВрд╣] рдХреЛ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдИрд╡реЗрдВрдЯ рдзреНрд╡рдЬ рд╕рдореВрд╣ (
NUSE_Event_Group_Blocking_Count [рд╕рдореВрд╣] ) рдХрд╛ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдп рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдЯрд╛рдЗрдорд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ
рдиреАрдЪреЗ
NUSE_Init_Timer () рдХрд╛ рдкреВрд░реНрдг рдХреЛрдб рд╣реИ;
void NUSE_Init_Timer(NUSE_TIMER timer) { NUSE_Timer_Status[timer] = FALSE; NUSE_Timer_Value[timer] = NUSE_Timer_Initial_Time[timer]; NUSE_Timer_Expirations_Counter[timer] = 0; }
рдЯрд╛рдЗрдорд░ рдХреА рд╕реНрдерд┐рддрд┐ (
NUSE_Timer_Status [рдЯрд╛рдЗрдорд░] ) "рдЕрдкреНрд░рдпреБрдХреНрдд", рдЕрд░реНрдерд╛рддреН рдкрд░ рд╕реЗрдЯ рд╣реИ
рдЧрд▓рддредрдЙрд▓рдЯреА рдЧрд┐рдирддреА рдореВрд▓реНрдп (
NUSE_Timer_Value [рдЯрд╛рдЗрдорд░ ]) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп (
NUSE_Timer_Initial_Time [рдЯрд╛рдЗрдорд░ ]) рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рдЙрдВрдЯрд░ (
NUSE_Timer_Expirations_Counter [рдЯрд╛рдЗрдорд░] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб
рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡реЗрджрди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рд╛рд░рдВрднред рд╕реНрдЯреИрдЯрд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдСрдЯреЛрдореИрдЯрд┐рдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдХреА рд╕реНрдкрд╖реНрдЯ рдлрд┐рд▓рд┐рдВрдЧ рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
- рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рднреА рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдЬ рдкрд░ рд╕реНрдЯреЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рд╡реИрд▓реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ "рд╕реНрд╡рд╛рдореА" рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпрд╛ рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ #define рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд░рдгрд┐рдпреЛрдВ (рдХрд╛рд░реНрдп рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрдбреЗрдХреНрд╕ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
- рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд░рдВрднреАрдХрд░рдгред рдпрд╣ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рд▓рдХреНрд╖реНрдп рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЗ рдЖрд░рдВрдн рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рдХрд░реНрдиреЗрд▓ рд╕реЗрд╡рд╛рдУрдВ (рдПрдкреАрдЖрдИ рдХреЙрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрддрд╛рд░ рдпрд╛ рдореЗрд▓рдмреЙрдХреНрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреВрд░реНрд╡-рдЖрдмрд╛рджреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдп рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдПрдкреАрдЖрдИ рдХреЙрд▓ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ: рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрдиреБрд╕реВрдЪрдХ рдХреА рд╕рдХреНрд░рд┐рдпрддрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВ, рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░реЛрдХрдирд╛ / рд░реЛрдХрдирд╛)ред рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░
NUSE_Task_State рдХреЛ рдЗрд╕ рд╕реАрдорд╛ рдХреЛ
рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
NUSE_STARTUP_CONTEXT рдкрд░ рд╕реЗрдЯ
рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╢реЗрдбреНрдпреВрд▓рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
рдЖрд░рдВрднреАрдХрд░рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб - рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рд░рд╣рддрд╛ рд╣реИред рдЕрдиреБрд╕реВрдЪрдХ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ (
# 9 ) рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреНрд░рдореБрдЦ рдЪрд░рдгреЛрдВ рдХрд╛ рдХреНрд░рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ NUSE_Task_State рдХреЛ NUSE_TASK_CONTEXT рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ ред
- рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдпрджрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рдХрд╛рд░реНрдп рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рдЕрдиреНрдпрдерд╛, рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЕрдиреБрд╕реВрдЪрдХ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - NUSE_Scheduler () ред
рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред рд░рди рдЯреВ рдХрдореНрдкреНрд▓реАрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдпреЛрдЬрдирд╛ рдЪрдХреНрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдЕрдиреБрд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдХрд╛рд░реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдирд┐рджрд╛рди рдФрд░ рддреНрд░реБрдЯрд┐ рдЬрд╛рдБрдЪ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред
рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдХреЙрд▓рд┐рди рд╡рд╛рд▓реНрд╕ рддреАрд╕ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдЕрдм рдореЗрдВрдЯрд░ рдПрдВрдмреЗрдбреЗрдб (рдореЗрдВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдкреНрд░рднрд╛рдЧ) рдореЗрдВ рдПрдХ рдлрд░реНрдорд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИред рдХреЙрд▓рд┐рди рд╡рд╛рд▓реНрд╕ рдЕрдХреНрд╕рд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рд╕реЗрдорд┐рдирд╛рд░реЛрдВ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реИрдВ, рдХрдИ рддрдХрдиреАрдХреА рд▓реЗрдЦреЛрдВ рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рджреЛ рдХрд┐рддрд╛рдмреЗрдВ рд╣реИрдВред рдмреНрд░рд┐рдЯреЗрди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред
рдХреЙрд▓рд┐рди рдХрд╛ рдкреЗрд╢реЗрд╡рд░
рдмреНрд▓реЙрдЧ , рдИ-рдореЗрд▓: colin_walls@mentor.comред