RTOS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рд╕рдЪреНрдЪрд╛рдИред рдЕрдиреБрдЪреНрдЫреЗрдж # 19ред рд╕реЗрдорд╛рдлреЛрд░реЗрд╕: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ



рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ (# 5) рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕реЗрдорд╛рдлреЛрд░рд╕ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдирдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ:
рдЕрдиреБрдЪреНрдЫреЗрдж # 18ред рдЗрд╡реЗрдВрдЯ рдлрд╝реНрд▓реИрдЧ рд╕рдореВрд╣: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 17 рдЗрд╡реЗрдВрдЯ рдлрд╝реНрд▓реИрдЧ рд╕рдореВрд╣: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 16ред рд╕рдВрдХреЗрдд
рдЕрдиреБрдЪреНрдЫреЗрдж # 15 рдореЗрдореЛрд░реА рд╡рд┐рднрд╛рдЬрди: рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 14ред рд╕реНрдореГрддрд┐ рдХреА рдзрд╛рд░рд╛рдПрдВ: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 13ред рдЯрд╛рд╕реНрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЕрд╕рдорд░реНрдерд┐рдд рдПрдкреАрдЖрдИ рдХреЙрд▓
рдЕрдиреБрдЪреНрдЫреЗрдж # 12 рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 11ред рдХрд╛рд░реНрдп: рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрдп
рдЕрдиреБрдЪреНрдЫреЗрдж # 10 рд╕рдордпрдмрджреНрдзрдХ: рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рд╕рдВрджрд░реНрдн рд╕рдВрд░рдХреНрд╖рдг
рдЕрдиреБрдЪреНрдЫреЗрдж # 9 рд╕рдордпрдмрджреНрдзрдХ: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЕрдиреБрдЪреНрдЫреЗрдж # 8 рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ: рдЖрдВрддрд░рд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди
рдЕрдиреБрдЪреНрдЫреЗрдж # 7 рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ: рдкрд░рд┐рдЪрдп
рдЕрдиреБрдЪреНрдЫреЗрдж # 6 рдЕрдиреНрдп RTOS рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # рел рдХрд╛рд░реНрдп рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди
рдЕрдиреБрдЪреНрдЫреЗрдж # 4 рдХрд╛рд░реНрдп, рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ, рдФрд░ рд╡реНрдпрд╡рдзрд╛рди
рдЕрдиреБрдЪреНрдЫреЗрдж # рей рдХрд╛рд░реНрдп рдФрд░ рдпреЛрдЬрдирд╛
рдЕрдиреБрдЪреНрдЫреЗрдж # 2 рдЖрд░рдЯреАрдУрдПрд╕: рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЛрдб
рдЕрдиреБрдЪреНрдЫреЗрдж # 1ред рдЖрд░рдЯреАрдУрдПрд╕: рдкрд░рд┐рдЪрдпред

рд╕реЗрдорд╛рдлреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдг рдореЗрдВ рд╕реЗрдорд╛рдлреЛрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЖрд╡реЗрджрди рдореЗрдВ 16 рд╕реЗрдорд╛рдлрд╝реЛрд░ рддрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╕реЗрдорд╛рдлреЛрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдХреЛрдб рдЖрд╡реЗрджрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдПрдХ рд╕реЗрдорд╛рдлреЛрд░ U8 рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рд╣реИ, рдЬрд┐рд╕рдХреА рдкрд╣реБрдВрдЪ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХрдИ рдХрд╛рд░реНрдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдХрд╛рд░реНрдп рдЕрд░реНрдз-рдХрд╛рдЙрдВрдЯрд░ (рдХреИрдкреНрдЪрд░) рдХреЗ рдореВрд▓реНрдп рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ (рд░рд┐рд▓реАрдЬрд╝)ред рдЪрдпрдирд┐рдд рдПрдкреАрдЖрдИ рдХреЙрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢реВрдиреНрдп рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрдорд╛рдлреЛрд░ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдпрд╛ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕реЗрдорд╛рдлреЛрд░ рд╕реЗрдЯ рдХрд░рдирд╛


рд╕реЗрдорд╛рдлреЛрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛


рдЕрдзрд┐рдХрд╛рдВрд╢ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде, рд╕реЗрдореАрдлреЛрд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ nuse_config.h рдореЗрдВ #define рдирд┐рд░реНрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ NUSE_SEMAPHORE_NUMBER рд╣реИ , рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрд░реНрдз- рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреИрд░рд╛рдореАрдЯрд░ 0 рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ (рд╕реЗрдореАрдлрд╝реЛрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ 16 рддрдХ рдХрд╛ рдХреЛрдИ рднреА рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЧрд▓рдд рдорд╛рди рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛, рдЬрд┐рд╕реЗ nuse_config_check.h рдореЗрдВ рдЪреЗрдХ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╣ рдлрд╝рд╛рдЗрд▓ nuse_config.c рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде), рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, #error рдирд┐рд░реНрджреЗрд╢ рдЖрдЧ рдЬрд╛рдПрдЧрд╛ред

рдиреЙрдирдЬрд╝реЗрд░реЛ рд╡реИрд▓реНрдпреВ рдЪреБрдирдирд╛ рд╕реЗрдорд╛рдлреЛрд░ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЙрддреНрдкреНрд░реЗрд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рдЖрдХрд╛рд░ рдЗрд╕рдХреЗ рдореВрд▓реНрдп (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рдЖрдЧреЗ рджреЗрдЦреЗрдВ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдиреЙрдирдЬрд░реЛ рдорд╛рди рдПрдкреАрдЖрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред

рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ


рдирд╛рднрд┐рдХ рдПрд╕рдИ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди (рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЙрд▓) nuse_config.h рдореЗрдВ #define рдирд┐рд░реНрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИред рд╕реЗрдорд╛рдлреЛрд░ рдХреЗ рд▓рд┐рдП, рдЗрдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

NUSE_SEMAPHORE_OBTAIN
NUSE_SEMAPHORE_RELEASE
NUSE_SEMAPHORE_RESET
NUSE_SEMAPHORE_INFORMATION
NUSE_SEMAPHORE_COUNT


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗ FALSE рдкрд░ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВред рд╕реЗрдорд╛рдлрд╝реЛрд░реНрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ API рдХреЙрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ TRUE рдХреЗ рдЕрдиреБрд░реВрдк рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ nuse_config.h рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЕрдВрд╢ рд╣реИред

 #define NUSE_SEMAPHORE_NUMBER 0 /* Number of semaphores in the system - 0-16 */ #define NUSE_SEMAPHORE_OBTAIN FALSE /* Service call enabler */ #define NUSE_SEMAPHORE_RELEASE FALSE /* Service call enabler */ #define NUSE_SEMAPHORE_RESET FALSE /* Service call enabler */ #define NUSE_SEMAPHORE_INFORMATION FALSE /* Service call enabler */ #define NUSE_SEMAPHORE_COUNT FALSE /* Service call enabler */ 

рдПрдХ рд╕рдХреНрд░рд┐рдп рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЛрдИ рд╕реАрдореИрдлрд╝реЛрд░реНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ ( NUSE_Semaphore_Count () рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд╖рдо рд╣реЛрддреА рд╣реИ) рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб API рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рд▓реЗрдЖрдЙрдЯ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реЗрдорд╛рдлреЛрд░ рдХреЙрд▓


рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдЖрда рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:

  • рд╕реЗрдореАрдлреЛрд░ рдХреИрдкреНрдЪрд░ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ NUSE_Semaphore_Obtain () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕реЗрдорд╛рдлрд╝реЛрд░ рд░рд┐рд▓реАрдЬрд╝ рдХрд░реЗрдВред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ, рдЗрд╕реЗ NUSE_Semaphore_Release () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕рднреА рд░реБрдХреЗ рд╣реБрдП рдХрд╛рд░реНрдпреЛрдВ (рд░рд┐рдмреВрдЯ) рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реЗрдореАрдлреЛрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ NUSE_Semaphore_Reset () рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдорд╛рдлреЛрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ NUSE_Semaphore_Information () рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╕реЗрдорд╛рдлреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред NUSE_Semaphore_Count () рдореЗрдВ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕реЗрдореАрдлрд╝рд╛рдпрд░ рдЬреЛрдбрд╝рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╕реЗрдорд╛рдлрд╝реЛрд░ рдирд┐рдХрд╛рд▓ рд░рд╣рд╛ рд╣реИред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕рднреА рд╕реЗрдорд╛рдлреЛрд░ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХрд░рддреЗ рд╣реБрдП рд▓реМрдЯрдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реЗрдорд╛рдлреЛрд░ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдФрд░ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рддреА рд╣реИ


рдореМрд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдЬреЛ рд╕реЗрдорд╛рдлреЛрд░ рдкрд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рдХреИрдкреНрдЪрд░ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ (рдореВрд▓реНрдп рдореЗрдВ рдХрдореА рдФрд░ рд╡реГрджреНрдзрд┐) рд╣реИрдВред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдФрд░ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдмреБрдирд┐рдпрд╛рджреА рдПрдкреАрдЖрдИ рдХреЙрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рд╕реЗрдореАрдлреЛрд░ рдХреИрдкреНрдЪрд░


рдирд╛рднрд┐рдХ рдЖрд░рдЯреАрдУрдПрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЙрд▓ рдПрдХ рд╕реЗрдорд╛рдлреЛрд░ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдордп рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдСрдкрд░реЗрд╢рди рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╢реВрдиреНрдп рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрдореАрдлреЛрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдПрдХ рд╣реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдХрд╛рд░реНрдп рдард╣рд░рд╛рд╡ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдФрд░ рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рд╕реЗрдорд╛рдлреЛрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдЪреБрдиреМрддреА
рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:
рд╕реНрдерд┐рддрд┐ NU_Obtain_Semaphore (NU_SEMAPHORE * semaphore, UNSIGNED рд╕рд╕реНрдкреЗрдВрдб);

рд╡рд┐рдХрд▓реНрдк:

рд╕реЗрдорд╛рдлреЛрд░ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реЗрдорд╛рдлреЛрд░ рдирд┐рдпрдВрддреНрд░рдг рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ;
рд╕рд╕реНрдкреЗрдВрдб - рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдкреИрд░рд╛рдореАрдЯрд░, рдорд╛рди NU_NO_SUSPEND рдпрд╛ NU_SUSPEND , рд╕рд╛рде рд╣реА рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NU_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NU_UNAVAILABLE - рд╕реЗрдорд╛рдлреЛрд░ рдХрд╛ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рдерд╛;
NU_INVALID_SEMAPHORE - рд╕реЗрдорд╛рдлрд╝реЛрд░ рдХреЛ рдЕрдорд╛рдиреНрдп рд╕реВрдЪрдХ;
NU_INVALID_SUSPEND - рдЧреИрд░-рдХрд╛рд░реНрдп-рд╕рдВрдмрдВрдзрд┐рдд рдереНрд░реЗрдб рд╕реЗ рд░реЛрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕;
NU_SEMAPHORE_WAS_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕реЗрдорд╛рдлрд╝реЛрд░ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд╕реЗрдорд╛рдлреЛрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдЪреБрдиреМрддреА
рдпрд╣ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдПрдкреАрдЖрдИ рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

рд╕реНрдЯреЗрдЯрд╕ NUSE_Semaphore_Obtain (NUSE_SEMAPHORE рд╕реЗрдорд╛рдлреЛрд░, U8 рд╕рд╕реНрдкреЗрдВрдб);

рд╡рд┐рдХрд▓реНрдк:

рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реЗрдорд╛рдлрд╝реЛрд░ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ (рдЖрдИрдбреА);
рдирд┐рд▓рдВрдмрди - рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдкреИрд░рд╛рдореАрдЯрд░, NUSE_NO_SUSPEND рдпрд╛ NUSE_SUSPEND рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NUSE_UNAVAILABLE - рд╕реЗрдорд╛рдлреЛрд░ рдХрд╛ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рдерд╛;
NUSE_INVALID_SEMAPHORE - рдЕрдорд╛рдиреНрдп рд╕реЗрдорд╛рдлрд╝реЛрд░ рд╕реВрдЪрдХрд╛рдВрдХ;
NUSE_INVALID_SUSPEND - рдПрдХ рдЧреИрд░-рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереНрд░реЗрдб рдпрд╛ рдЬрдм рдПрдкреАрдЖрдИ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдХреНрд╖рдо рд╣реИ, рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕;
NUSE_SEMAPHORE_WAS_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЕрд░реНрдз -рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд╕реЗрдорд╛рдлреЛрд░ рдХреИрдкреНрдЪрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб NUSE_Semaphore_Obtain () (рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж ) рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмреНрд▓реЙрдХрд┐рдВрдЧ (рд░реБрдХрдиреЗ) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдпрджрд┐ рд▓реЙрдХ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд╛ рддрд░реНрдХ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:

 if (NUSE_Semaphore_Counter[semaphore] != 0) /* semaphore available */ { NUSE_Semaphore_Counter[semaphore]--; return_value = NUSE_SUCCESS; } else /* semaphore unavailable */ { return_value = NUSE_UNAVAILABLE; } 

рд╕реЗрдорд╛рдлреЛрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдШрдЯ рдЬрд╛рддреА рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рддрд░реНрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

 do { if (NUSE_Semaphore_Counter[semaphore] != 0) /* semaphore available */ { NUSE_Semaphore_Counter[semaphore]--; return_value = NUSE_SUCCESS; suspend = NUSE_NO_SUSPEND; } else /* semaphore unavailable */ { if (suspend == NUSE_NO_SUSPEND) { return_value = NUSE_UNAVAILABLE; } else { /* block task */ NUSE_Semaphore_Blocking_Count[semaphore]++; NUSE_Suspend_Task(NUSE_Task_Active, semaphore << 4) | NUSE_SEMAPHORE_SUSPEND); return_value = NUSE_Task_Blocking_Return[NUSE_Task_Active]; if (return_value != NUSE_SUCCESS) { suspend = NUSE_NO_SUSPEND; } } } } while (suspend == NUSE_SUSPEND); 

рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╕рд╣рд╛рдпрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЛрдб рдХреЛ do ... рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд▓реВрдк , рдЬреЛ рд╕рд╕реНрдкреЗрдВрдб рдкреИрд░рд╛рдореАрдЯрд░ NUSE_SUSPEND рд╣реИ, рдЬрдмрдХрд┐ рдЪрд▓рддрд╛ рд╣реИред

рдпрджрд┐ рд╕реЗрдорд╛рдлреЛрд░ рдореЗрдВ рдЧреИрд░-рдЕрдХреНрд╖реАрдп рдорд╛рди рд╣реИ, рддреЛ рдпрд╣ рдШрдЯ рдЬрд╛рддреА рд╣реИред рдирд┐рд▓рдВрдмрд┐рдд рдЪрд░ NUSE_NO_SUSPEND рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдФрд░ API рдХреЙрд▓ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ NUSE_SUCESS рдХреЛ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ ред

рдпрджрд┐ рд╕реЗрдорд╛рдлрд╝реЛрд░ рд╢реВрдиреНрдп рд╣реИ рдФрд░ рдирд┐рд▓рдВрдмрд┐рдд рдЪрд░ NUSE_NO_SUSPEND рдкрд░ рд╕реЗрдЯ рд╣реИ, рддреЛ API рдХреЙрд▓ NUSE_UNAVAILABLE рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд▓рдВрдмрди NUSE_SUSPEND рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдХрд╛рд░реНрдп рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд▓ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХрд╛рд░реНрдп рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ), рдпрджрд┐ рд░рд┐рдЯрд░реНрди рдорд╛рди NUSE_SUCCESS рд╣реИ (рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд░реАрд╕реЗрдЯ рдХреЗ рдмрд╛рдж рдирд╣реАрдВ), рдЪрдХреНрд░ рд╢реБрд░реВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рд╕реЗрдордлреЛрд░ рд░рд┐рд▓реАрдЬ


