]> Zhao Yanbai Git Server - minix.git/commitdiff
Move clock_time into libsys 49/2749/3
authorDavid van Moolenbroek <david@minix3.org>
Sun, 24 Aug 2014 10:00:06 +0000 (10:00 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Thu, 18 Sep 2014 12:46:26 +0000 (12:46 +0000)
Change-Id: Ibc5034617e6f6581de7c4a166ca075b3c357fa82

26 files changed:
lib/libpuffs/link.c
lib/libpuffs/open.c
lib/libpuffs/protect.c
lib/libpuffs/proto.h
lib/libpuffs/read.c
lib/libpuffs/time.c
lib/libpuffs/utility.c
minix/fs/ext2/inode.c
minix/fs/ext2/misc.c
minix/fs/ext2/mount.c
minix/fs/ext2/proto.h
minix/fs/ext2/utility.c
minix/fs/mfs/inode.c
minix/fs/mfs/proto.h
minix/fs/mfs/utility.c
minix/fs/pfs/inode.c
minix/fs/pfs/proto.h
minix/fs/pfs/utility.c
minix/include/minix/sysutil.h
minix/lib/libsys/Makefile
minix/lib/libsys/clock_time.c [new file with mode: 0644]
minix/lib/libvtreefs/stadir.c
minix/servers/pm/time.c
minix/servers/vfs/proto.h
minix/servers/vfs/time.c
minix/servers/vfs/utility.c

index a3bb7991d1e7df410fc875607774f8d238bbafa7..936d2023c0fa1f80d405eafd6f8cccd1060ddaa6 100644 (file)
@@ -123,7 +123,7 @@ int fs_link(ino_t dir_nr, char *name, ino_t ino_nr)
   
   if (r != OK) return(EINVAL);
 
-  cur_time = clock_timespec();
+  (void)clock_time(&cur_time);
   update_timens(pn, CTIME, &cur_time);
   update_timens(pn_dir, MTIME | CTIME, &cur_time);
 
@@ -308,7 +308,7 @@ int fs_rename(ino_t old_dir_nr, char *old_name, ino_t new_dir_nr,
        }
   }
 
-  cur_time = clock_timespec();
+  (void)clock_time(&cur_time);
   update_timens(old_dirp, MTIME | CTIME, &cur_time);
   update_timens(new_dirp, MTIME | CTIME, &cur_time);
 
@@ -366,7 +366,7 @@ int fs_unlink(ino_t dir_nr, char *name, int call)
   }
 
   if (pn->pn_va.va_nlink != 0) {
-       cur_time = clock_timespec();
+       (void)clock_time(&cur_time);
        update_timens(pn, CTIME, &cur_time);
        update_timens(pn_dir, MTIME | CTIME, &cur_time);
   }
