You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.3 KiB
73 lines
2.3 KiB
/*
|
|
* Copyright (C) 2012-2014 Cyril Hrubis chrubis@suse.cz
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of version 2 of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it would be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
*
|
|
* Further, this software is distributed without any warranty that it is
|
|
* free of the rightful claim of any third person regarding infringement
|
|
* or the like. Any license provided herein, whether implied or
|
|
* otherwise, applies only to this software file. Patent licenses, if
|
|
* any, provided herein do not apply to combinations of this program with
|
|
* other software, or any other product whatsoever.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
/*
|
|
|
|
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) \
|
|
tst_process_state_wait(__FILE__, __LINE__, NULL, \
|
|
(pid), (state))
|
|
#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))
|
|
#endif
|
|
|
|
void tst_process_state_wait(const char *file, const int lineno,
|
|
void (*cleanup_fn)(void),
|
|
pid_t pid, const char state);
|
|
|
|
#endif /* TST_PROCESS_STATE__ */
|