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
8int setup_ram_volume(const char* name, char* path) {
9  char *cmd;
10  int retval;
11
12  retval = asprintf(&cmd, "diskutil erasevolume HFS+ '%s' `hdiutil attach -nomount ram://1500000` >/dev/null", name);
13  VERIFY(retval > 0, "asprintf failed");
14
15  retval = system(cmd);
16  VERIFY(retval == 0, "diskutil command failed");
17
18  snprintf(path, MAXPATHLEN, "/Volumes/%s", name);
19
20  free(cmd);
21
22  return PERFINDEX_SUCCESS;
23}
24
25int cleanup_ram_volume(char* path) {
26  char *cmd;
27  int retval;
28
29  retval = asprintf(&cmd, "umount -f '%s' >/dev/null", path);
30  VERIFY(retval > 0, "asprintf failed");
31
32  retval = system(cmd);
33  VERIFY(retval == 0, "diskutil command failed");
34
35  free(cmd);
36
37  return PERFINDEX_SUCCESS;
38}
39