You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.0 KiB
99 lines
2.0 KiB
#include <sys/time.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <lua.h>
|
|
#include <lauxlib.h>
|
|
|
|
unsigned long long get_time() {
|
|
struct timeval tv;
|
|
gettimeofday(&tv, NULL);
|
|
unsigned long long unix_us = tv.tv_sec * 1000000 + tv.tv_usec;
|
|
return unix_us;
|
|
}
|
|
|
|
int tapi_unix(lua_State* L) {
|
|
lua_pushnumber(L, get_time() / 1000000.0d);
|
|
return 1;
|
|
}
|
|
int tapi_unix_us(lua_State* L) {
|
|
lua_pushinteger(L, get_time());
|
|
return 1;
|
|
}
|
|
int tapi_ms_now(lua_State* L) {
|
|
struct timeval tv;
|
|
|
|
gettimeofday(&tv, NULL);
|
|
lua_pushinteger(L, tv.tv_usec/1000);
|
|
return 1;
|
|
}
|
|
int tapi_sec_now(lua_State* L) {
|
|
struct timeval tv;
|
|
|
|
gettimeofday(&tv, NULL);
|
|
lua_pushnumber(L, ((double)tv.tv_usec)/1000000.0d+((double)(tv.tv_sec % 60)));
|
|
return 1;
|
|
}
|
|
int tapi_min_now(lua_State* L) {
|
|
struct timeval tv;
|
|
|
|
gettimeofday(&tv, NULL);
|
|
lua_pushnumber(L, ((double)tv.tv_usec)/60000000.0d+((double)(tv.tv_sec % (60 * 60)))/60.0d);
|
|
|
|
return 1;
|
|
}
|
|
int tapi_unix_struct(lua_State* L) {
|
|
struct timeval tv;
|
|
|
|
gettimeofday(&tv, NULL);
|
|
|
|
lua_createtable(L, 0, 2);
|
|
|
|
lua_pushstring(L, "sec");
|
|
lua_pushinteger(L, tv.tv_sec);
|
|
lua_settable(L, -3);
|
|
|
|
lua_pushstring(L, "usec");
|
|
lua_pushinteger(L, tv.tv_usec);
|
|
lua_settable(L, -3);
|
|
|
|
return 1;
|
|
}
|
|
int tapi_usleep(lua_State* L) {
|
|
lua_pushinteger(L, usleep((useconds_t)lua_tonumber(L, 1)));
|
|
return 1;
|
|
}
|
|
|
|
int luaopen_tapi(lua_State* L) {
|
|
lua_createtable(L, 0, 3);
|
|
|
|
lua_pushstring(L, "unix");
|
|
lua_pushcfunction(L, tapi_unix);
|
|
lua_settable(L, -3);
|
|
|
|
lua_pushstring(L, "unix_us");
|
|
lua_pushcfunction(L, tapi_unix_us);
|
|
lua_settable(L, -3);
|
|
|
|
lua_pushstring(L, "ms_now");
|
|
lua_pushcfunction(L, tapi_ms_now);
|
|
lua_settable(L, -3);
|
|
|
|
lua_pushstring(L, "sec_now");
|
|
lua_pushcfunction(L, tapi_sec_now);
|
|
lua_settable(L, -3);
|
|
|
|
lua_pushstring(L, "min_now");
|
|
lua_pushcfunction(L, tapi_min_now);
|
|
lua_settable(L, -3);
|
|
|
|
lua_pushstring(L, "unix_struct");
|
|
lua_pushcfunction(L, tapi_unix_struct);
|
|
lua_settable(L, -3);
|
|
|
|
lua_pushstring(L, "usleep");
|
|
lua_pushcfunction(L, tapi_usleep);
|
|
lua_settable(L, -3);
|
|
return 1;
|
|
}
|