Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
Questdb
提交
f7d7a10a
Q
Questdb
项目概览
jobily
/
Questdb
11 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
Questdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f7d7a10a
编写于
5月 10, 2019
作者:
V
Vlad Ilyushchenko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Misc: Os.currentTimeNanos() Windows implementation
上级
1112a83e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
49 addition
and
0 deletion
+49
-0
core/src/main/c/windows/os.c
core/src/main/c/windows/os.c
+46
-0
core/src/main/resources/binaries/windows/libquestdb.dll
core/src/main/resources/binaries/windows/libquestdb.dll
+0
-0
core/src/test/java/com/questdb/std/OsTest.java
core/src/test/java/com/questdb/std/OsTest.java
+3
-0
未找到文件。
core/src/main/c/windows/os.c
浏览文件 @
f7d7a10a
...
...
@@ -29,6 +29,7 @@
#include <sspi.h>
#include <issper16.h>
#include <rpc.h>
#include <sys/timeb.h>
#include "../share/os.h"
#include "errno.h"
#include "timer.h"
...
...
@@ -132,6 +133,51 @@ JNIEXPORT jint JNICALL Java_com_questdb_std_Os_setCurrentThreadAffinity0
}
#define exp7 10000000LL //1E+7 //C-file part
#define exp9 1000000000LL //1E+9
#define w2ux 116444736000000000LL //1.jan1601 to 1.jan1970
void
unix_time
(
struct
timespec
*
spec
)
{
__int64
wintime
;
GetSystemTimeAsFileTime
((
FILETIME
*
)
&
wintime
);
wintime
-=
w2ux
;
spec
->
tv_sec
=
wintime
/
exp7
;
spec
->
tv_nsec
=
wintime
%
exp7
*
100
;
}
int
clock_gettime
(
struct
timespec
*
spec
)
{
static
struct
timespec
startspec
;
static
double
ticks2nano
;
static
__int64
startticks
,
tps
=
0
;
__int64
tmp
,
curticks
;
QueryPerformanceFrequency
((
LARGE_INTEGER
*
)
&
tmp
);
if
(
tps
!=
tmp
)
{
tps
=
tmp
;
//init ~~ONCE
// possibly change freq ?
QueryPerformanceCounter
((
LARGE_INTEGER
*
)
&
startticks
);
unix_time
(
&
startspec
);
ticks2nano
=
(
double
)
exp9
/
tps
;
}
QueryPerformanceCounter
((
LARGE_INTEGER
*
)
&
curticks
);
curticks
-=
startticks
;
spec
->
tv_sec
=
startspec
.
tv_sec
+
(
curticks
/
tps
);
spec
->
tv_nsec
=
(
long
)
(
startspec
.
tv_nsec
+
(
double
)
(
curticks
%
tps
)
*
ticks2nano
);
if
(
spec
->
tv_nsec
>=
exp9
)
{
spec
->
tv_sec
++
;
spec
->
tv_nsec
-=
exp9
;
}
return
0
;
}
JNIEXPORT
jlong
JNICALL
Java_com_questdb_std_Os_currentTimeNanos
(
JNIEnv
*
e
,
jclass
cl
)
{
struct
timespec
spec
;
clock_gettime
(
&
spec
);
return
spec
.
tv_sec
*
1000000000
+
spec
.
tv_nsec
;
}
JNIEXPORT
void
JNICALL
Java_com_questdb_std_Os_freeKrbToken
(
JNIEnv
*
e
,
jclass
cl
,
jlong
ptr
)
{
...
...
core/src/main/resources/binaries/windows/libquestdb.dll
浏览文件 @
f7d7a10a
无法预览此类型文件
core/src/test/java/com/questdb/std/OsTest.java
浏览文件 @
f7d7a10a
...
...
@@ -61,7 +61,10 @@ public class OsTest {
public
void
testCurrentTimeNanos
()
{
long
reference
=
System
.
currentTimeMillis
();
long
actual
=
Os
.
currentTimeNanos
();
Assert
.
assertTrue
(
actual
>
0
);
long
delta
=
actual
/
1_000_000
-
reference
;
Assert
.
assertTrue
(
delta
<
200
);
System
.
out
.
println
(
reference
);
System
.
out
.
println
(
actual
);
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录