"рдареАрдХ рд╣реИ, рдирд╣реАрдВ, рдореЗрд░реЗ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдкрд╛рдардХред"
рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ 64-рдмрд┐рдЯ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЬ рдХреА рдкреЛрд╕реНрдЯред
рдХрд░реНрдиреЗрд▓ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдмрдЧ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо) рдХреЗ рд╕рд╛рде рдПрдХ рдЕрджреНрднреБрдд рд╕рд╛рдЗрдЯ рдореЗрдВ рдмрдЧ 16603 (64 рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдбреЗрдЯрд╛> 4 рдЬреАрдмреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ) рдХрд╛ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рд╕рд░рд▓ рд╣реИ: "рдпрджрд┐ рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рд▓рд┐рдирдХреНрд╕ рд╕реЗрдВрдб () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред Glibc рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
ssize_t send (int sockfd, const void * buf, size_t len, int рдзреНрд╡рдЬ);
рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рдЖрдХрд╛рд░ рдХреЛ рдореЗрдореЗрд╕рд╛рдЗрдЬрд╝-рдкреНрд░рдХрд╛рд░ size_t рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рддрд░реНрдХ msgheader рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд▓рд╛рдЗрдиреЗрдВ tcp_sendmsg рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЬрд╛рддреА рд╣реИрдВ:
рдЬрдмрдХрд┐ (- рд╣рд╛рд░реНрдЯрд▓реЗрди> = 0) { int seglen = iov-> iov_len; рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд╛рд░ __user * рд╕реЗ = iov-> iov_base;
рдпрд╣рд╛рдВ рд▓рдВрдмрд╛рдИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдВрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣реА рд╣реИ, 5 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ () рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рднреЗрдЬрдиреЗ рдкрд░ рдХреЗрд╡рд▓ 1 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ 4 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХрд╛ рдмреНрд▓реЙрдХ рднреЗрдЬрдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ ("рдЧреЛрд▓рд╛рдИ" рдХреЗ рдХрд╛рд░рдг рд╢реВрдиреНрдп)ред
рдмреЗрд╢рдХ, рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕реНрдкрд╖реНрдЯ рд╣реИ - 0x8000000 рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╕рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рд╛рдВ, рдФрд░ рдпрд╣ рдирдмреНрдмреЗ рдХреЗ рджрд╢рдХ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИред рдмрдЧ рдХреЛ рдЕрдЧрд╕реНрдд 2010 рдореЗрдВ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 2.5 рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИред рдФрд░ рдЬрдмрдХрд┐ (11 рдЕрдХреНрдЯреВрдмрд░, 2010) рдмрдВрдж рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдФрд░ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ 64-рдмрд┐рдЯ рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ ...