Print this page
3830 SIGQUEUE_MAX's limit of 32 is too low

@@ -18,12 +18,11 @@
  *
  * CDDL HEADER END
  */
 
 /*
- * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 1988, 2012, Oracle and/or its affiliates. All rights reserved.
  */
 
 /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
 /*        All Rights Reserved   */
 

@@ -301,20 +300,26 @@
 } signotifyq_t;
 
 
 typedef struct sigqhdr {                /* sigqueue pool header         */
         sigqueue_t      *sqb_free;      /* free sigq struct list        */
-        uchar_t         sqb_count;      /* sigq free count              */
-        uchar_t         sqb_maxcount;   /* sigq max free count          */
-        ushort_t        sqb_size;       /* size of header+free structs  */
+        int             sqb_count;      /* sigq free count              */
+        uint_t          sqb_maxcount;   /* sigq max free count          */
+        size_t          sqb_size;       /* size of header+free structs  */
         uchar_t         sqb_pexited;    /* process has exited           */
-        uchar_t         sqb_sent;       /* number of sigq sent          */
+        uint_t          sqb_sent;       /* number of sigq sent          */
         kcondvar_t      sqb_cv;         /* waiting for a sigq struct    */
         kmutex_t        sqb_lock;       /* lock for sigq pool           */
 } sigqhdr_t;
 
-#define _SIGQUEUE_MAX   32
+/*
+ * Limits on maximum number of sigqueue(3C) entries per process.
+ */
+#define _SIGQSZ_DEFAULT         128     /* default number */
+#define _SIGQSZ_PRIVILEGED      512     /* privilege required to set abouve */
+#define _SIGQSZ_MAX             8192    /* max even with privilege */
+
 #define _SIGNOTIFY_MAX  32
 
 extern  void    setsigact(int, void (*)(int), const k_sigset_t *, int);
 extern  void    sigorset(k_sigset_t *, const k_sigset_t *);
 extern  void    sigandset(k_sigset_t *, const k_sigset_t *);