рд╕реЗрдорд╛рдлреЛрд░ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдПрдкреАрдЖрдИ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЙрд▓ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рд╕реЗрдорд╛рдлреЛрд░ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдореВрд▓реНрдп рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдлрд▓рддрд╛ рд╕рдВрджреЗрд╢ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдПрдХ рд╣реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рдеред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рд╕реЗрдорд╛рдлреЛрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЪреБрдиреМрддреА
рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

рд╕реНрдерд┐рддрд┐ NU_Release_Semaphore (NU_SEMAPHORE * semaphore);

рд╡рд┐рдХрд▓реНрдк:

рд╕реЗрдорд╛рдлреЛрд░ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдПрдХ рд╕реЗрдорд╛рдлреЛрд░ рдирд┐рдпрдВрддреНрд░рдг рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NU_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NU_INVALID_SEMAPHORE - рдЕрдорд╛рдиреНрдп рд╕реЗрдорд╛рдлрд╝реЛрд░ рд╕реВрдЪрдХред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд╕реЗрдорд╛рдлреЛрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЪреБрдиреМрддреА
рдпрд╣ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдПрдкреАрдЖрдИ рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

рд╕реНрдерд┐рддрд┐ NUSE_Semaphore_Release (NUSE_SEMAPHORE рд╕реЗрдорд╛рдлреЛрд░);

рд╡рд┐рдХрд▓реНрдк:

semaphore - рдореБрдХреНрдд рдХрд┐рдП рдЧрдП semaphore рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ (ID)ред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NUSE_INVALID_SEMAPHORE - рдЕрдорд╛рдиреНрдп рд╕реЗрдорд╛рдлрд╝реЛрд░ рд╕реВрдЪрдХрд╛рдВрдХ;
NUSE_UNAVAILABLE - рд╕реЗрдорд╛рдлреЛрд░ рдХрд╛ рдорд╛рди 255 рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд╕реЗрдорд╛рдлреЛрд░ рд░рд┐рд▓реАрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб NUSE_Semaphore_Release () (рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж) рдЖрдо рд╣реИ, рднрд▓реЗ рд╣реА рдХрд╛рд░реНрдп рд▓реЙрдХ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдпрд╛ рдирд╣реАрдВред рд╕реЗрдорд╛рдлреЛрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ 255 рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдпрд╣ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдПрдкреАрдЖрдИ рдЕрд╡рд░реБрджреНрдз рдХреЙрд▓ (рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЧреЗ рдХреЛрдб рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 NUSE_CS_Enter(); if (NUSE_Semaphore_Counter[semaphore] < 255) { NUSE_Semaphore_Counter[semaphore]++; return_value = NUSE_SUCCESS; #if NUSE_BLOCKING_ENABLE if (NUSE_Semaphore_Blocking_Count[semaphore] != 0) { U8 index; /* check whether a task is blocked */ /* on this semaphore */ NUSE_Semaphore_Blocking_Count[semaphore]--; for (index=0; index<NUSE_TASK_NUMBER; index++) { if ((LONIB(NUSE_Task_Status[index]) == NUSE_SEMAPHORE_SUSPEND) && (HINIB(NUSE_Task_Status[index]) == semaphore)) { NUSE_Task_Blocking_Return[index] = NUSE_SUCCESS; NUSE_Wake_Task(index); break; } } } #endif } else { return_value = NUSE_UNAVAILABLE; } NUSE_CS_Exit(); return return_value; 

рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдп рдЗрд╕ рд╕реЗрдорд╛рдлрд╝реЛрд░ рдкрд░ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдореЗрдВ рд╕реЗрдореАрдлреЛрд░рд╕ рдФрд░ рдЙрдирдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдХреЙрд▓рд┐рди рд╡рд╛рд▓реНрд╕ рддреАрд╕ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдЕрдм рдореЗрдВрдЯрд░ рдПрдВрдмреЗрдбреЗрдб (рдореЗрдВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдкреНрд░рднрд╛рдЧ) рдореЗрдВ рдПрдХ рдлрд░реНрдорд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИред рдХреЙрд▓рд┐рди рд╡реЙрд▓реНрд╕ рдЕрдХреНрд╕рд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рд╕реЗрдорд┐рдирд╛рд░реЛрдВ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реИрдВ, рдХрдИ рддрдХрдиреАрдХреА рд▓реЗрдЦреЛрдВ рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рджреЛ рдХрд┐рддрд╛рдмреЗрдВред рдмреНрд░рд┐рдЯреЗрди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рдХреЙрд▓рд┐рди рдХреЗ рдкреЗрд╢реЗрд╡рд░ рдмреНрд▓реЙрдЧ , рдИ-рдореЗрд▓: colin_walls@mentor.comред

Source: https://habr.com/ru/post/hi429156/


All Articles