##
# Execute scenario on Linux
#
proc run_power_on { } {
	global linux_spawn_id
	global linux_orig_pwd

	set linux_orig_pwd [pwd]
	cd [run_dir]/genode
	eval spawn ./core
	set linux_spawn_id $spawn_id
	cd $linux_orig_pwd

	return true
}


##
# Umount a directory that was bind-mounted beforehand
#
# This function is used by chroot-related tests, e.g., 'os/run/chroot.run',
# 'os/run/chroot_loader.run'.
#
proc umount_and_rmdir { path } {

	puts "umounting $path"

	#
	# Invoke umount until it returns an error. Apparently, the unmounting
	# of bind-mounted mount points does not always take immediate effect
	# (regardless of the -l option).
	#
	while {1} {
		if {[catch { exec sudo umount -l $path }]} { break; }
		sleep 0.25
	}

	catch { exec rmdir -p $path }
}