This is Unofficial EPICS BASE Doxygen Site
osiClockTime.c File Reference
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "epicsEvent.h"
#include "epicsExit.h"
#include "epicsMutex.h"
#include "epicsThread.h"
#include "errlog.h"
#include "epicsGeneralTime.h"
#include "generalTimeSup.h"
#include "iocsh.h"
#include "osiClockTime.h"
#include "taskwd.h"
+ Include dependency graph for osiClockTime.c:

Go to the source code of this file.

Macros

#define NSEC_PER_SEC   1000000000
 
#define ClockTimeSyncInterval_initial   1.0
 
#define ClockTimeSyncInterval_normal   60.0
 
#define UNINIT_ERROR   "available"
 

Functions

int ClockTime_Report (int level)
 

Macro Definition Documentation

#define ClockTimeSyncInterval_initial   1.0

Definition at line 25 of file osiClockTime.c.

#define ClockTimeSyncInterval_normal   60.0

Definition at line 26 of file osiClockTime.c.

#define NSEC_PER_SEC   1000000000

Definition at line 24 of file osiClockTime.c.

#define UNINIT_ERROR   "available"

Definition at line 234 of file osiClockTime.c.

Function Documentation

int ClockTime_Report ( int  level)

Definition at line 243 of file osiClockTime.c.

244 {
245  char timebuf[32];
246 
247  if (onceId == EPICS_THREAD_ONCE_INIT) {
248  puts("OS Clock driver not " UNINIT_ERROR);
249  }
250  else if (ClockTimePvt.synchronize == CLOCKTIME_SYNC) {
251  int synchronized, syncFromPriority;
253 
254  epicsMutexMustLock(ClockTimePvt.lock);
255  synchronized = ClockTimePvt.synchronized;
256  syncFromPriority = ClockTimePvt.syncFromPriority;
257  startTime = ClockTimePvt.startTime;
258  syncTime = ClockTimePvt.syncTime;
259  epicsMutexUnlock(ClockTimePvt.lock);
260 
261  if (synchronized) {
262  printf("OS Clock driver is synchronized to a priority=%d provider\n",
263  syncFromPriority);
264  if (level) {
265  epicsTimeToStrftime(timebuf, sizeof(timebuf),
266  "%Y-%m-%d %H:%M:%S.%06f", &startTime);
267  printf("Initial sync was at %s\n", timebuf);
268  epicsTimeToStrftime(timebuf, sizeof(timebuf),
269  "%Y-%m-%d %H:%M:%S.%06f", &syncTime);
270  printf("Last successful sync was at %s\n", timebuf);
271  }
272  printf("Syncronization interval = %.0f seconds\n",
273  ClockTimePvt.ClockTimeSyncInterval);
274  }
275  else
276  printf("OS Clock driver is *not* synchronized\n");
277  }
278  else {
279  epicsTimeToStrftime(timebuf, sizeof(timebuf),
280  "%Y-%m-%d %H:%M:%S.%06f", &ClockTimePvt.startTime);
281  printf("Program started at %s\n", timebuf);
282  printf("OS Clock synchronization thread not running.\n");
283  }
284  return 0;
285 }
epicsTimeStamp syncTime
Definition: osiClockTime.c:34
#define printf
Definition: epicsStdio.h:41
epicsTimeStamp startTime
Definition: osiClockTime.c:33
void epicsStdCall epicsMutexUnlock(epicsMutexId pmutexNode)
Release the semaphore.
Definition: epicsMutex.cpp:140
#define UNINIT_ERROR
Definition: osiClockTime.c:234
int syncFromPriority
Definition: osiClockTime.c:36
LIBCOM_API size_t epicsStdCall epicsTimeToStrftime(char *pBuff, size_t bufLength, const char *pFormat, const epicsTimeStamp *pTS)
Convert epicsTimeStamp to string. See epicsTime::strftime()
Definition: epicsTime.cpp:1120
#define EPICS_THREAD_ONCE_INIT
Definition: epicsThread.h:109
#define puts
Definition: epicsStdio.h:46
#define CLOCKTIME_SYNC
Definition: osiClockTime.h:12
EPICS time stamp, for use from C code.
Definition: epicsTime.h:33
#define epicsMutexMustLock(ID)
Claim a semaphore (see epicsMutexLock()).
Definition: epicsMutex.h:214

Variable Documentation

double ClockTimeSyncInterval

Definition at line 35 of file osiClockTime.c.

Definition at line 37 of file osiClockTime.c.

epicsEventId loopEvent

Definition at line 32 of file osiClockTime.c.

epicsTimeStamp startTime

Definition at line 33 of file osiClockTime.c.

int syncFromPriority

Definition at line 36 of file osiClockTime.c.

int synchronize

Definition at line 30 of file osiClockTime.c.

int synchronized

Definition at line 31 of file osiClockTime.c.

epicsTimeStamp syncTime

Definition at line 34 of file osiClockTime.c.