📄 sys.c
字号:
/* sys.c */#include "../ptpd.h"void displayStats(PtpClock *ptpClock){ printf("\r"); printf("state = "); switch(ptpClock->port_state) { case PTP_INITIALIZING: printf("init"); break; case PTP_FAULTY: printf("flt "); break; case PTP_LISTENING: printf("lstn"); break; case PTP_PASSIVE: printf("pass"); break; case PTP_UNCALIBRATED: printf("uncl"); break; case PTP_SLAVE: printf("slv "); break; case PTP_PRE_MASTER: printf("pmst"); break; case PTP_MASTER: printf("mst "); break; case PTP_DISABLED: printf("dsbl"); break; default: printf("?"); break; } if(ptpClock->port_state != PTP_SLAVE) { printf("\r"); fflush(stdout); return; } printf( " Dow =%c%lu.%09ld" " ofm =%c%lu.%09ld", ptpClock->one_way_delay.nanoseconds < 0 ? '-' : ' ', ptpClock->one_way_delay.seconds, labs(ptpClock->one_way_delay.nanoseconds), ptpClock->offset_from_master.nanoseconds < 0 ? '-' : ' ', ptpClock->offset_from_master.seconds, labs(ptpClock->offset_from_master.nanoseconds)); printf( " drift = %ld" " var = %d", ptpClock->observed_drift, ptpClock->observed_variance); printf("\r"); fflush(stdout);}Boolean nanoSleep(TimeRepresentation *t){ struct timespec ts, tr; ts.tv_sec = t->seconds; ts.tv_nsec = t->nanoseconds; if(nanosleep(&ts, &tr) < 0) { t->seconds = tr.tv_sec; t->nanoseconds = tr.tv_nsec; return FALSE; } return TRUE;}void getTime(UInteger32 *seconds, Integer32 *nanoseconds){ struct timeval t; gettimeofday(&t, 0); *seconds = t.tv_sec; *nanoseconds = t.tv_usec*1e3;}void setTime(UInteger32 seconds, Integer32 nanoseconds){ struct timeval t; t.tv_sec = seconds; t.tv_usec = nanoseconds/1e3; settimeofday(&t, 0); NOTIFY("resetting system clock to %lus %ldns\n", seconds, nanoseconds);}UInteger16 getRand(UInteger32 *seed){ return rand_r((unsigned int*)seed);}Boolean adjFreq(Integer32 adj){ struct timex t; if(adj > ADJ_FREQ_MAX) adj = ADJ_FREQ_MAX; else if(adj < -ADJ_FREQ_MAX) adj = -ADJ_FREQ_MAX; t.modes = ADJ_FREQUENCY; t.freq = adj*((1<<16)/1000); return !adjtimex(&t);}void setTimeOk(void){ struct timex t; t.modes = ADJ_STATUS; t.status = TIME_OK; adjtimex(&t);}void leapSecond(Boolean up){ struct timex t; t.modes = ADJ_STATUS; t.status = up ? TIME_INS : TIME_DEL; adjtimex(&t); DBG("leapSecond: %s\n", up ? "up" : "down");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -