diff options
Diffstat (limited to 'src/kernel/tests/include/tst_process_state.h')
-rw-r--r-- | src/kernel/tests/include/tst_process_state.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/kernel/tests/include/tst_process_state.h b/src/kernel/tests/include/tst_process_state.h new file mode 100644 index 0000000..c32aa58 --- /dev/null +++ b/src/kernel/tests/include/tst_process_state.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later + * Copyright (C) 2012-2014 Cyril Hrubis chrubis@suse.cz + */ + + /* + + These functions helps you wait till a process with given pid changes state. + This is for example useful when you need to wait in parent until child + blocks. + + */ + +#ifndef TST_PROCESS_STATE__ +#define TST_PROCESS_STATE__ + +#include <unistd.h> + +/* + * Waits for process state change. + * + * The state is one of the following: + * + * R - process is running + * S - process is sleeping + * D - process sleeping uninterruptibly + * Z - zombie process + * T - process is traced + */ +#ifdef TST_TEST_H__ + +#define TST_PROCESS_STATE_WAIT(pid, state, msec_timeout) \ + tst_process_state_wait(__FILE__, __LINE__, NULL, \ + (pid), (state), (msec_timeout)) +#else +/* + * The same as above but does not use tst_brkm() interface. + * + * This function is intended to be used from child processes. + * + * Returns zero on success, non-zero on failure. + */ +int tst_process_state_wait2(pid_t pid, const char state); + +# define TST_PROCESS_STATE_WAIT(cleanup_fn, pid, state) \ + tst_process_state_wait(__FILE__, __LINE__, (cleanup_fn), \ + (pid), (state), 0) +#endif + +int tst_process_state_wait(const char *file, const int lineno, + void (*cleanup_fn)(void), pid_t pid, + const char state, unsigned int msec_timeout); + +#endif /* TST_PROCESS_STATE__ */ |