| Current File : //usr/share/src/uts/i86pc/sys/machclock.h |
/*
* Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
*/
#ifndef _SYS_MACHCLOCK_H
#define _SYS_MACHCLOCK_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* tod module name and operations
*/
struct tod_ops;
typedef struct tod_ops tod_ops_t;
/*
* TOD Ops.
* The only functions that _must_ be defined are the tod_get() and
* tod_set() functions. All others may be unused, and need to be
* checked for NULL before using.
*/
struct tod_ops {
timestruc_t (*tod_get)(tod_ops_t *);
hrtime_t (*tod_get_hires)(tod_ops_t *);
void (*tod_set)(tod_ops_t *, timestruc_t);
uint_t (*tod_set_watchdog_timer)(tod_ops_t *, int);
uint_t (*tod_clear_watchdog_timer)(tod_ops_t *);
void (*tod_set_wake_alarm)(tod_ops_t *, int);
void (*tod_clear_wake_alarm)(tod_ops_t *);
};
extern tod_ops_t *tod_ops;
extern char *tod_module_name;
#define TODOP_GET(top) ((top)->tod_get(top))
#define TODOP_GET_HIRES(top) ((top)->tod_get_hires(top))
#define TODOP_SET(top, ts) ((top)->tod_set(top, ts))
#define TODOP_SETWD(top, nsec) ((top)->tod_set_watchdog_timer(top, nsec))
#define TODOP_CLRWD(top) ((top)->tod_clear_watchdog_timer(top))
#define TODOP_SETWAKE(top, nsec) ((top)->tod_set_wake_alarm(top, nsec))
#define TODOP_CLRWAKE(top) ((top)->tod_clear_wake_alarm(top))
#ifdef __cplusplus
}
#endif
#endif /* _SYS_MACHCLOCK_H */