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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/signal.h
          +++ new/usr/src/uts/common/sys/signal.h
↓ open down ↓ 292 lines elided ↑ open up ↑
 293  293          int     checkperm;                      /* check perm or not    */
 294  294          int     sicode;                         /* has siginfo.si_code  */
 295  295          union sigval value;                     /* user specified value */
 296  296  } sigsend_t;
 297  297  
 298  298  typedef struct {
 299  299          sigqueue_t      sn_sigq;        /* sigq struct for notification */
 300  300          u_longlong_t    sn_snid;        /* unique id for notification   */
 301  301  } signotifyq_t;
 302  302  
 303      -
 304  303  typedef struct sigqhdr {                /* sigqueue pool header         */
 305  304          sigqueue_t      *sqb_free;      /* free sigq struct list        */
 306      -        uchar_t         sqb_count;      /* sigq free count              */
 307      -        uchar_t         sqb_maxcount;   /* sigq max free count          */
 308      -        ushort_t        sqb_size;       /* size of header+free structs  */
      305 +        int             sqb_count;      /* sigq free count              */
      306 +        uint_t          sqb_maxcount;   /* sigq max free count          */
      307 +        size_t          sqb_size;       /* size of header+free structs  */
 309  308          uchar_t         sqb_pexited;    /* process has exited           */
 310      -        uchar_t         sqb_sent;       /* number of sigq sent          */
      309 +        uint_t          sqb_sent;       /* number of sigq sent          */
 311  310          kcondvar_t      sqb_cv;         /* waiting for a sigq struct    */
 312  311          kmutex_t        sqb_lock;       /* lock for sigq pool           */
 313  312  } sigqhdr_t;
 314  313  
 315      -#define _SIGQUEUE_MAX   32
      314 +#define _SIGQUEUE_SIZE_BASIC            128     /* basic limit */
      315 +#define _SIGQUEUE_SIZE_PRIVILEGED       512     /* privileged limit */
      316 +
 316  317  #define _SIGNOTIFY_MAX  32
 317  318  
 318  319  extern  void    setsigact(int, void (*)(int), const k_sigset_t *, int);
 319  320  extern  void    sigorset(k_sigset_t *, const k_sigset_t *);
 320  321  extern  void    sigandset(k_sigset_t *, const k_sigset_t *);
 321  322  extern  void    sigdiffset(k_sigset_t *, const k_sigset_t *);
 322  323  extern  void    sigintr(k_sigset_t *, int);
 323  324  extern  void    sigunintr(k_sigset_t *);
 324  325  extern  void    sigreplace(k_sigset_t *, k_sigset_t *);
 325  326  
 326  327  extern  int     kill(pid_t, int);
 327  328  
 328  329  #endif /* _KERNEL */
 329  330  
 330  331  #ifdef  __cplusplus
 331  332  }
 332  333  #endif
 333  334  
 334  335  #endif /* _SYS_SIGNAL_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX