hwstub: add delay function

Change-Id: Iab208ed59a9a2540a64b190357411d3de28f288e
diff --git a/utils/hwstub/tools/hwstub_shell.cpp b/utils/hwstub/tools/hwstub_shell.cpp
index d70fd6d..2a3fc17 100644
--- a/utils/hwstub/tools/hwstub_shell.cpp
+++ b/utils/hwstub/tools/hwstub_shell.cpp
@@ -27,6 +27,7 @@
 #include <readline/readline.h>
 #include <readline/history.h>
 #include <lua.hpp>
+#include <unistd.h>
 #include "soc_desc.hpp"
 
 #if LUA_VERSION_NUM < 502
@@ -244,6 +245,16 @@
     return 0;
 }
 
+int my_lua_udelay(lua_State *state)
+{
+    int n = lua_gettop(state);
+    if(n != 1)
+        luaL_error(state, "udelay takes one argument");
+    long usec = lua_tointeger(state, -1);
+    usleep(usec);
+    return 0;
+}
+
 bool my_lua_import_hwstub()
 {
     int oldtop = lua_gettop(g_lua);
@@ -377,6 +388,9 @@
     lua_settable(g_lua, -3);
     lua_setfield(g_lua, -2, "help");
 
+    lua_pushcclosure(g_lua, my_lua_udelay, 0);
+    lua_setfield(g_lua, -2, "udelay");
+
     lua_setglobal(g_lua, "hwstub");
 
     lua_pushcfunction(g_lua, my_lua_help);
diff --git a/utils/hwstub/tools/init.lua b/utils/hwstub/tools/init.lua
index 74f610a..4c62de0 100644
--- a/utils/hwstub/tools/init.lua
+++ b/utils/hwstub/tools/init.lua
@@ -108,4 +108,11 @@
 --
 DEV = hwstub.dev
 
+--
+-- Misc
+--
+function hwstub.mdelay(msec)
+    hwstub.udelay(msec * 1000)
+end
+
 require "lua/load"