Skip to contentSkip to conversation

reserving constants

DISCUSSION Grant Grundler 1 participant 1 message Aug 16, 1999

lore
Share & tools
lore
#0 lore raw

At 12:48 AM 8/6/99 +0200, Matthew Wilcox wrote:
...

Quoted 5 lines

Linux doesn't distinguish between O_NONBLOCK and O_NDELAY so I also defined:

#define O_NONBLOCK 00200004 /* HPUX has separate NDELAY & NONBLOCK */
#define O_NDELAY O_NONBLOCK

I would not equate the two.
I'm not sure the difference is clear to folks outside of HP. Or even many folks inside HP for that matter. :^/ I just read the open(2) and read(2) man page. I don't think it's use is fully documented. Perhaps in the DDG or DDR?

I might be confusing flags here though...could someone confirm the O_NDELAY is the same flag which gets passed to the disk drivers as B_NDELAY (defined in buf.h)?

B_NDELAY has special meaning to the mass storage subsystem and is (was) needed by some of the "high availability" applications.

The semantics (I thought) of B_NDELAY is it allows the process to sleep on a open/read/write, but no part of the SCSI driver stack is allowed to retry "errors". This means the application must handle all error conditions - including transient errors and there are plenty of those. This was implemented to avoid long delays associated with retrying "transient" errors and get control back to the application.

hope this helps,
grant