Subject: Re: remember that warning about __syscall()?
To: Paul Goyette <paul@pgoyette.bdt.com>
From: Chris G Demetriou <Chris_G_Demetriou@ux2.sp.cs.cmu.edu>
List: current-users
Date: 12/29/1996 00:56:35
> Now, though, a question: even though the interface to the libc routines
> hadn't changed, shouldn't such a fundamental interface between libc and
> the kernel have been enough reason to bump the minor version of the
> shared library?
Uh, actually, there were no changes whatsoever to the interfaces to
the libc routines _or_ the kernel. I.e. in a binary sense, everything
operated exactly as before.
The changes in question simply prototyped __syscall() and dealt with
the problems that that prototype caused (and, for the first rev of the
changes, dealt with those problems badly 8-).
The problem was that __syscall() was being used inconsistently --
sometimes it was being treated as if it returned an off_t, sometimes
it was being treated as if it returned a pointer, sometimes it was
being treated as if it returned an 'int'.
That's actually _correct_. It does, in fact, return those different
types, depending on the call, rather than returning an off_t.
however, it's impossible to prototype a function to have multiple
return types...
The existing solution is not actually a good solution to the problem,
but it's the best one that can be easily had, in my opinion.
cgd