mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 20:23:06 +00:00
add skynet_now() for 64bit time
This commit is contained in:
@@ -45,10 +45,9 @@ struct timer {
|
||||
struct link_list t[4][TIME_LEVEL];
|
||||
struct spinlock lock;
|
||||
uint32_t time;
|
||||
uint32_t current;
|
||||
uint32_t starttime;
|
||||
uint64_t current;
|
||||
uint64_t current_point;
|
||||
uint64_t origin_point;
|
||||
};
|
||||
|
||||
static struct timer * TI = NULL;
|
||||
@@ -277,13 +276,7 @@ skynet_updatetime(void) {
|
||||
} else if (cp != TI->current_point) {
|
||||
uint32_t diff = (uint32_t)(cp - TI->current_point);
|
||||
TI->current_point = cp;
|
||||
|
||||
uint32_t oc = TI->current;
|
||||
TI->current += diff;
|
||||
if (TI->current < oc) {
|
||||
// when cs > 0xffffffff(about 497 days), time rewind
|
||||
TI->starttime += 0xffffffff / 100;
|
||||
}
|
||||
int i;
|
||||
for (i=0;i<diff;i++) {
|
||||
timer_update(TI);
|
||||
@@ -292,21 +285,21 @@ skynet_updatetime(void) {
|
||||
}
|
||||
|
||||
uint32_t
|
||||
skynet_gettime_fixsec(void) {
|
||||
skynet_starttime(void) {
|
||||
return TI->starttime;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
skynet_gettime(void) {
|
||||
uint64_t
|
||||
skynet_now(void) {
|
||||
return TI->current;
|
||||
}
|
||||
|
||||
void
|
||||
skynet_timer_init(void) {
|
||||
TI = timer_create_timer();
|
||||
systime(&TI->starttime, &TI->current);
|
||||
uint64_t point = gettime();
|
||||
TI->current_point = point;
|
||||
TI->origin_point = point;
|
||||
uint32_t current = 0;
|
||||
systime(&TI->starttime, ¤t);
|
||||
TI->current = current;
|
||||
TI->current_point = gettime();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user