10

Xenix was the most popular Unix flavour of the 80's. However, it was designed before the POSIX standards came to be, and its final version was released shortly after the first POSIX specification was written.

Many programs written for *nix-like operating systems since the 1980's conform to, and often rely on, POSIX specifications. So in order to work with Xenix, we need to know how it behaves.

So how compatible is Xenix with modern POSIX standards?

  • Not sure how on-topic / well tagged this is, just putting it out there. If new tags / topic restrictions need to be made, best to make them in beta. – wizzwizz4 Jul 10 '16 at 19:10
  • 3
    Posix just formalised the de facto standards that had been around for years. So most Unix variants of that era were highly compliant, just that you couldn't produce a certificate to say so. – Chenmunka Jul 11 '16 at 7:44
  • 3
    A better way to pose it may be "how Xenix-compliant is POSIX" - Due to history and what came first. And as Xenix (and SCO Unix) was around (and very present with a huge market share) when POSIX was designed, most of it went into POSIX as well - They just couldn't ignore it. – tofro Jul 11 '16 at 14:30
  • @Chenmunka I know, but the standards have evolved over time, and so has POSIX to reflect that. – wizzwizz4 Jul 11 '16 at 19:20
  • I think this is a great question and I had a lot of fun researching the answer for it. I'd drop the term "driver" in the question, since it doesn't make sense in this context. POSIX doesn't say anything implementation details such as device drivers. Device drivers for Xenix more or less follow the model of V7/SysIII respectively SysV with various quirks and extensions. There are some subtle differences between different versions of Xenix. It is fairly easy to port drivers from e.g. another SysV Unix (or a different version of Xenix), but not without reading the Xenix Device Driver Guide first. – Rico Pajarola Jul 28 '16 at 21:19
14

In short: not very.

Older versions of Xenix are based on V7 or System III (which are very similar to each other). They had the bourne shell, and large parts of the standard library were already available, e.g. stdio, malloc, alarm, lseek, getenv, but they were lacking many things you'd take for granted: there was no networking beyond serial ports, no threads, no shared memory, no TCP, no named pipes, no shared libraries, no X11 or other graphics/multimedia support. Many of the "standard" header files didn't exist or had different names.

Feasibility of running modern software: low. Autoconf wouldn't work, and any software using threads, interprocess communication, networking, or large amounts of memory wouldn't work.

The latest versions of Xenix are based on System V R2, which was standardized as the "SVID" (System V Interface Definition) which formed the basis for IEEE Std 1003.1-1988 (POSIX). The final version of Xenix was actually released in 1991, three years after POSIX was finalized, and it had many features you'd expect from a "modern" UNIX such as shared memory, named pipes, as well as a few features that were backported from SVR3 such as networking.

Feasibility of running modern software: arduous, but technically possible. There were no shared libraries, no native pthreads, but most of the building blocks to "emulate" a modern system: enough of a shell to run autoconf, interprocess communication such as named pipes, networking (TLS and BSD sockets), shared memory, semaphores. These features were not necessarily in the "format" that modern software expects, but could be adapted with wrappers. Missing header files and missing type definitions can be substituted, and in fact complex software such as pthreads and X11 was ported. Your biggest problem would be the lack of a modern compiler and toolchain (could technically be ported) and a mountain of dependencies that haven't been ported (yet).

  • 1
    This answer is very detailed. However, it doesn't contain a line-by-line breakdown and analysis of the source code, so -1. (This is a joke. Xenix is closed-source anyway. +1) – wizzwizz4 Jul 27 '16 at 19:53
  • @wizzwizz4 What's wrong with machine language translated into assembler all of a sudden? – a CVn Jul 31 '16 at 14:25
  • @MichaelKjörling If you don't have access to the original source code (which probably includes some C), by definition you can't do a line-by-line breakdown and analysis of the source code. – wizzwizz4 Jul 31 '16 at 15:44
  • To answer this question, comparing manual pages and include files is sufficient. The question was about the interface, not the implementation. But if it interests you, various SysV source code (unfortunately not Xenix) can be found with a simple Google search, and it's easy to see what's common between them. – Rico Pajarola Aug 1 '16 at 16:45
  • 2
    don't get me started on autoconf... it's a great source of "weird stuff that existed a long time ago and is completely irrelevant today". I'm quite certain that the feature tests themselves work just fine, but I don't think a lot of software makes any use of it. – Rico Pajarola Aug 19 '16 at 14:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.