lseek64 vraci jen 32bitu pozice

Karel Dudasek karel.dudasek na vghur.army.cz
Úterý Únor 3 11:34:13 CET 2004


On Tue, 3 Feb 2004, Pavel Kankovsky wrote:
> On Tue, 3 Feb 2004, Karel Dudasek wrote:
> > Pred tydnem jsem s hruzou zjistil, ze lseek64(fd, (off_t)0, SEEK_CUR)
> > mi vrati jen orezanou cast dolnich 32 bitu pozice.
> 1. mate includovany header s patricnym prototypem, kde se rika, ze
>    lseek64 vraci 64-bitovou hodnotu? (jinak se by default predpoklada,
>    ze navratova hodnota je int)
> 2. strkate to nekam, kam se 64 bitu vejde?
> > Nemuze me nekdo nasmerovat, jestli jde volat primo nejakou systemovou
> > funkci, ktera mi vrati skutecnou pozici ?
> Vzdycky to skonci na sys_llseek()...ale budete muset volat primo syscall.
> Jde to, jednou jsem to zkousel, kdyz jsem take lseek64 podezrival z toho,
> ze nefunguje spravne, ale pak jsem zjistit, ze chyba byla nekde uplne
> jinde (disk byl mensi, nez jsem si puvodne myslel) + ze strace mozna
> trochu blbe vypisuje 64-bitove hodnoty.
Prave, ze jsem nasel hlaseni o chybe v glibc, kde o ni vi, ze pry
udajne je to nekde omezene pri predavani hodnoty ze sys_callu.
Asi jeste zkusim pres fopen a ftell.

                             Karel Dudasek


Další informace o konferenci Linux