1314818Sngie/*	$NetBSD: t_ptyfs.c,v 1.2 2017/01/13 21:30:40 christos Exp $	*/
2272343Sngie
3272343Sngie#include <sys/types.h>
4272343Sngie#include <sys/mount.h>
5272343Sngie
6272343Sngie#include <atf-c.h>
7272343Sngie#include <err.h>
8272343Sngie#include <errno.h>
9272343Sngie#include <fcntl.h>
10272343Sngie#include <stdio.h>
11272343Sngie#include <unistd.h>
12272343Sngie#include <string.h>
13272343Sngie#include <stdlib.h>
14272343Sngie
15272343Sngie#include <rump/rump.h>
16272343Sngie#include <rump/rump_syscalls.h>
17272343Sngie
18272343Sngie#include <fs/ptyfs/ptyfs.h>
19272343Sngie
20314818Sngie#include "h_macros.h"
21272343Sngie
22272343Sngiestatic void
23272343Sngiemountptyfs(const char *mp, int flags)
24272343Sngie{
25272343Sngie	struct ptyfs_args args;
26272343Sngie
27272343Sngie	if (rump_sys_mkdir("/mp", 0777) == -1) {
28272343Sngie		if (errno != EEXIST)
29272343Sngie			atf_tc_fail_errno("mp1");
30272343Sngie	}
31272343Sngie	memset(&args, 0, sizeof(args));
32272343Sngie	args.version = PTYFS_ARGSVERSION;
33272343Sngie	args.mode = 0777;
34272343Sngie	if (rump_sys_mount(MOUNT_PTYFS, mp, flags, &args, sizeof(args)) == -1)
35272343Sngie		atf_tc_fail_errno("could not mount ptyfs");
36272343Sngie}
37272343Sngie
38272343SngieATF_TC(basic);
39272343SngieATF_TC_HEAD(basic, tc)
40272343Sngie{
41272343Sngie	atf_tc_set_md_var(tc, "descr", "mount ptyfs");
42272343Sngie}
43272343Sngie
44272343SngieATF_TC_BODY(basic, tc)
45272343Sngie{
46272343Sngie
47272343Sngie	rump_init();
48272343Sngie
49272343Sngie	mountptyfs("/mp", 0);
50272343Sngie	if (rump_sys_unmount("/mp", 0) == -1)
51272343Sngie		atf_tc_fail_errno("unmount failed");
52272343Sngie
53272343Sngie	/* done */
54272343Sngie}
55272343Sngie
56272343SngieATF_TP_ADD_TCS(tp)
57272343Sngie{
58272343Sngie
59272343Sngie	ATF_TP_ADD_TC(tp, basic);
60272343Sngie
61272343Sngie	return atf_no_error();
62272343Sngie}
63