#!/bin/bash

# init ssh port
if [ -z $1 ];
then
	SSH_PORT=10069
else
	SSH_PORT=$1
fi

# init core number
if [ -z $2 ]; then
	CORE_NUM=2
else
	CORE_NUM=$2
fi

# init memory size
if [ -z $3 ];
then
	MEM_SIZE=4G
else
	MEM_SIZE=$3
fi

# resolve image path
list=($(pwd)/img/*.img)
IMAGE=${list[0]}

KERNEL=$(pwd)/kernel/arch/x86/boot/bzImage

  #-cpu host,-smap,-smep \
  #-append "console=ttyS0 root=/dev/sda debug earlyprintk=serial oops=panic panic_on_warn=1 nokaslr nosmap nosmep selinux=0" \
  #-smp cores=$CORE_NUM,threads=2 \
  #-append "console=ttyS0 root=/dev/sda debug earlyprintk=serial panic_on_warn=1 nokaslr smap smep selinux=0" \
  #-enable-kvm \
  #-cpu host \
  #-monitor none,server,nowait,nodelay,reconnect=-1 \
#qemu-system-x86_64 \
  #-snapshot \

  # snapshot stuff
  #-drive file=$IMAGE,if=none,id=img-direct \
  #-drive driver=blkreplay,if=none,image=img-direct,id=img-blkreplay \
  #-device ide-hd,drive=img-blkreplay \
  #-icount 'shift=7,rr=record,rrfile=replay.bin' \

  #-smp cores=$CORE_NUM,threads=2 \
  #-cpu kvm64 \
  # -hda ./snapshot.img \
#qemu-system-x86_64 \
  #-hda $IMAGE \
  #-snapshot \
  #-append "console=ttyS0 root=/dev/sda debug earlyprintk=serial oops=panic rcu_stall=panic panic_on_warn=1 panic_on_rcu_stall=1 nokaslr nosmap nosmep selinux=0 tsc=unstable" \
  #-append "console=ttyS0 root=/dev/sda debug earlyprintk=serial panic=1000 nokaslr nosmap nosmep selinux=0 tsc=unstable net.ifnames=0 raid=noautodetect" \
  #-append "console=ttyS0 root=/dev/sda debug earlyprintk=serial panic=1000 nokaslr oops=panic selinux=0 tsc=unstable net.ifnames=0 raid=noautodetect" \
  #-cpu kvm64 \
  #-enable-kvm \
  #-cpu host \
  #-s \
  #-cpu kvm64 \
  #-cpu kvm64 \
  #-cpu host \
  #-append "console=ttyS0 root=/dev/sda loglevel=3 panic=-1 pti=off nokaslr tsc=unstable net.ifnames=0" \
  #-cpu host \
qemu-system-x86_64 \
  --snapshot \
  -kernel $KERNEL \
  -hda $IMAGE \
  -net nic -net user,hostfwd=tcp::${SSH_PORT}-:22 \
  -append "console=ttyS0 root=/dev/sda debug earlyprintk=serial panic=1000 oops=panic nokaslr nosmap nosmep selinux=0 nopti tsc=unstable net.ifnames=0" \
  -nographic \
  -m $MEM_SIZE \
  -monitor tcp:127.0.0.1:45454,server,nowait \
  -smp cores=$CORE_NUM,threads=2 \
  -enable-kvm \
  -cpu kvm64,+fsgsbase,+smep,+smap,+avx,+avx2,+xsave \
  -s \
  2>&1
