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



рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡рд┐рд░рд╛рдо рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЙрд▓рд┐рди рд╡рд╛рд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдЯреАрдУрдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рд╕рддреНрдп рдХреЗ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕ рдмрд╛рд░ рд╣рдо рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдЪреИрдирд▓реЛрдВ (рдмрд╛рдж рдореЗрдВ рдЪреИрдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдереЗ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо # 5 рдерд╛ ред рдореЗрд▓рдмреЙрдХреНрд╕ ( # 21 рдФрд░ # 22 ) рдпрд╛ рдХрддрд╛рд░реЛрдВ ( # 23 рдФрд░ # 24 ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЪреИрдирд▓, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд░рд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ:

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

рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


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

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

рдЪреИрдирд▓ рдФрд░ рдХрддрд╛рд░


рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдЙрди рдХрддрд╛рд░реЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ (# 23 рдФрд░ # 24) рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдЪреИрдирд▓реЛрдВ рдФрд░ рдХрддрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╕рдВрджреЗрд╢ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред рдХрддрд╛рд░ рдореЗрдВ ADDR рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХрд▓ рдЪрд░ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдХреЗрдд рд╣реЛрддреЗ рд╣реИрдВред рдЪреИрдирд▓ рдореЗрдВ рдордирдорд╛рдиреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рджреМрд░рд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЪреИрдирд▓ рд╕реЗрдЯрдЕрдк


рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛


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

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

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


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

NUSE_PIPE_SEND
NUSE_PIPE_RECEIVE
NUSE_PIPE_JAM
NUSE_PIPE_RESET
NUSE_PIPE_INFORMATION
NUSE_PIPE_COUNT

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ nuse_config.h рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИред

#define NUSE_PIPE_NUMBER 0 /* Number of pipes in the system - 0-16 */ /* Service call enablers */ #define NUSE_PIPE_SEND FALSE #define NUSE_PIPE_RECEIVE FALSE #define NUSE_PIPE_JAM FALSE #define NUSE_PIPE_RESET FALSE #define NUSE_PIPE_INFORMATION FALSE #define NUSE_PIPE_COUNT FALSE 

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

рдУрд╡рд░рд╣реЗрдб рдЪреИрдирд▓ рдХреЙрд▓


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

  • рдЪреИрдирд▓ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ NUSE_Pipe_Send () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЪреИрдирд▓ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ NUSE_Pipe_Receive () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЪреИрдирд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ NUSE_Pipe_Jam () рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рд╕рднреА рдирд┐рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдпреЛрдВ (рд░реАрд╕реЗрдЯ) рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд╕рд╛рде рдЪреИрдирд▓ рдХреЛ рдЕрдкреНрд░рдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдореЗрдВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ, NUSE_Pipe_Reset () рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреИрдирд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ NUSE_Pipe_Information () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдЪреИрдирд▓реЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ NUSE_Pipe_Count () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдирд┐рд░реНрдорд╛рдг) рдореЗрдВ рдПрдХ рдирдпрд╛ рдЪреИрдирд▓ рдЬреЛрдбрд╝рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВред
  • рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЪреИрдирд▓ рдирд┐рдХрд╛рд▓рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рднреА рдЪреИрдирд▓реЛрдВ рдкрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд▓реМрдЯрд╛рдПрдВред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВред
  • рдЪреИрдирд▓ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ (рдкреНрд░рд╕рд╛рд░рдг)ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВред

рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╕реЗрд╡рд╛ рдХреЙрд▓ рдЪреИрдирд▓реЛрдВ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП


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

рдЪреИрдирд▓ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ


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

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

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рдПрдХ рдЪреИрдирд▓ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ

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

STATUS NU_Send_To_Pipe (NU_PIPE * рдкрд╛рдЗрдк, VOID * рд╕рдВрджреЗрд╢, UNSIGNED рдЖрдХрд╛рд░, UNSIGNED рд╕рд╕реНрдкреЗрдВрдб);

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

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

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

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NU_INVALID_PIPE - рдЪреИрдирд▓ рдХреЛ рдЕрдорд╛рдиреНрдп рд╕реВрдЪрдХ;
NU_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NU_INVALID_SIZE - рд╕рдВрджреЗрд╢ рдЖрдХрд╛рд░ рдЪреИрдирд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕рдВрджреЗрд╢ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ;
NU_INVALID_SUSPEND - рдЧреИрд░-рдХрд╛рд░реНрдп-рд╕рдВрдмрдВрдзрд┐рдд рдереНрд░реЗрдб рд╕реЗ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕;
NU_PIPE_FULL - рдЪреИрдирд▓ рднрд░рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_TIMEOUT - рдЪреИрдирд▓ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рднрд░рд╛ рд╣реБрдЖ рд╣реИ;
NU_PIPE_DELETED - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_PIPE_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдПрдХ рдЪреИрдирд▓ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ

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

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

рд╕реНрдерд┐рддрд┐ NUSE_Pipe_Send (NUSE_PIPE рдкрд╛рдЗрдк, U8 * рд╕рдВрджреЗрд╢, U8 рдирд┐рд▓рдВрдмрди);

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

рдкрд╛рдЗрдк - рдкреНрд░рдпреБрдХреНрдд рдЪреИрдирд▓ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ (рдЖрдИрдбреА);
рд╕рдВрджреЗрд╢ - рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ (рджрд┐рдП рдЧрдП рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд▓рдВрдмрд╛рдИ рдХреА рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдХреНрд░рдо);
рдирд┐рд▓рдВрдмрди - рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рд╡рд┐рдирд┐рд░реНрджреЗрд╢, NUSE_NO_SUSPEND рдФрд░ NUSE_SUSPEND рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

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

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NUSE_INVALID_PIPE - рдЕрдорд╛рдиреНрдп рдЪреИрдирд▓ рд╕реВрдЪрдХрд╛рдВрдХ;
NUSE_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NUSE_INVALID_SUSPEND - рдПрдХ рдЧреИрд░-рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереНрд░реЗрдб рд╕реЗ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╛ рдЬрдм рдЯрд╛рд╕реНрдХ рд▓реЙрдХрд┐рдВрдЧ рдЕрдХреНрд╖рдо рд╣реИ;
NUSE_PIPE_FULL - рдЪреИрдирд▓ рднрд░рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NUSE_PIPE_WAS_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдЪреИрдирд▓ рдкреЛрд╕реНрдЯрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

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

рдпрджрд┐ рд▓реЙрдХрд┐рдВрдЧ рдЕрдХреНрд╖рдо рд╣реИ, рддреЛ рдЗрд╕ API рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

 if (NUSE_Pipe_Items[pipe] == NUSE_Pipe_Size[pipe]) /* pipe full */ { return_value = NUSE_PIPE_FULL; } else /* pipe element available */ { data = &NUSE_Pipe_Data[pipe][NUSE_Pipe_Head[pipe]]; for (i=0; i<msgsize; i++) { *data++ = *message++; } NUSE_Pipe_Head[pipe] += msgsize; if (NUSE_Pipe_Head[pipe] == (NUSE_Pipe_Size[pipe] * msgsize)) { NUSE_Pipe_Head[pipe] = 0; } NUSE_Pipe_Items[pipe]++; return_value = NUSE_SUCCESS; } 

рдлрд╝рдВрдХреНрд╢рди рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЪреИрдирд▓ рдореЗрдВ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рд╣реИ рдФрд░ рдЪреИрдирд▓ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП NUSE_Pipe_Head [] рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

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

 do { if (NUSE_Pipe_Items[pipe] == NUSE_Pipe_Size[pipe]) /* pipe full */ { if (suspend == NUSE_NO_SUSPEND) { return_value = NUSE_PIPE_FULL; } else { /* block task */ NUSE_Pipe_Blocking_Count[pipe]++; NUSE_Suspend_Task(NUSE_Task_Active, (pipe << 4) | NUSE_PIPE_SUSPEND); return_value = NUSE_Task_Blocking_Return[NUSE_Task_Active]; if (return_value != NUSE_SUCCESS) { suspend = NUSE_NO_SUSPEND; } } } else /* pipe element available */ { data = &NUSE_Pipe_Data[pipe][NUSE_Pipe_Head[pipe]]; for (i=0; i<msgsize; i++) { *data++ = *message++; } NUSE_Pipe_Head[pipe] += msgsize; if (NUSE_Pipe_Head[pipe] == (NUSE_Pipe_Size[pipe] * msgsize)) { NUSE_Pipe_Head[pipe] = 0; } NUSE_Pipe_Items[pipe]++; if (NUSE_Pipe_Blocking_Count[pipe] != 0) { U8 index; /* check whether a task is blocked on this pipe */ NUSE_Pipe_Blocking_Count[pipe]--; for (index=0; index<NUSE_TASK_NUMBER; index++) { if ((LONIB(NUSE_Task_Status[index]) == NUSE_PIPE_SUSPEND) && (HINIB(NUSE_Task_Status[index]) == pipe)) { NUSE_Task_Blocking_Return[index] = NUSE_SUCCESS; NUSE_Wake_Task(index); break; } } } return_value = NUSE_SUCCESS; suspend = NUSE_NO_SUSPEND; } } while (suspend == NUSE_SUSPEND); 

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

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

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

рдпрджрд┐ рдЪреИрдирд▓ рднрд░рд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЪреИрдирд▓ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ NUSE_Pipe_Head [] рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрджреЗрд╢ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЪреИрдирд▓ рдиреЗ рдХрд╛рд░реНрдпреЛрдВ (рд▓рдВрдмрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ) рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдирд┐рд▓рдВрдмрд┐рдд рдЪрд░ NUSE_NO_SUSPEND рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдФрд░ API рдХреЙрд▓ NUSE_SUSCCESS рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ ред

рдЪреИрдирд▓ рд╕реЗ рдкрдврд╝рдирд╛


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

рдирд╛рднрд┐рдХ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рдЪреИрдирд▓ рд░реАрдб рдЪреИрд▓реЗрдВрдЬ

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

STATUS NU_Receive_From_Pipe (NU_PIPE * рдкрд╛рдЗрдк, VOID * рд╕рдВрджреЗрд╢, UNSIGNED рдЖрдХрд╛рд░, UNSIGNED * рд╡рд╛рд╕реНрддрд╡рд┐рдХ_ рдЖрдХрд╛рд░, UNSIGNED рдирд┐рд▓рдВрдмрд┐рдд);

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

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

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

NU_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NU_INVALID_PIPE - рдЪреИрдирд▓ рдХреЛ рдЕрдорд╛рдиреНрдп рд╕реВрдЪрдХ;
NU_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NU_INVALID_SUSPEND - рдХрд╛рд░реНрдп рд╕реЗ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рдереНрд░реЗрдб рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕;
NU_PIPE_EMPTY - рдЪреИрдирд▓ рдЦрд╛рд▓реА рд╣реИ, рдФрд░ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_TIMEOUT - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЪреИрдирд▓ рдЦрд╛рд▓реА рд╣реИ;
NU_PIPE_DELETED - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_PIPE_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдЪреИрдирд▓ рд░реАрдб рдЪреИрд▓реЗрдВрдЬ

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

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

рд╕реНрдерд┐рддрд┐ NUSE_Pipe_Reive (NUSE_PIPE рдкрд╛рдЗрдк, U8 * рд╕рдВрджреЗрд╢, U8 рдирд┐рд▓рдВрдмрд┐рдд);

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

рдкрд╛рдЗрдк - рдкреНрд░рдпреБрдХреНрдд рдЪреИрдирд▓ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ (рдЖрдИрдбреА);
рд╕рдВрджреЗрд╢ - рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ (рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдХреНрд░рдо, рдЬрд┐рд╕рдХреА рд▓рдВрдмрд╛рдИ рдЪреИрдирд▓ рд╕рдВрджреЗрд╢ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ);
рдирд┐рд▓рдВрдмрди - рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рд╡рд┐рдирд┐рд░реНрджреЗрд╢, NUSE_NO_SUSPEND рдФрд░ NU_SUSPEND рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

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

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NUSE_INVALID_PIPE - рдЕрдорд╛рдиреНрдп рдЪреИрдирд▓ рд╕реВрдЪрдХрд╛рдВрдХ;
NUSE_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NUSE_INVALID_SUSPEND - рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрджреНрдз рдпрд╛ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдЕрдХреНрд╖рдо рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕;
NUSE_PIPE_EMPTY - рдЪреИрдирд▓ рдЦрд╛рд▓реА рд╣реИ, рдФрд░ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NUSE_PIPE_WAS_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдлреАрдб рд░реАрдбрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

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

рдпрджрд┐ рд▓реЙрдХ рдЕрдХреНрд╖рдо рд╣реИ, рддреЛ рдЗрд╕ API рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

 if (NUSE_Pipe_Items[pipe] == 0) /* pipe empty */ { return_value = NUSE_PIPE_EMPTY; } else { /* message available */ data = &NUSE_Pipe_Data[pipe][NUSE_Pipe_Tail[pipe]]; for (i=0; i<msgsize; i++) { *message++ = *data++; } NUSE_Pipe_Tail[pipe] += msgsize; if (NUSE_Pipe_Tail[pipe] == (NUSE_Pipe_Size[pipe] * msgsize)) { NUSE_Pipe_Tail[pipe] = 0; } NUSE_Pipe_Items[pipe]--; *actual_size = msgsize; return_value = NUSE_SUCCESS; } 

рдлрд╝рдВрдХреНрд╢рди рдЪреИрдирд▓ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЪреИрдирд▓ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NUSE_Pipe_Tail [] рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрджреЗрд╢ рд╕реВрдЪрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

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

 do { if (NUSE_Pipe_Items[pipe] == 0) /* pipe empty */ { if (suspend == NUSE_NO_SUSPEND) { return_value = NUSE_PIPE_EMPTY; } else { /* block task */ NUSE_Pipe_Blocking_Count[pipe]++; NUSE_Suspend_Task(NUSE_Task_Active, (pipe << 4) | NUSE_PIPE_SUSPEND); return_value = NUSE_Task_Blocking_Return[NUSE_Task_Active]; if (return_value != NUSE_SUCCESS) { suspend = NUSE_NO_SUSPEND; } } } else { /* message available */ data = &NUSE_Pipe_Data[pipe][NUSE_Pipe_Tail[pipe]]; for (i=0; i<msgsize; i++) { *message++ = *data++; } NUSE_Pipe_Tail[pipe] += msgsize; if (NUSE_Pipe_Tail[pipe] == (NUSE_Pipe_Size[pipe] * msgsize)) { NUSE_Pipe_Tail[pipe] = 0; } NUSE_Pipe_Items[pipe]--; if (NUSE_Pipe_Blocking_Count[pipe] != 0) { U8 index; /* check whether a task is blocked */ /* on this pipe */ NUSE_Pipe_Blocking_Count[pipe]--; for (index=0; index<NUSE_TASK_NUMBER; index++) { if ((LONIB(NUSE_Task_Status[index]) == NUSE_PIPE_SUSPEND) && (HINIB(NUSE_Task_Status[index]) == pipe)) { NUSE_Task_Blocking_Return[index] = NUSE_SUCCESS; NUSE_Wake_Task(index); break; } } } *actual_size = msgsize; return_value = NUSE_SUCCESS; suspend = NUSE_NO_SUSPEND; } } while (suspend == NUSE_SUSPEND); 

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

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

рдпрджрд┐ рдЪреИрдирд▓ рдЦрд╛рд▓реА рд╣реИ рдФрд░ рд╕рд╕реНрдкреЗрдВрдб рдкреИрд░рд╛рдореАрдЯрд░ NUSE_NO_SUSPEND рд╣реИ , рддреЛ API рдХреЙрд▓ NUSE_PIPE_EMPTY рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд▓рдВрдмрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ NUSE_SUSPEND рд╣реИ , рддреЛ рдХрд╛рд░реНрдп рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ (рдЕрд░реНрдерд╛рдд, рдЬрдм рдХрд╛рд░реНрдп рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ), рдпрджрд┐ рд░рд┐рдЯрд░реНрди рдорд╛рди NUSE_SUCCESS рд╣реИ , рдЕрд░реНрдерд╛рдд , рдХрд╛рд░реНрдп рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ (рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдЪреИрдирд▓ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рдХреЛрдб рд▓реВрдк рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реМрдЯрддрд╛ рд╣реИред

рдпрджрд┐ рдЪреИрдирд▓ рдореЗрдВ рд╕рдВрджреЗрд╢ рд╣реИрдВ, рддреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рдВрджреЗрд╢ NUSE_Pipe_Tail [] рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЪреИрдирд▓ рдкрд░ рдХрд┐рд╕реА рднреА рд░реБрдХреЗ рд╣реБрдП (рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ) рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдирд┐рд▓рдВрдмрд┐рдд рдЪрд░ NUSE_NO_SUSPEND рдкрд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ API рдХреЙрд▓ NUSE_SUCCI рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИред

рдЪреИрдирд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб


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

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рдЪреИрдирд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ

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

рд╕реНрдЯреЗрдЯрд╕ NU_Send_To_Front_Of_Pipe (NU_PIPE * рдкрд╛рдЗрдк, VOID * рд╕рдВрджреЗрд╢, UNSIGNED рдЖрдХрд╛рд░, UNSIGINED рд╕рд╕реНрдкреЗрдВрдб);

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

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

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

NU_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NU_INVALID_PIPE - рдЪреИрдирд▓ рдХреЛ рдЕрдорд╛рдиреНрдп рд╕реВрдЪрдХ;
NU_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NU_INVALID_SIZE - рд╕рдВрджреЗрд╢ рдЖрдХрд╛рд░ рдЪреИрдирд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕рдВрджреЗрд╢ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИ;
NU_INVALID_SUSPEND - рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереНрд░реЗрдб рд╕реЗ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕;
NU_PIPE_FULL - рдЪреИрдирд▓ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_TIMEOUT - рдЪреИрдирд▓ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рднрд░рд╛ рд╣реБрдЖ рд╣реИ;
NU_PIPE_DELETED - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_PIPE_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдЪреИрдирд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ

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

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

рд╕реНрдерд┐рддрд┐ NUSE_Pipe_Jam (NUSE_PIPE рдкрд╛рдЗрдк, ADDR * рд╕рдВрджреЗрд╢, U8 рдирд┐рд▓рдВрдмрд┐рдд);

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

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

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

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NUSE_INVALID_PIPE - рдЕрдорд╛рдиреНрдп рдЪреИрдирд▓ рд╕реВрдЪрдХрд╛рдВрдХ;
NUSE_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NUSE_INVALID_SUSPEND - рдХрд┐рд╕реА рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрджреНрдз рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╛ рдХрд╛рд░реНрдп рд▓реЙрдХ рдЕрдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░;
NUSE_PIPE_FULL - рдЪреИрдирд▓ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NUSE_PIPE_WAS_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪреИрдирд▓ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдЪреИрдирд▓ рдПрдВрдЯреНрд░реА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

NUSE_Pipe_Jam () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рднрд┐рдиреНрди рдХреЛрдб NUSE_Pipe_Send () рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ NUSE_Pipe_Tail [] рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП:

 if (NUSE_Pipe_Items[pipe] == NUSE_Pipe_Size[pipe]) /* pipe full */ { return_value = NUSE_PIPE_FULL; } else /* pipe element available */ { if (NUSE_Pipe_Tail[pipe] == 0) { NUSE_Pipe_Tail[pipe] = (NUSE_Pipe_Size[pipe] - 1) * msgsize; } else { NUSE_Pipe_Tail[pipe] -= msgsize; } data = &NUSE_Pipe_Data[pipe][NUSE_Pipe_Tail[pipe]]; for (i=0; i<msgsize; i++) { *data++ = *message++; } NUSE_Pipe_Items[pipe]++; return_value = NUSE_SUCCESS; } 

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЪреИрдирд▓реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛ рдХреЙрд▓реЛрдВ, рд╕рд╛рде рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

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

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


All Articles