|  |  | @ -137,27 +137,27 @@ static void *ckmsg_queue(void *arg) | 
			
		
	
		
		
			
				
					
					|  |  |  | /* Generic workqueue function and message receiving and parsing thread */ |  |  |  | /* Generic workqueue function and message receiving and parsing thread */ | 
			
		
	
		
		
			
				
					
					|  |  |  | static void *ckwq_queue(void *arg) |  |  |  | static void *ckwq_queue(void *arg) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	ckwq_t *ckmsgq = (ckwq_t *)arg; |  |  |  | 	ckwq_t *ckwq = (ckwq_t *)arg; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	ckpool_t *ckp = ckmsgq->ckp; |  |  |  | 	ckpool_t *ckp = ckwq->ckp; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	pthread_detach(pthread_self()); |  |  |  | 	pthread_detach(pthread_self()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	rename_proc(ckmsgq->name); |  |  |  | 	rename_proc(ckwq->name); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	while (42) { |  |  |  | 	while (42) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		ckwqmsg_t *wqmsg; |  |  |  | 		ckwqmsg_t *wqmsg; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		tv_t now; |  |  |  | 		tv_t now; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		ts_t abs; |  |  |  | 		ts_t abs; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		mutex_lock(ckmsgq->lock); |  |  |  | 		mutex_lock(ckwq->lock); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		tv_time(&now); |  |  |  | 		tv_time(&now); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		tv_to_ts(&abs, &now); |  |  |  | 		tv_to_ts(&abs, &now); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		abs.tv_sec++; |  |  |  | 		abs.tv_sec++; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (!ckmsgq->wqmsgs) |  |  |  | 		if (!ckwq->wqmsgs) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			cond_timedwait(ckmsgq->cond, ckmsgq->lock, &abs); |  |  |  | 			cond_timedwait(ckwq->cond, ckwq->lock, &abs); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		wqmsg = ckmsgq->wqmsgs; |  |  |  | 		wqmsg = ckwq->wqmsgs; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		if (wqmsg) |  |  |  | 		if (wqmsg) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			DL_DELETE(ckmsgq->wqmsgs, wqmsg); |  |  |  | 			DL_DELETE(ckwq->wqmsgs, wqmsg); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		mutex_unlock(ckmsgq->lock); |  |  |  | 		mutex_unlock(ckwq->lock); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (!wqmsg) |  |  |  | 		if (!wqmsg) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			continue; |  |  |  | 			continue; | 
			
		
	
	
		
		
			
				
					|  |  | @ -209,7 +209,7 @@ ckmsgq_t *create_ckmsgqs(ckpool_t *ckp, const char *name, const void *func, cons | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | ckwq_t *create_ckwqs(ckpool_t *ckp, const char *name, const int count) |  |  |  | ckwq_t *create_ckwqs(ckpool_t *ckp, const char *name, const int count) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	ckwq_t *ckwq = ckzalloc(sizeof(ckmsgq_t) * count); |  |  |  | 	ckwq_t *ckwq = ckzalloc(sizeof(ckwq_t) * count); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	mutex_t *lock; |  |  |  | 	mutex_t *lock; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	pthread_cond_t *cond; |  |  |  | 	pthread_cond_t *cond; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	int i; |  |  |  | 	int i; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |