Re: getsockopt & 64bit arch

From
Oleg Koreshkov (2:5020/400)
To
Gleb Smirnoff (2:5054/37.63)
Date
2005-04-06T13:24:34Z
Area
RU.UNIX.BSD
From: Oleg Koreshkov <okoreshkov@salut.ru>

Gleb Smirnoff wrote:
> Oleg Koreshkov <okoreshkov@salut.ru> wrote:
> OK> на RELENG_5 Amd64 getsockopt не трогает старшие 32 бита size, заполняя только 
> OK> младшие 32 бита размером сокета:
> 
> То есть в старших битах остаётся мусор?

Да.

> 
> OK>          int             sock;
> OK>          size_t          size;
> OK>          socklen_t       oplen;
> OK> ...
> OK>          oplen = sizeof(size);
> OK>          if (getsockopt(sock, SOL_SOCKET, SO_SNDBUF, &size, &oplen) < 0)
> OK>                  fatal(EX_OSERR, errno, "can not getsockopt(SO_SNDBUF)");
> OK> ...
> 
> OK> Это нормальное поведение или баг?
> OK> Указание раздела какого нибудь стандарта относящегося к subj приветствуется.
> 
> SuS:
> 
> SO_SNDBUF
>     Reports send buffer size information. This option shall store an int value.
> SO_RCVBUF
>     Reports receive buffer size information. This option shall store an int value.

Спасибо!

P.S.
я думаю что int для совместимости с более старым ПО, хотя логичнее было бы 
использовать size_t.
--- ifmail v.2.15dev5.3
 * Origin: A LOT OF ... (2:5020/400)
SEEN-BY: 46/50 50/203 520 400/814 450/159 186 247 1024 451/30 461/43 132 640
SEEN-BY: 469/999 550/196 4616/3 4625/8 4627/10 4635/4 4652/15 5000/76 5000
SEEN-BY: 5006/1 5007/1 5010/70 5011/13 5015/10 5019/31 5020/52 118 154 175 194
SEEN-BY: 5020/400 545 549 604 715 758 830 937 1057 1523 1604 1630 1922 2020
SEEN-BY: 5020/2142 2238 2450 2590 4441 5021/29 5022/128 5025/3 750 5026/45
SEEN-BY: 5027/16 5029/32 5030/49 115 473 500 556 966 1063 1900 5031/70 72
SEEN-BY: 5034/13 5035/3 38 5036/1 34 5042/13 5049/1 50 97 5051/15 5054/1 4 8 9
SEEN-BY: 5054/28 35 36 37 63 66 67 70 75 81 84 85 5055/95 5057/1 5060/88
SEEN-BY: 5061/15 5062/1 10 5066/18 5067/2 5069/7 5070/1222 5074/9 5075/5 35
SEEN-BY: 5079/23 5080/80 1003 5081/2 5082/6 5083/21 5085/13 5090/108 5095/20
SEEN-BY: 5096/18 6000/12 254 6001/3
PATH: 5020/400 4441 545 5054/1 37