рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ 64-рдмрд┐рдЯ рдХреЛрдб рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ: рд▓рд┐рдирдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 64-рдмрд┐рдЯ рдПрд░рд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЕрдХреНрд╕рд░ рд░рд┐рдкреНрд░реЛрдЪ рд╕реБрдирддрд╛ рд╣реВрдВ: "рдареАрдХ рд╣реИ, рд╣рд╛рдБ, рдпрд╣ рдЖрдкрдХрд╛ рд╡рд┐рдВрдбреЛрдЬ рд╣реИ, рдпрд╣ рдРрд╕рд╛ рд╣реИ ... рдареАрдХ рд╣реИ, 64-рдмрд┐рдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ "ред



"рдареАрдХ рд╣реИ, рдирд╣реАрдВ, рдореЗрд░реЗ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдкрд╛рдардХред"



рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ 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-рдмрд┐рдЯ рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ ...



All Articles