1*c54cb811Schristos /* $NetBSD: t_ptyfs.c,v 1.2 2017/01/13 21:30:40 christos Exp $ */
2f1809fcdSpooka
3f1809fcdSpooka #include <sys/types.h>
4f1809fcdSpooka #include <sys/mount.h>
5f1809fcdSpooka
6f1809fcdSpooka #include <atf-c.h>
7f1809fcdSpooka #include <err.h>
8f1809fcdSpooka #include <errno.h>
9f1809fcdSpooka #include <fcntl.h>
10f1809fcdSpooka #include <stdio.h>
11f1809fcdSpooka #include <unistd.h>
12f1809fcdSpooka #include <string.h>
13f1809fcdSpooka #include <stdlib.h>
14f1809fcdSpooka
15f1809fcdSpooka #include <rump/rump.h>
16f1809fcdSpooka #include <rump/rump_syscalls.h>
17f1809fcdSpooka
18f1809fcdSpooka #include <fs/ptyfs/ptyfs.h>
19f1809fcdSpooka
20*c54cb811Schristos #include "h_macros.h"
21f1809fcdSpooka
22f1809fcdSpooka static void
mountptyfs(const char * mp,int flags)23f1809fcdSpooka mountptyfs(const char *mp, int flags)
24f1809fcdSpooka {
25f1809fcdSpooka struct ptyfs_args args;
26f1809fcdSpooka
27f1809fcdSpooka if (rump_sys_mkdir("/mp", 0777) == -1) {
28f1809fcdSpooka if (errno != EEXIST)
29f1809fcdSpooka atf_tc_fail_errno("mp1");
30f1809fcdSpooka }
31f1809fcdSpooka memset(&args, 0, sizeof(args));
32f1809fcdSpooka args.version = PTYFS_ARGSVERSION;
33f1809fcdSpooka args.mode = 0777;
34f1809fcdSpooka if (rump_sys_mount(MOUNT_PTYFS, mp, flags, &args, sizeof(args)) == -1)
35f1809fcdSpooka atf_tc_fail_errno("could not mount ptyfs");
36f1809fcdSpooka }
37f1809fcdSpooka
38f1809fcdSpooka ATF_TC(basic);
ATF_TC_HEAD(basic,tc)39f1809fcdSpooka ATF_TC_HEAD(basic, tc)
40f1809fcdSpooka {
41f1809fcdSpooka atf_tc_set_md_var(tc, "descr", "mount ptyfs");
42f1809fcdSpooka }
43f1809fcdSpooka
ATF_TC_BODY(basic,tc)44f1809fcdSpooka ATF_TC_BODY(basic, tc)
45f1809fcdSpooka {
46f1809fcdSpooka
47f1809fcdSpooka rump_init();
48f1809fcdSpooka
49f1809fcdSpooka mountptyfs("/mp", 0);
50f1809fcdSpooka if (rump_sys_unmount("/mp", 0) == -1)
51f1809fcdSpooka atf_tc_fail_errno("unmount failed");
52f1809fcdSpooka
53f1809fcdSpooka /* done */
54f1809fcdSpooka }
55f1809fcdSpooka
ATF_TP_ADD_TCS(tp)56f1809fcdSpooka ATF_TP_ADD_TCS(tp)
57f1809fcdSpooka {
58f1809fcdSpooka
59f1809fcdSpooka ATF_TP_ADD_TC(tp, basic);
60f1809fcdSpooka
61f1809fcdSpooka return atf_no_error();
62f1809fcdSpooka }
63