static diva_os_spin_lock_t dbg_adapter_lock;
 static int                 dbg_q_busy;
 static volatile dword      dbg_sequence;
-static dword               start_sec;
-static dword               start_usec;
 
 /*
   INTERFACE:
 
        dbg_base = base;
 
-       diva_os_get_time(&start_sec, &start_usec);
-
        *(dword *)base  = (dword)DBG_MAGIC; /* Store Magic */
        base   += sizeof(dword);
        length -= sizeof(dword);
 
 
 static wait_queue_head_t msgwaitq;
 static unsigned long opened;
-static struct timeval start_time;
 
 extern int mntfunc_init(int *, void **, unsigned long);
 extern void mntfunc_finit(void);
  */
 void diva_os_get_time(dword *sec, dword *usec)
 {
-       struct timeval tv;
-
-       do_gettimeofday(&tv);
-
-       if (tv.tv_sec > start_time.tv_sec) {
-               if (start_time.tv_usec > tv.tv_usec) {
-                       tv.tv_sec--;
-                       tv.tv_usec += 1000000;
-               }
-               *sec = (dword) (tv.tv_sec - start_time.tv_sec);
-               *usec = (dword) (tv.tv_usec - start_time.tv_usec);
-       } else if (tv.tv_sec == start_time.tv_sec) {
-               *sec = 0;
-               if (start_time.tv_usec < tv.tv_usec) {
-                       *usec = (dword) (tv.tv_usec - start_time.tv_usec);
-               } else {
-                       *usec = 0;
-               }
-       } else {
-               *sec = (dword) tv.tv_sec;
-               *usec = (dword) tv.tv_usec;
-       }
+       struct timespec64 time;
+
+       ktime_get_ts64(&time);
+
+       *sec = (dword) time.tv_sec;
+       *usec = (dword) (time.tv_nsec / NSEC_PER_USEC);
 }
 
 /*
        int ret = 0;
        void *buffer = NULL;
 
-       do_gettimeofday(&start_time);
        init_waitqueue_head(&msgwaitq);
 
        printk(KERN_INFO "%s\n", DRIVERNAME);