There was a thread about ENOANO, explaining an obscure errno macro that still lingers around.

I would like to similarly ask about these errno values: what the hell were they for?

  • EL2HLT "Level 2 halted"
  • EL2NSYNC "Level 2 not synchronized"
  • EL3HLT "Level 3 halted"
  • EL3RST "Level 3 reset"

Although I mostly managed to decipher all other mysterious errno values (apparently some come from RFS, others come from STREAMS), literally the only clue I found about these four is that on Linux, <include/asm-sparc/solerrno.h> makes references to "run levels", so they could be related to the Solaris init system from some alternate timeline.

  • 1
    One of the z/OS development manuals mentions EL2HLT. Is it s390x related ? Feb 29, 2020 at 21:23

2 Answers 2


In this discussion EL2HLT is the error code if connecting to something which requires (i think) another process running or a kernel level thread being extant (?.)

If the process is unexistant or something else missing this error code tells the program what something fundamental is missing.

This could include opening and reading a file on a SAN provided storage media but the interface (FC or Ethernet) is down.


I observed EL2NSYNC and EL2HLT with a GSM modem connected via serial port and n_gsm / 07.10 GSM multiplexing protocol. The GSM multiplexing creates a bunch of virtual serial ports (/dev/gsmttyXX) which are multiplexed over a single physical serial port. In case of synchronization problems or other protocol errors on the underlying multiplexing protocol


fails with EL2NSYNC or EL2HLT.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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