1d327dbeaSPatrick Mooney /*
2d327dbeaSPatrick Mooney  * This file and its contents are supplied under the terms of the
3d327dbeaSPatrick Mooney  * Common Development and Distribution License ("CDDL"), version 1.0.
4d327dbeaSPatrick Mooney  * You may only use this file in accordance with the terms of version
5d327dbeaSPatrick Mooney  * 1.0 of the CDDL.
6d327dbeaSPatrick Mooney  *
7d327dbeaSPatrick Mooney  * A full copy of the text of the CDDL should have accompanied this
8d327dbeaSPatrick Mooney  * source.  A copy of the CDDL is also available via the Internet at
9d327dbeaSPatrick Mooney  * http://www.illumos.org/license/CDDL.
10d327dbeaSPatrick Mooney  */
11d327dbeaSPatrick Mooney 
12d327dbeaSPatrick Mooney /*
13d327dbeaSPatrick Mooney  * Copyright 2018 Joyent, Inc.
14d327dbeaSPatrick Mooney  */
15d327dbeaSPatrick Mooney 
16d327dbeaSPatrick Mooney #include "../../../mevent.c"
17d327dbeaSPatrick Mooney #include "testlib.h"
18d327dbeaSPatrick Mooney 
19d327dbeaSPatrick Mooney /*
20d327dbeaSPatrick Mooney  * Returns by reference the number of events on the global and change lists.
21d327dbeaSPatrick Mooney  *
22d327dbeaSPatrick Mooney  * Used by tests that wish to ensure that the event count changes as suggested
23d327dbeaSPatrick Mooney  * by mevent_add() and mevent_delete().  Note that a delete does not immediately
24d327dbeaSPatrick Mooney  * delete an event.  Events that are pending delete are included in the change
25d327dbeaSPatrick Mooney  * list until the next pass through the change list to process pending changes.
26d327dbeaSPatrick Mooney  */
27d327dbeaSPatrick Mooney void
test_mevent_count_lists(int * ret_global,int * ret_change,int * ret_del_pending)28d327dbeaSPatrick Mooney test_mevent_count_lists(int *ret_global, int *ret_change, int *ret_del_pending)
29d327dbeaSPatrick Mooney {
30d327dbeaSPatrick Mooney 	struct mevent *mevp;
31d327dbeaSPatrick Mooney 	int global = 0;
32d327dbeaSPatrick Mooney 	int change = 0;
33d327dbeaSPatrick Mooney 	int del_pending = 0;
34d327dbeaSPatrick Mooney 
35d327dbeaSPatrick Mooney 	mevent_qlock();
36d327dbeaSPatrick Mooney 
37d327dbeaSPatrick Mooney 	LIST_FOREACH(mevp, &global_head, me_list) {
38d327dbeaSPatrick Mooney 		global++;
39d327dbeaSPatrick Mooney 		VERBOSE(("on global: type %d fd %d state %d", mevp->me_type,
40d327dbeaSPatrick Mooney 		    mevp->me_fd, mevp->me_state));
41d327dbeaSPatrick Mooney 	}
42d327dbeaSPatrick Mooney 
43d327dbeaSPatrick Mooney 	LIST_FOREACH(mevp, &change_head, me_list) {
44d327dbeaSPatrick Mooney 		change++;
45d327dbeaSPatrick Mooney 		if (mevp->me_state == EV_DELETE) {
46d327dbeaSPatrick Mooney 			del_pending++;
47d327dbeaSPatrick Mooney 		}
48d327dbeaSPatrick Mooney 		VERBOSE(("on change: type %d fd %d state %d", mevp->me_type,
49d327dbeaSPatrick Mooney 		    mevp->me_fd, mevp->me_state));
50d327dbeaSPatrick Mooney 	}
51d327dbeaSPatrick Mooney 
52d327dbeaSPatrick Mooney 	mevent_qunlock();
53d327dbeaSPatrick Mooney 
54d327dbeaSPatrick Mooney 	*ret_global = global;
55d327dbeaSPatrick Mooney 	*ret_change = change;
56d327dbeaSPatrick Mooney 	*ret_del_pending = del_pending;
57d327dbeaSPatrick Mooney }
58*251becc8SAndy Fiddaman 
59*251becc8SAndy Fiddaman void
set_mevent_file_poll_interval_ms(int ms)60*251becc8SAndy Fiddaman set_mevent_file_poll_interval_ms(int ms)
61*251becc8SAndy Fiddaman {
62*251becc8SAndy Fiddaman 	mevent_file_poll_interval_ms = ms;
63*251becc8SAndy Fiddaman }
64