Skip to content

Lack of MSG_NOSIGNAL and MSG_WAITFORONE for Solaris.

Summary

Since Solaris 11.4 MSG_NOSIGNAL and MSG_WAITFORONE are supported.

System Information

  • Operating system: Solaris
  • Processor architecture: Any
  • Compiler version: Trunk
  • Device: ---

Description

Based on Solaris 11.4 socket.h :

#define	MSG_OOB		0x1		/* process out-of-band data */
#define	MSG_PEEK	0x2		/* peek at incoming message */
#define	MSG_DONTROUTE	0x4		/* send without using routing tables */
/* Added for XPGv2 compliance */
#define	MSG_EOR		0x8		/* Terminates a record */
#define	MSG_CTRUNC	0x10		/* Control data truncated */
#define	MSG_TRUNC	0x20		/* Normal data truncated */
#define	MSG_WAITALL	0x40		/* Wait for complete recv or error */
#define	MSG_DUPCTRL	0x800		/* Save control message for use with */
					/* with left over data */
/* End of XPGv2 compliance */
#define	MSG_DONTWAIT	0x80		/* Don't block for this recv */
#define	MSG_NOTIFICATION 0x100		/* Notification, not data */
#define	MSG_NOSIGNAL	0x200		/* Don't generate SIGPIPE */
#if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
#define	MSG_WAITFORONE	0x400		/* recvmmsg() control flag */
#endif	/* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
#define	MSG_XPG4_2	0x8000		/* Private: XPG4.2 flag */

#define	MSG_MAXIOVLEN	16

and info from :

https://docs.oracle.com/cd/E88353_01/html/E37843/send-3c.html

we need to add :

+++ source/packages/rtl-extra/src/solaris/unxsockh.inc
@@ -167,0 +168,3 @@
+  MSG_NOSIGNAL     = $0200;         { Solaris 11.4 : Don't generate SIGPIPE }
+  MSG_WAITFORONE   = $0400;         { Solaris 11.4 : recvmmsg() control flag }
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information