Add a function for converting wait options.

Differential Revision:	https://reviews.freebsd.org/D1045
Reviewed by:	trasz
This commit is contained in:
dchagin 2015-05-24 15:00:27 +00:00
parent 88e62ac1d2
commit 3445f2f9f2
2 changed files with 31 additions and 1 deletions

View File

@ -2008,3 +2008,22 @@ linux_tdfind(struct thread *td, lwpid_t tid, pid_t pid)
return (tdt);
}
void
linux_to_bsd_waitopts(int options, int *bsdopts)
{
if (options & LINUX_WNOHANG)
*bsdopts |= WNOHANG;
if (options & LINUX_WUNTRACED)
*bsdopts |= WUNTRACED;
if (options & LINUX_WEXITED)
*bsdopts |= WEXITED;
if (options & LINUX_WCONTINUED)
*bsdopts |= WCONTINUED;
if (options & LINUX_WNOWAIT)
*bsdopts |= WNOWAIT;
if (options & __WCLONE)
*bsdopts |= WLINUXCLONE;
}

View File

@ -113,10 +113,21 @@ struct l_new_utsname {
extern int stclohz;
#define __WCLONE 0x80000000
#define LINUX_WNOHANG 0x00000001
#define LINUX_WUNTRACED 0x00000002
#define LINUX_WSTOPPED LINUX_WUNTRACED
#define LINUX_WEXITED 0x00000004
#define LINUX_WCONTINUED 0x00000008
#define LINUX_WNOWAIT 0x01000000
#define __WNOTHREAD 0x20000000
#define __WALL 0x40000000
#define __WCLONE 0x80000000
int linux_common_wait(struct thread *td, int pid, int *status,
int options, struct rusage *ru);
void linux_to_bsd_waitopts(int options, int *bsdopts);
int linux_set_upcall_kse(struct thread *td, register_t stack);
int linux_set_cloned_tls(struct thread *td, void *desc);
struct thread *linux_tdfind(struct thread *, lwpid_t, pid_t);