blob: ebfd22be0ada0d99e1e7e606e1a03f6db3ddde9c [file] [log] [blame]
Cyril Hrubisbbdb9f72016-03-16 15:53:57 +01001/*
2 * Copyright (c) 2015-2016 Cyril Hrubis <chrubis@suse.cz>
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TST_CHECKPOINT_FN__
19#define TST_CHECKPOINT_FN__
20
21/*
22 * Checkpoint initializaton, must be done first.
23 *
24 * NOTE: tst_tmpdir() must be called beforehand.
25 */
26void tst_checkpoint_init(const char *file, const int lineno,
27 void (*cleanup_fn)(void));
28
29/*
30 * Waits for wakeup.
31 *
32 * @id: Checkpoint id, possitive number
33 * @msec_timeout: Timeout in miliseconds, 0 == no timeout
34 */
35int tst_checkpoint_wait(unsigned int id, unsigned int msec_timeout);
36
37/*
38 * Wakes up sleeping process(es)/thread(s).
39 *
40 * @id: Checkpoint id, possitive number
41 * @nr_wake: Number of processes/threads to wake up
42 * @msec_timeout: Timeout in miliseconds, 0 == no timeout
43 */
44int tst_checkpoint_wake(unsigned int id, unsigned int nr_wake,
45 unsigned int msec_timeout);
46
47void tst_safe_checkpoint_wait(const char *file, const int lineno,
48 void (*cleanup_fn)(void), unsigned int id);
49
50void tst_safe_checkpoint_wake(const char *file, const int lineno,
51 void (*cleanup_fn)(void), unsigned int id,
52 unsigned int nr_wake);
53
54#endif /* TST_CHECKPOINT_FN__ */