xref: /xnu-12377.41.6/tools/tests/perf_index/ramdisk.c (revision bbb1b6f9e71b8cdde6e5cd6f4841f207dee3d828)
1 #include "ramdisk.h"
2 #include "fail.h"
3 #include <assert.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <sys/param.h>
7 
8 int
setup_ram_volume(const char * name,char * path)9 setup_ram_volume(const char* name, char* path)
10 {
11 	char *cmd;
12 	int retval;
13 
14 	retval = asprintf(&cmd, "diskutil erasevolume HFS+ '%s' `hdiutil attach -nomount ram://1500000` >/dev/null", name);
15 	VERIFY(retval > 0, "asprintf failed");
16 
17 	retval = system(cmd);
18 	VERIFY(retval == 0, "diskutil command failed");
19 
20 	snprintf(path, MAXPATHLEN, "/Volumes/%s", name);
21 
22 	free(cmd);
23 
24 	return PERFINDEX_SUCCESS;
25 }
26 
27 int
cleanup_ram_volume(char * path)28 cleanup_ram_volume(char* path)
29 {
30 	char *cmd;
31 	int retval;
32 
33 	retval = asprintf(&cmd, "umount -f '%s' >/dev/null", path);
34 	VERIFY(retval > 0, "asprintf failed");
35 
36 	retval = system(cmd);
37 	VERIFY(retval == 0, "diskutil command failed");
38 
39 	free(cmd);
40 
41 	return PERFINDEX_SUCCESS;
42 }
43