78  */
  79 int log_eventq_cnt = 0;
  80 
  81 /* queue of event buffers awaiting delivery to syseventd */
  82 static log_eventq_t *log_eventq_head = NULL;
  83 static log_eventq_t *log_eventq_tail = NULL;
  84 static uint64_t kernel_event_id = 0;
  85 static int encoding = NV_ENCODE_NATIVE;
  86 
  87 /* log event delivery flag */
  88 #define LOGEVENT_DELIVERY_OK    0       /* OK to deliver event buffers */
  89 #define LOGEVENT_DELIVERY_CONT  1       /* Continue to deliver event buffers */
  90 #define LOGEVENT_DELIVERY_HOLD  2       /* Hold delivering of event buffers */
  91 
  92 /*
  93  * Tunable maximum event buffer queue size. Size depends on how many events
  94  * the queue must hold when syseventd is not available, for example during
  95  * system startup. Experience showed that more than 2000 events could be posted
  96  * due to correctable memory errors.
  97  */
  98 int logevent_max_q_sz = 5000;
  99 
 100 
 101 static int log_event_delivery = LOGEVENT_DELIVERY_HOLD;
 102 static char logevent_door_upcall_filename[MAXPATHLEN];
 103 
 104 static door_handle_t event_door = NULL;         /* Door for upcalls */
 105 static kmutex_t event_door_mutex;               /* To protect event_door */
 106 
 107 /*
 108  * async thread-related variables
 109  *
 110  * eventq_head_mutex - synchronizes access to the kernel event queue
 111  *
 112  * eventq_sent_mutex - synchronizes access to the queue of event sents to
 113  *                      userlevel
 114  *
 115  * log_event_cv - condition variable signaled when an event has arrived or
 116  *                      userlevel ready to process event buffers
 117  *
 118  * async_thread - asynchronous event delivery thread to userlevel daemon.
  
 | 
 
 
  78  */
  79 int log_eventq_cnt = 0;
  80 
  81 /* queue of event buffers awaiting delivery to syseventd */
  82 static log_eventq_t *log_eventq_head = NULL;
  83 static log_eventq_t *log_eventq_tail = NULL;
  84 static uint64_t kernel_event_id = 0;
  85 static int encoding = NV_ENCODE_NATIVE;
  86 
  87 /* log event delivery flag */
  88 #define LOGEVENT_DELIVERY_OK    0       /* OK to deliver event buffers */
  89 #define LOGEVENT_DELIVERY_CONT  1       /* Continue to deliver event buffers */
  90 #define LOGEVENT_DELIVERY_HOLD  2       /* Hold delivering of event buffers */
  91 
  92 /*
  93  * Tunable maximum event buffer queue size. Size depends on how many events
  94  * the queue must hold when syseventd is not available, for example during
  95  * system startup. Experience showed that more than 2000 events could be posted
  96  * due to correctable memory errors.
  97  */
  98 volatile int logevent_max_q_sz = 5000;
  99 
 100 
 101 static int log_event_delivery = LOGEVENT_DELIVERY_HOLD;
 102 static char logevent_door_upcall_filename[MAXPATHLEN];
 103 
 104 static door_handle_t event_door = NULL;         /* Door for upcalls */
 105 static kmutex_t event_door_mutex;               /* To protect event_door */
 106 
 107 /*
 108  * async thread-related variables
 109  *
 110  * eventq_head_mutex - synchronizes access to the kernel event queue
 111  *
 112  * eventq_sent_mutex - synchronizes access to the queue of event sents to
 113  *                      userlevel
 114  *
 115  * log_event_cv - condition variable signaled when an event has arrived or
 116  *                      userlevel ready to process event buffers
 117  *
 118  * async_thread - asynchronous event delivery thread to userlevel daemon.
  
 |