-- Copyright (c) 2014:  G-CSC, Goethe University Frankfurt
-- Author: Martin Rupp
-- 
-- This file is part of UG4.
-- 
-- UG4 is free software: you can redistribute it and/or modify it under the
-- terms of the GNU Lesser General Public License version 3 (as published by the
-- Free Software Foundation) with the following additional attribution
-- requirements (according to LGPL/GPL v3 §7):
-- 
-- (1) The following notice must be displayed in the Appropriate Legal Notices
-- of covered and combined works: "Based on UG4 (www.ug4.org/license)".
-- 
-- (2) The following notice must be displayed at a prominent place in the
-- terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
-- 
-- (3) The following bibliography is recommended for citation and must be
-- preserved in all covered files:
-- "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
--   parallel geometric multigrid solver on hierarchically distributed grids.
--   Computing and visualization in science 16, 4 (2013), 151-164"
-- "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
--   flexible software system for simulating pde based models on high performance
--   computers. Computing and visualization in science 16, 4 (2013), 165-179"
-- 
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU Lesser General Public License for more details.

util = util or {}
--! this function creates a RAM disk on Mac.
--! it can be used for debug output, in case you want to have it faster or don't want to stress your SSD
--! if the volume is already there, nothing is created
--! keep in mind that RAM disks disappear after sleep or power off, so
--! only use it as a debug output.
--! @param name a std filename (don't use special characters or whitespace)
--! @param sizeMB the size of the RAM Disk in MB 
function util.createMacRAMDisk(name, sizeMB)
	ug_assert(GetOperatingSystem() == "apple", "only on apple systems")
	if ProcRank() == 0 then
		os.execute("if [ ! -e \"/Volumes/"..name.."\" ]; then\n"..
			"echo \"Creating ug4 RAM Disk with "..sizeMB.." MB..\"\n".. 
			"diskutil erasevolume HFS+ '"..name.."' `hdiutil attach -nomount ram://"..(1024*1024*sizeMB/512).."`\n"..
			"echo \"Access the RamDisk in /Volumes/"..name.."\"\n"..
			"fi\n")
	end
	SynchronizeProcesses()
	return "/Volumes/"..name	
end