Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | cross@spitfire.i.gajendra.net (Dan Cross) |
|---|---|
| Newsgroups | comp.misc |
| Subject | Re: Unix is dead |
| Date | 2023-03-01 22:09 +0000 |
| Organization | PANIX Public Access Internet and UNIX, NYC |
| Message-ID | <ttoieu$7tp$1@reader2.panix.com> (permalink) |
| References | <slrntsdp5q.60h.bencollver@svadhyaya.localdomain> <0001HW.29AF4C30020D4BA470000FCBD38F@news.individual.net> <ttnpd4$7l7$3@reader2.panix.com> <0001HW.29AFBBB702276F2C70000FCBD38F@news.individual.net> |
In article <0001HW.29AFBBB702276F2C70000FCBD38F@news.individual.net>,
Ian McCall <ian@eruvia.org> wrote:
>On 1 Mar 2023, Dan Cross wrote
>(in article <ttnpd4$7l7$3@reader2.panix.com>):
>
>> Do you, though? Oh, say, x86, Linux uses the SysV ABI. People
>> need to recompile their drivers because the internals change all
>> the time, not because the calling convention and structure
>> layouts change.
>
>The only reason you'd need to recompile drivers as opposed to install
>binaries is because of the ABI. It's possible you might -choose- to, but
>the only reason you'd need to is ABI.
What, exactly, is your definition of "the ABI"?
>This is trivially provable by the
>fact that every other OS, which has a stable ABI, doesn't require you to
>compile your drivers but can instead install them as binaries.
You seem to be conflating an "ABI" with the general notion of a
programming interface. I agree that Linux does not keep the
latter stable within the kernel, but that is not the same as the
former.
>Linux used to tout this as an advantage ("used to" - remember I was
>mostly coding in the kernel in the 90s, so don't know when or if they
>changed their opinion). It isn't an advantage, it's a -disadvantage-.
>Hopefully they changed their opinion.
Perhaps you are referring to this document from gregkh:
https://www.kernel.org/doc/html/v5.18/process/stable-api-nonsense.html
Lack of a stable binary _kernel_ interface for drivers is why
you have to rebuild drivers on Linux; this has very little to do
with the ABI they use on any platform, which _is_ well-defined.
For example, on x86_64 Linux uses the SystemV ABI, and from the
SYSV ABI document, we get this definition:
"The System V Application Binary Interface, or ABI,
defines a system interface for compiled application
programs and a minimal environment for support of
installation scripts. Its purpose is to document
a standard binary interface for application programs
on systems that implement an operating system that
complies with the X/Open Common Application
Environment Specification, Issue 4.2 and the System
V Interface Definition, Fourth Edition."
(https://www.sco.com/developers/devspecs/gabi41.pdf)
Note that this discusses _application_ programs, which device
drivers on Linux most certainly are not. More generally, ABIs
are used to specify things like executable file formats (e.g.,
ELF), function calling conventions (how registers and the stack
are used, etc), and how data structures are laid out in memory
(e.g., how the elements of a `C` struct are ordered in memory,
aligned to various addresses, etc). That's not the issue here,
nor why you need to recompile Linux drivers when the kernel is
updated.
The issue with Linux is that they don't give you stable internal
kernel interfaces to program against, as described in the greghk
document linked above. In particular, Linux reserves the right
to change around the signatures of internal functions and so on
to suit themselves, deprecate old things, introduce new ones,
etc; that's what they mean. But that has nothing to do with the
ABI that compilers and assembler programmers use. Put another
way, the functions may change, but the way you call them (first
argument in `%rdi`, second in `%rsi`, etc; stack aligned to a
16-byte boundary before the `CALL` instruction; the format of
the `va_list` for variadic functions; etc) does not.
Compare to, say, the illumos kernel where the DDI gives you
documented stable interfaces. But again, that's not an ABI;
that's an internal interface within the kernel. In fact, Linux
and illumos/Solaris use the same ABI on x86_64.
- Dan C.
Back to comp.misc | Previous | Next — Previous in thread | Next in thread | Find similar
Unix is dead Ben Collver <bencollver@tilde.pink> - 2023-01-17 18:15 +0000
Re: Unix is dead Bob Eager <news0009@eager.cx> - 2023-01-17 20:13 +0000
Re: Unix is dead Marco Moock <mo01@posteo.de> - 2023-01-17 21:39 +0100
Re: Unix is dead Blue-Maned_Hawk <bluemanedhawk@gmail.com> - 2023-01-18 04:21 -0500
Re: Unix is dead Marco Moock <mo01@posteo.de> - 2023-01-18 10:58 +0100
Re: Unix is dead Grant Taylor <gtaylor@tnetconsulting.net> - 2023-01-18 22:12 -0700
Re: Unix is dead Geoff Clare <geoff@clare.See-My-Signature.invalid> - 2023-01-18 13:38 +0000
Re: Unix is dead Marco Moock <mo01@posteo.de> - 2023-01-17 21:37 +0100
Re: Unix is dead Sylvia Else <sylvia@email.invalid> - 2023-01-18 11:12 +1100
Re: Unix is dead Y A <air000000000000@ya.ee> - 2023-02-11 08:07 -0800
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-02-16 09:19 +0000
Re: Unix is dead Grant Taylor <gtaylor@tnetconsulting.net> - 2023-02-16 10:21 -0700
Re: Unix is dead kludge@panix.com (Scott Dorsey) - 2023-02-22 12:55 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-02-23 09:23 +0000
Re: Unix is dead Eli the Bearded <*@eli.users.panix.com> - 2023-02-23 20:53 +0000
Re: Unix is dead Rich <rich@example.invalid> - 2023-02-23 21:43 +0000
Re: Unix is dead Eli the Bearded <*@eli.users.panix.com> - 2023-02-24 00:06 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-02-25 16:08 +0000
Re: Unix is dead Eli the Bearded <*@eli.users.panix.com> - 2023-02-26 03:51 +0000
Re: Unix is dead Ben Collver <bencollver@tilde.pink> - 2023-02-26 14:37 +0000
Re: Unix is dead Mike Spencer <mds@bogus.nodomain.nowhere> - 2023-02-26 14:09 -0400
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-02-26 19:07 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-02-26 19:12 +0000
Re: Unix is dead kludge@panix.com (Scott Dorsey) - 2023-02-28 02:54 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-02-28 07:37 +0000
Re: Unix is dead cross@spitfire.i.gajendra.net (Dan Cross) - 2023-02-28 16:59 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-03-01 09:02 +0000
Re: Unix is dead Bob Eager <news0009@eager.cx> - 2023-03-01 09:07 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-03-01 12:11 +0000
Re: Unix is dead Bob Eager <news0009@eager.cx> - 2023-03-01 15:30 +0000
Re: Unix is dead cross@spitfire.i.gajendra.net (Dan Cross) - 2023-03-01 15:01 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-03-01 16:58 +0000
Re: Unix is dead cross@spitfire.i.gajendra.net (Dan Cross) - 2023-03-01 22:09 +0000
Re: Unix is dead Richard Kettlewell <invalid@invalid.invalid> - 2023-03-02 08:06 +0000
Re: Unix is dead cross@spitfire.i.gajendra.net (Dan Cross) - 2023-03-02 14:03 +0000
Re: Unix is dead Richard Kettlewell <invalid@invalid.invalid> - 2023-03-02 14:49 +0000
Re: Unix is dead cross@spitfire.i.gajendra.net (Dan Cross) - 2023-03-02 14:52 +0000
Re: Unix is dead Geoff Clare <geoff@clare.See-My-Signature.invalid> - 2023-02-27 14:04 +0000
Re: Unix is dead Ben Collver <bencollver@tilde.pink> - 2023-02-27 05:26 +0000
Re: Unix is dead kludge@panix.com (Scott Dorsey) - 2023-02-28 02:51 +0000
Re: Unix is dead Geoff Clare <geoff@clare.See-My-Signature.invalid> - 2023-02-27 13:30 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-02-27 23:24 +0000
Re: Unix is dead Dan Espen <dan1espen@gmail.com> - 2023-02-27 22:41 -0500
Re: Unix is dead kludge@panix.com (Scott Dorsey) - 2023-03-01 19:24 +0000
Re: Unix is dead Dan Espen <dan1espen@gmail.com> - 2023-03-01 15:25 -0500
Re: Unix is dead Geoff Clare <geoff@clare.See-My-Signature.invalid> - 2023-02-28 13:32 +0000
Re: Unix is dead Ian McCall <ian@eruvia.org> - 2023-02-28 13:43 +0000
csiph-web