index 855bc27a60a03d34613a383b7d1195ec791958fa..c551a7e5e5596c15baeecc205bf1ec59e0bf71db 100644 (file)
@@ -43,7 +43,7 @@ int fs_create(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid,
   memset(&pni, 0, sizeof(pni));
   pni.pni_cookie = (void** )&pn;
 
-  cur_time = clock_timespec();
+  (void)clock_time(&cur_time);
   
   memset(&va, 0, sizeof(va));
   va.va_type = VREG;
@@ -127,7 +127,7 @@ int fs_mknod(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid,
   memset(&pni, 0, sizeof(pni));
   pni.pni_cookie = (void** )&pn;
 
-  cur_time = clock_timespec();
+  (void)clock_time(&cur_time);
 
   memset(&va, 0, sizeof(va));
   va.va_type = VDIR;
@@ -196,7 +196,7 @@ int fs_mkdir(ino_t dir_nr, char *name, mode_t mode, uid_t uid, gid_t gid)
   if ((pn_dir = puffs_pn_nodewalk(global_pu, 0, &dir_nr)) == NULL)
        return(ENOENT);
   
-  cur_time = clock_timespec();
+  (void)clock_time(&cur_time);
 
   memset(&pni, 0, sizeof(pni));
   pni.pni_cookie = (void** )&pn;
@@ -254,6 +254,7 @@ int fs_slink(ino_t dir_nr, char *name, uid_t uid, gid_t gid,
   PUFFS_MAKECRED(pcr, &global_kcred);
   struct puffs_cn pcn = {&pkcnp, (struct puffs_cred *) __UNCONST(pcr), {0,0,0}};
   struct vattr va;
+  struct timespec cur_time;
 
   /* Copy the link name's last component */
   pcn.pcn_namelen = strlen(name);
@@ -287,12 +288,14 @@ int fs_slink(ino_t dir_nr, char *name, uid_t uid, gid_t gid,
   memset(&pni, 0, sizeof(pni));
   pni.pni_cookie = (void** )&pn;
 
+  (void)clock_time(&cur_time);
+
   memset(&va, 0, sizeof(va));
   va.va_type = VLNK;
   va.va_mode = (I_SYMBOLIC_LINK | RWX_MODES);
   va.va_uid = uid;
   va.va_gid = gid;
-  va.va_atime = va.va_mtime = va.va_ctime = clock_timespec();
+  va.va_atime = va.va_mtime = va.va_ctime = cur_time;
 
   if (buildpath) {
        r = puffs_path_pcnbuild(global_pu, &pcn, pn_dir);
index 818180692cb27763a738061124f0c16ab2cd6af0..b612552fc59a616545627dd3576921df7fd9cbb8 100644 (file)
@@ -27,7 +27,7 @@ int fs_chmod(ino_t ino_nr, mode_t *mode)
   puffs_vattr_null(&va);
   /* Clear setgid bit if file is not in caller's grp */
   va.va_mode = (pn->pn_va.va_mode & ~ALL_MODES) | (*mode & ALL_MODES);
-  va.va_ctime = clock_timespec();
+  (void)clock_time(&va.va_ctime);
 
   if (global_pu->pu_ops.puffs_node_setattr(global_pu, pn, &va, pcr) != 0)
        return(EINVAL);
@@ -55,7 +55,7 @@ int fs_chown(ino_t ino_nr, uid_t uid, gid_t gid, mode_t *mode)
   va.va_uid = uid;
   va.va_gid = gid;
   va.va_mode = pn->pn_va.va_mode & ~(I_SET_UID_BIT | I_SET_GID_BIT);
-  va.va_ctime = clock_timespec();
+  (void)clock_time(&va.va_ctime);
 
   if (global_pu->pu_ops.puffs_node_setattr(global_pu, pn, &va, pcr) != 0)
        return(EINVAL);
index e67b7b4a4befe4aaf03359fa014410ca7538a235..35a14826d829dbd742b1f6b43cb093054adc3a7a 100644 (file)
@@ -3,7 +3,6 @@
 
 struct puffs_usermount;
 struct puffs_node;
-struct timespec;
 
 /* Function prototypes. */
 
@@ -62,7 +61,6 @@ int fs_statvfs(struct statvfs *st);
 int fs_utime(ino_t ino_nr, struct timespec *atime, struct timespec *mtime);
 
 /* utility.c */
-struct timespec clock_timespec(void);
 int update_timens(struct puffs_node *pn, int fl, struct timespec *);
 void lpuffs_debug(const char *format, ...)
        __attribute__((__format__(__printf__, 1, 2)));
index f7484033d680910b9bd7e5f2ea22e14690e648e2..a528a708bc8702a72e4735a40b5fb06f6f97d4a4 100644 (file)
@@ -73,6 +73,7 @@ ssize_t fs_write(ino_t ino_nr, struct fsdriver_data *data, size_t bytes,
   size_t bytes_left;
   struct puffs_node *pn;
   struct vattr va;
+  struct timespec cur_time;
   PUFFS_MAKECRED(pcr, &global_kcred);
 
   if ((pn = puffs_pn_nodewalk(global_pu, 0, &ino_nr)) == NULL) {
@@ -88,10 +89,12 @@ ssize_t fs_write(ino_t ino_nr, struct fsdriver_data *data, size_t bytes,
   if (global_pu->pu_ops.puffs_node_setattr == NULL)
        return(EINVAL);
 
+  (void)clock_time(&cur_time);
+
   puffs_vattr_null(&va);
   if ((u_quad_t)(pos + bytes_left) > pn->pn_va.va_size)
        va.va_size = bytes_left + pos;
-  va.va_ctime = va.va_mtime = clock_timespec();
+  va.va_ctime = va.va_mtime = cur_time;
   va.va_atime = pn->pn_va.va_atime;
 
   r = global_pu->pu_ops.puffs_node_setattr(global_pu, pn, &va, pcr);
index bc57ab07a971c76262e40a6a5983ebfcec841a0e..4edcca59fc4d5ab40c46d9ad86341ce29d30b727 100644 (file)
@@ -22,11 +22,10 @@ int fs_utime(ino_t ino_nr, struct timespec *atime, struct timespec *mtime)
   if( (pn = puffs_pn_nodewalk(global_pu, 0, &ino_nr)) == NULL)
         return(EINVAL);
 
-  /* FIXME: shouldn't this check the special UTIME_ values? */
   puffs_vattr_null(&va);
   va.va_atime = *atime;
   va.va_mtime = *mtime;
-  va.va_ctime = clock_timespec();
+  (void)clock_time(&va.va_ctime);
 
   if (global_pu->pu_ops.puffs_node_setattr(global_pu, pn, &va, pcr) != 0)
        return(EINVAL);
index e4607344be50e15cf6e5966746c69ac98d1489e1..bbd5123e2e3b43a51e4c9a30155325a8922b72b8 100644 (file)
 #include "puffs_priv.h"
 
 
-/*===========================================================================*
- *                             clock_timespec                               *
- *===========================================================================*/
-struct timespec clock_timespec(void)
-{
-/* This routine returns the time in seconds since 1.1.1970.  MINIX is an
- * astrophysically naive system that assumes the earth rotates at a constant
- * rate and that such things as leap seconds do not exist.
- */
-  static long system_hz = 0;
-
-  register int k;
-  struct timespec tv;
-  clock_t uptime;
-  clock_t realtime;
-  time_t boottime;
-
-  if (system_hz == 0) system_hz = sys_hz();
-  if ((k=getuptime(&uptime, &realtime, &boottime)) != OK)
-       panic("clock_timespec: getuptime failed: %d", k);
-
-  tv.tv_sec = (time_t) (boottime + (realtime/system_hz));
-  /* We do not want to overflow, and system_hz can be as high as 50kHz */
-  assert(system_hz < LONG_MAX/40000);
-  tv.tv_nsec = (realtime%system_hz) * 40000 / system_hz * 25000;
-  return tv;
-}
-
-
 /*===========================================================================*
  *                             update_timens                                *
  *===========================================================================*/
@@ -56,7 +27,10 @@ int update_timens(struct puffs_node *pn, int flags, struct timespec *t)
   if (global_pu->pu_ops.puffs_node_setattr == NULL)
        return EINVAL;
 
-  new_time = t != NULL ? *t : clock_timespec();
+  if (t != NULL)
+       new_time = *t;
+  else
+       (void)clock_time(&new_time);
   
   puffs_vattr_null(&va);
   /* librefuse modifies atime and mtime together,
index 945363426fa5a5e2b5a9bbac64974f3451162316..6396bb00672d61586ea0a550a04beeceea2b2e0f 100644 (file)
@@ -289,7 +289,7 @@ void update_times(
   if (sp->s_rd_only)
        return;             /* no updates for read-only file systems */
 
-  cur_time = clock_time();
+  cur_time = clock_time(NULL);
   if (rip->i_update & ATIME)
        rip->i_atime = cur_time;
   if (rip->i_update & CTIME)
index 2405ad3386194686ee7156f3961274d5b258114a..c3eb6718f6bc2f73b1e2570087493606afb7599d 100644 (file)
@@ -33,7 +33,7 @@ int fs_sync()
   lmfs_flushall();
 
   if (superblock->s_dev != NO_DEV) {
-       superblock->s_wtime = clock_time();
+       superblock->s_wtime = clock_time(NULL);
        write_super(superblock);
   }
 
index 3dca64bd97fac1d5a8c9b943a084490463a32dec..24f6a59846a9f4ae95c0bb6f9691a17b1af6dd89 100644 (file)
@@ -149,7 +149,7 @@ int fs_readsuper()
   if (!readonly) {
        superblock->s_state = EXT2_ERROR_FS;
        superblock->s_mnt_count++;
-       superblock->s_mtime = clock_time();
+       superblock->s_mtime = clock_time(NULL);
        write_super(superblock); /* Commit info, we just set above */
   }
 
@@ -234,7 +234,7 @@ int fs_unmount()
   put_inode(root_ip);
 
   if (!superblock->s_rd_only) {
-       superblock->s_wtime = clock_time();
+       superblock->s_wtime = clock_time(NULL);
        superblock->s_state = EXT2_VALID_FS;
        write_super(superblock); /* Commit info, we just set above */
   }
index f7f890d5238424dcab34ac45ebe5875eeae46b86..868d8a9fe6acd32cd684df595d6943226080ccb4 100644 (file)
@@ -95,7 +95,6 @@ struct group_desc* get_group_desc(unsigned int bnum);
 int fs_utime(void);
 
 /* utility.c */
-time_t clock_time(void);
 unsigned conv2(int norm, int w);
 long conv4(int norm, long x);
 void mfs_nul_f(const char *file, int line, const char *str, unsigned int len,
index 915d14483847b4708c51836efaae97d5d82f220c..db1ba15807530ca18da0e739bfcdb58a73a21b71 100644 (file)
@@ -51,28 +51,6 @@ long x;                              /* 32-bit long to be byte swapped */
 }
 
 
-/*===========================================================================*
- *                             clock_time                                   *
- *===========================================================================*/
-time_t clock_time()
-{
-/* This routine returns the time in seconds since 1.1.1970.  MINIX is an
- * astrophysically naive system that assumes the earth rotates at a constant
- * rate and that such things as leap seconds do not exist.
- */
-
-  register int k;
-  clock_t uptime;
-  clock_t realtime;
-  time_t boottime;
-
-  if ( (k=getuptime(&uptime, &realtime, &boottime)) != OK)
-               panic("clock_time: getuptme2 failed: %d", k);
-
-  return( (time_t) (boottime + (realtime/sys_hz())));
-}
-
-
 /*===========================================================================*
  *                             mfs_min                                      *
  *===========================================================================*/
index 3cabfe749d8e7fae40a8afc01b534c1b3c526864..95a05e535a77606ddd4d28aa985b360670c83f75 100644 (file)
@@ -369,7 +369,7 @@ register struct inode *rip; /* pointer to inode to be read/written */
   sp = rip->i_sp;              /* get pointer to super block. */
   if (sp->s_rd_only) return;   /* no updates for read-only file systems */
 
-  cur_time = clock_time();
+  cur_time = clock_time(NULL);
   if (rip->i_update & ATIME) rip->i_atime = cur_time;
   if (rip->i_update & CTIME) rip->i_ctime = cur_time;
   if (rip->i_update & MTIME) rip->i_mtime = cur_time;
index 6d9557692f999adeced3e884d8af9df6c587380b..3b16c308856ae8eafe4f8d486a816a07af9c4797 100644 (file)
@@ -98,7 +98,6 @@ bit_t count_free_bits(struct super_block *sp, int map);
 int fs_utime(void);
 
 /* utility.c */
-time_t clock_time(void);
 unsigned conv2(int norm, int w);
 long conv4(int norm, long x);
 void mfs_nul_f(char *file, int line, char *str, unsigned int len,
index 8a521f7f80c73d7a8fd6b28aaa0ce3e4b0258f0d..31b68f9890063898415bd461464eb3f4e51f0000 100644 (file)
@@ -47,28 +47,6 @@ long x;                              /* 32-bit long to be byte swapped */
 }
 
 
-/*===========================================================================*
- *                             clock_time                                   *
- *===========================================================================*/
-time_t clock_time()
-{
-/* This routine returns the time in seconds since 1.1.1970.  MINIX is an
- * astrophysically naive system that assumes the earth rotates at a constant
- * rate and that such things as leap seconds do not exist.
- */
-
-  register int k;
-  clock_t uptime;
-  clock_t realtime;
-  time_t boottime;
-
-  if ( (k=getuptime(&uptime, &realtime, &boottime)) != OK)
-               panic("clock_time: getuptme2 failed: %d", k);
-  
-  return( (time_t) (boottime + (realtime/sys_hz())));
-}
-
-
 /*===========================================================================*
  *                             mfs_min                                      *
  *===========================================================================*/
index e988cd8dc2c0120a43d1ed783e8718ae4f154e82..442f824dc5a115a0cae3b684b58e9ee359f780f3 100644 (file)
@@ -329,7 +329,7 @@ struct inode *rip;  /* pointer to inode to be read/written */
 
   time_t cur_time;
 
-  cur_time = clock_time();
+  cur_time = clock_time(NULL);
   if (rip->i_update & ATIME) rip->i_atime = cur_time;
   if (rip->i_update & CTIME) rip->i_ctime = cur_time;
   if (rip->i_update & MTIME) rip->i_mtime = cur_time;
index d19151f0bcce91bd475c6cd46f7a076258fa2609..6a5bc90d5298568b7ea9741b0646758bad5c47c5 100644 (file)
@@ -47,7 +47,6 @@ int fs_newnode(message *fs_m_in, message *fs_m_out);
 int fs_readwrite(message *fs_m_in, message *fs_m_out);
 
 /* utility.c */
-time_t clock_time(void);
 int no_sys(message *pfs_m_in, message *pfs_m_out);
 
 /* stadir.c */
index 4109d83d0a6f0cbde42a4f21d0f08d7085a1cded..468f46d9e4594583260ee963de638b5327fb490d 100644 (file)
@@ -10,25 +10,3 @@ int no_sys(message *pfs_m_in, message *pfs_m_out)
   printf("no_sys: invalid call 0x%x to pfs\n", pfs_m_in->m_type);
   return(EINVAL);
 }
-
-
-/*===========================================================================*
- *                             clock_time                                   *
- *===========================================================================*/
-time_t clock_time()
-{
-/* This routine returns the time in seconds since 1.1.1970.  MINIX is an
- * astrophysically naive system that assumes the earth rotates at a constant
- * rate and that such things as leap seconds do not exist.
- */
-
-  int r;
-  clock_t uptime;      /* Uptime in ticks */
-  clock_t realtime;
-  time_t boottime;
-
-  if ((r = getuptime(&uptime, &realtime, &boottime)) != OK)
-               panic("clock_time: getuptme2 failed: %d", r);
-
-  return( (time_t) (boottime + (realtime/sys_hz())));
-}
index f0741382ddb2d19163f344c06d43d2ccc8a4c142..81a3c44923c115df9ecc70cbb383f7e9d7e52163 100644 (file)
@@ -46,6 +46,8 @@ int env_parse(const char *env, const char *fmt, int field,
 #define fkey_events(fkeys, sfkeys) fkey_ctl(FKEY_EVENTS, (fkeys), (sfkeys))
 int fkey_ctl(int req, int *fkeys, int *sfkeys);
 
+struct timespec;
+
 int printf(const char *fmt, ...);
 void kputc(int c);
 __dead void panic(const char *fmt, ...)
@@ -64,6 +66,7 @@ u32_t tsc_64_to_micros(u64_t tsc);
 u32_t tsc_to_micros(u32_t low, u32_t high);
 u32_t tsc_get_khz(void);
 u32_t micros_to_ticks(u32_t micros);
+time_t clock_time(struct timespec *tv);
 #if defined(__arm__)
 void read_frclock(u32_t *frclk);
 u32_t delta_frclock(u32_t base, u32_t cur);
index e926f69069c45ffe8b5e018388ed4c5b62cb4504..ea3bb975257543d72bb9a3de346021a8fcfe9f77 100644 (file)
@@ -17,6 +17,7 @@ SRCS+=  \
        assert.c \
        asynsend.c \
        checkperms.c \
+       clock_time.c \
        copyfd.c \
        ds.c    \
        env_get_prm.c \
diff --git a/minix/lib/libsys/clock_time.c b/minix/lib/libsys/clock_time.c
new file mode 100644 (file)
index 0000000..2bea82f
--- /dev/null
@@ -0,0 +1,42 @@
+
+#include "sysutil.h"
+#include <sys/time.h>
+
+/*
+ * This routine returns the time in seconds since 1.1.1970.  MINIX is an
+ * astrophysically naive system that assumes the earth rotates at a constant
+ * rate and that such things as leap seconds do not exist.  If a non-NULL
+ * pointer to a timespec structure is given, that structure is filled with
+ * the current time in subsecond precision.
+ */
+time_t
+clock_time(struct timespec *tv)
+{
+       uint32_t system_hz;
+       clock_t uptime, realtime;
+       time_t boottime, sec;
+       int r;
+
+       if ((r = getuptime(&uptime, &realtime, &boottime)) != OK)
+               panic("clock_time: getuptime failed: %d", r);
+
+       system_hz = sys_hz();   /* sys_hz() caches its return value */
+
+       sec = boottime + realtime / system_hz;
+
+       if (tv != NULL) {
+               tv->tv_sec = sec;
+
+               /*
+                * We do not want to overflow, and system_hz can be as high as
+                * 50kHz.
+                */
+               if (system_hz < LONG_MAX / 40000)
+                       tv->tv_nsec = (realtime % system_hz) * 40000 /
+                           system_hz * 25000;
+               else
+                       tv->tv_nsec = 0;        /* bad, but what's better? */
+       }
+
+       return sec;
+}
index f29e3e6d17534bab1452b383f4529c848b7568e0..6bb7a0a99970e9a38d0632b82573ac4db6a00b61 100644 (file)
@@ -37,7 +37,7 @@ int fs_stat(ino_t ino_nr, struct stat *buf)
        }
 
        /* Take the current time as file time for all files. */
-       cur_time = time(NULL);
+       cur_time = clock_time(NULL);
        buf->st_atime = cur_time;
        buf->st_mtime = cur_time;
        buf->st_ctime = cur_time;
index c002ba671f608ea80b04e90608339491638111ea..d2f16908186010349849a64cd4bcb65d199f96de 100644 (file)
@@ -89,21 +89,13 @@ int do_settime()
  *===========================================================================*/
 int do_time()
 {
-/* Perform the time(tp) system call. This returns the time in seconds since 
- * 1.1.1970.  MINIX is an astrophysically naive system that assumes the earth 
- * rotates at a constant rate and that such things as leap seconds do not 
- * exist.
- */
-  clock_t ticks, realtime;
-  time_t boottime;
-  int s;
+/* Perform the time(tp) system call. */
+  struct timespec tv;
 
-  if ( (s=getuptime(&ticks, &realtime, &boottime)) != OK)
-       panic("do_time couldn't get uptime: %d", s);
+  (void)clock_time(&tv);
 
-  mp->mp_reply.m_pm_lc_time.sec = boottime + (realtime / system_hz);
-  mp->mp_reply.m_pm_lc_time.nsec =
-       (uint32_t) ((realtime % system_hz) * 1000000000ULL / system_hz);
+  mp->mp_reply.m_pm_lc_time.sec = tv.tv_sec;
+  mp->mp_reply.m_pm_lc_time.nsec = tv.tv_nsec;
   return(OK);
 }
 
index 051a807b6b31d50fe9302c82de7355cc3ae2b28c..62f62250842c217926dba46ea8ccae33a167f6bb 100644 (file)
@@ -275,7 +275,6 @@ int tll_unlock(tll_t *tllp);
 void tll_upgrade(tll_t *tllp);
 
 /* utility.c */
-struct timespec clock_timespec(void);
 int copy_path(char *dest, size_t size);
 int fetch_name(vir_bytes path, size_t len, char *dest);
 int isokendpt_f(const char *f, int l, endpoint_t e, int *p, int ft);
index 1f890d2135a616987f674393f941555f102418eb..9017bbd73960b18cb3e7789431597cd41978fdd4 100644 (file)
@@ -98,7 +98,7 @@ int do_utimens(void)
         || actim.tv_nsec == UTIME_OMIT
         || modtim.tv_nsec == UTIME_NOW
         || modtim.tv_nsec == UTIME_OMIT) {
-               now = clock_timespec();
+               (void)clock_time(&now);
        }
 
        /* Build the request */
index ce531096f339c6c36a8900b366db91730b0b4a04..f68bf38be7b016fe3b848d3485999d0f87289549 100644 (file)
@@ -1,7 +1,6 @@
 /* This file contains a few general purpose utility routines.
  *
  * The entry points into this file are
- *   clock_timespec: ask the clock task for the real time
  *   copy_path:          copy a path name from a path request from userland
  *   fetch_name:  go get a path name from user space
  *   panic:       something awful has occurred;  MINIX cannot continue
@@ -123,34 +122,6 @@ int isokendpt_f(const char *file, int line, endpoint_t endpoint, int *proc,
   return(failed ? EDEADEPT : OK);
 }
 
-
-/*===========================================================================*
- *                             clock_timespec                               *
- *===========================================================================*/
-struct timespec clock_timespec(void)
-{
-/* This routine returns the time in seconds since 1.1.1970.  MINIX is an
- * astrophysically naive system that assumes the earth rotates at a constant
- * rate and that such things as leap seconds do not exist.
- */
-
-  register int r;
-  struct timespec tv;
-  clock_t uptime;
-  clock_t realtime;
-  time_t boottime;
-
-  r = getuptime(&uptime, &realtime, &boottime);
-  if (r != OK)
-       panic("clock_timespec err: %d", r);
-
-  tv.tv_sec = boottime + (realtime/system_hz);
-  /* We do not want to overflow, and system_hz can be as high as 50kHz */
-  assert(system_hz < LONG_MAX/40000);
-  tv.tv_nsec = (realtime%system_hz) * 40000 / system_hz * 25000;
-  return tv;
-}
-
 /*===========================================================================*
  *                              in_group                                     *
  *===========================================================================*/