Print this page
3830 SIGQUEUE_MAX's limit of 32 is too low
@@ -298,23 +298,25 @@
typedef struct {
sigqueue_t sn_sigq; /* sigq struct for notification */
u_longlong_t sn_snid; /* unique id for notification */
} 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
+#define _SIGQUEUE_SIZE_BASIC 128 /* basic limit */
+#define _SIGQUEUE_SIZE_PRIVILEGED 512 /* privileged limit */
+#define _SIGQUEUE_SIZE_MAX 8192 /* maximum limit */
+
#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 *);