xref: /netbsd-src/tests/fs/ptyfs/t_ptyfs.c (revision c54cb81102ced2313cb40993fe05548aca9933a1)
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