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