This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

LFS/syscalls -> Kernel interface incompatibility



Hi,

I found a big problem with the LFS interface between kernel and
glibc.

In glibc, we call (f)truncate64 as following:

int result = INLINE_SYSCALL (truncate64, 3, path, low, high);

In kernel, we have the following:

long sys_truncate64(const char * path, loff_t length);
or
sys32_truncate64(const char * path, unsigned long high, unsigned long low);

As everybody can see, our syscall only works with sys_truncate64 on
little endian machines, and never with sys32_truncate64.

I think we have some more functions like this (pread ?).
What should we do ? If the kernel would always use something like
sys32_truncate64, we had no problems. But with the current situation,
I think we need to duplicate this files for every big endian
architecture and change the syscall.

Any other ideas ?

  Thorsten
-- 
Thorsten Kukuk       http://www.suse.de/~kukuk/       kukuk@suse.de
SuSE GmbH            Schanzaeckerstr. 10            90443 Nuernberg
Linux is like a Vorlon.  It is incredibly powerful, gives terse,
cryptic answers and has a lot of things going on in the background.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]