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.
|