Re: sys_lseek() broken for alpha

Harald Koenig (koenig@tat.physik.uni-tuebingen.de)
Tue, 14 May 1996 11:38:24 +0200 (MET DST)


> > sys_lseek() should return off_t which is long (64 bit) for alpha but
> > returns 32bit int. as a result, fdisk fails for >2GB disks.
>
> Go and complain to your friendly ANSI / K&R / POSIX guru. :( I'm
> afraid that the return type NEEDS to be int for compliance with the
> world's libc standards.

I don't have any POSIX docs and ANSI-C (1989) says nothing about lseek().
K&R 2nd edition page 175 top even says:

long lseek(int fd, long offset, int origin);

and DEC Unix unistd.h and sys/types.h say

extern off_t lseek __((int , off_t , int ));
typedef long off_t; /* file offset */

also the libc-linux man page and include files mention

off_t lseek(int fildes, off_t offset, int whence);

so I'd say I've to complain to Linus ?

> That's precisely why we need sys_llseek() on
> the intel platform to get 64-bit partition access.

this is true for 32 bit platforms like Intel but IMHO it's not true
for 64 bit architectures (here: DEC ALpha AXP)

Harald

-- 
All SCSI disks will from now on                     ___       _____
be required to send an email notice                0--,|    /OOOOOOO\
24 hours prior to complete hardware failure!      <_/  /  /OOOOOOOOOOO\
                                                    \  \/OOOOOOOOOOOOOOO\
                                                      \ OOOOOOOOOOOOOOOOO|//
Harald Koenig,                                         \/\/\/\/\/\/\/\/\/
Inst.f.Theoret.Astrophysik                              //  /     \\  \
koenig@tat.physik.uni-tuebingen.de                     ^^^^^       ^^^^^