summaryrefslogtreecommitdiff
path: root/meta-xilinx/meta-xilinx-pynq/recipes-devtool/python/python3-pynq/pl_server_init
diff options
context:
space:
mode:
Diffstat (limited to 'meta-xilinx/meta-xilinx-pynq/recipes-devtool/python/python3-pynq/pl_server_init')
-rw-r--r--meta-xilinx/meta-xilinx-pynq/recipes-devtool/python/python3-pynq/pl_server_init109
1 files changed, 109 insertions, 0 deletions
diff --git a/meta-xilinx/meta-xilinx-pynq/recipes-devtool/python/python3-pynq/pl_server_init b/meta-xilinx/meta-xilinx-pynq/recipes-devtool/python/python3-pynq/pl_server_init
new file mode 100644
index 000000000..8b13ae1f1
--- /dev/null
+++ b/meta-xilinx/meta-xilinx-pynq/recipes-devtool/python/python3-pynq/pl_server_init
@@ -0,0 +1,109 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start daemon at boot time
+# Description: Enable service provided by daemon.
+### END INIT INFO
+
+dir=""
+cmd="start_pl_server.py"
+user=""
+
+name="pl_server"
+pid_file="/var/run/$name.pid"
+stdout_log="/var/log/$name.log"
+stderr_log="/var/log/$name.err"
+
+get_pid() {
+ cat "$pid_file"
+}
+
+is_running() {
+ [ -f "$pid_file" ] && (ps -o"pid" | grep '^ '`get_pid`'$') > /dev/null 2>&1
+}
+
+install_overlay() {
+if [ ! -e '/sys/kernel/config/device-tree/overlays/pynq' ]; then
+ modprobe uio_pdrv_genirq
+ if [ ! -e /proc/device-tree/__symbols__ ]; then
+ mkdir /sys/kernel/config/device-tree/overlays/pynq-symbols
+ cat /lib/firmware/pynq-symbols.dtbo > /sys/kernel/config/device-tree/overlays/pynq-symbols/dtbo
+ fi
+ mkdir /sys/kernel/config/device-tree/overlays/pynq
+ cat /lib/firmware/pynq.dtbo > /sys/kernel/config/device-tree/overlays/pynq/dtbo
+fi
+}
+
+case "$1" in
+ start)
+ if is_running; then
+ echo "Already started"
+ else
+ echo "Starting $name"
+ cd "$dir"
+ install_overlay
+ $cmd >> "$stdout_log" 2>> "$stderr_log" &
+ echo $! > "$pid_file"
+ if ! is_running; then
+ echo "Unable to start, see $stdout_log and $stderr_log"
+ exit 1
+ fi
+ fi
+ ;;
+ stop)
+ if is_running; then
+ echo -n "Stopping $name.."
+ kill `get_pid`
+ for i in 1 2 3 4 5 6 7 8 9 10
+ # for i in `seq 10`
+ do
+ if ! is_running; then
+ break
+ fi
+
+ echo -n "."
+ sleep 1
+ done
+ echo
+
+ if is_running; then
+ echo "Not stopped; may still be shutting down or shutdown may have failed"
+ exit 1
+ else
+ echo "Stopped"
+ if [ -f "$pid_file" ]; then
+ rm "$pid_file"
+ fi
+ fi
+ else
+ echo "Not running"
+ fi
+ ;;
+ restart)
+ $0 stop
+ if is_running; then
+ echo "Unable to stop, will not attempt to start"
+ exit 1
+ fi
+ $0 start
+ ;;
+ status)
+ if is_running; then
+ echo "Running"
+ else
+ echo "Stopped"
+ exit 1
+ fi
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|status}"
+ exit 1
+ ;;
+esac
+
+exit 0
+