diff --git a/src/vppinfra/elog.h b/src/vppinfra/elog.h
index 05085b2..d50c9a6 100644
--- a/src/vppinfra/elog.h
+++ b/src/vppinfra/elog.h
@@ -525,12 +525,12 @@
 
 #ifdef CLIB_UNIX
 always_inline clib_error_t *
-elog_write_file (elog_main_t * em, char *unix_file, int flush_ring)
+elog_write_file (elog_main_t * em, char *clib_file, int flush_ring)
 {
   serialize_main_t m;
   clib_error_t *error;
 
-  error = serialize_open_unix_file (&m, unix_file);
+  error = serialize_open_clib_file (&m, clib_file);
   if (error)
     return error;
   error = serialize (&m, serialize_elog_main, em, flush_ring);
@@ -540,12 +540,12 @@
 }
 
 always_inline clib_error_t *
-elog_read_file (elog_main_t * em, char *unix_file)
+elog_read_file (elog_main_t * em, char *clib_file)
 {
   serialize_main_t m;
   clib_error_t *error;
 
-  error = unserialize_open_unix_file (&m, unix_file);
+  error = unserialize_open_clib_file (&m, clib_file);
   if (error)
     return error;
   error = unserialize (&m, unserialize_elog_main, em);
diff --git a/src/vppinfra/file.h b/src/vppinfra/file.h
index 69facea..6ebf512 100644
--- a/src/vppinfra/file.h
+++ b/src/vppinfra/file.h
@@ -68,7 +68,7 @@
   UNIX_FILE_UPDATE_ADD,
   UNIX_FILE_UPDATE_MODIFY,
   UNIX_FILE_UPDATE_DELETE,
-} unix_file_update_type_t;
+} clib_file_update_type_t;
 
 typedef struct
 {
@@ -76,7 +76,7 @@
   clib_file_t *file_pool;
 
   void (*file_update) (clib_file_t * file,
-		       unix_file_update_type_t update_type);
+		       clib_file_update_type_t update_type);
 
 } clib_file_main_t;
 
diff --git a/src/vppinfra/format.h b/src/vppinfra/format.h
index 5b7023a..3c4aec9 100644
--- a/src/vppinfra/format.h
+++ b/src/vppinfra/format.h
@@ -305,7 +305,7 @@
 /* Unix specific formats. */
 #ifdef CLIB_UNIX
 /* Setup input from Unix file. */
-void unformat_init_unix_file (unformat_input_t * input, int file_descriptor);
+void unformat_init_clib_file (unformat_input_t * input, int file_descriptor);
 
 /* Take input from Unix environment variable; returns
    1 if variable exists zero otherwise. */
diff --git a/src/vppinfra/serialize.c b/src/vppinfra/serialize.c
index 5d401a0..fe2146a 100644
--- a/src/vppinfra/serialize.c
+++ b/src/vppinfra/serialize.c
@@ -1147,7 +1147,7 @@
 #include <fcntl.h>
 
 static void
-unix_file_write (serialize_main_header_t * m, serialize_stream_t * s)
+clib_file_write (serialize_main_header_t * m, serialize_stream_t * s)
 {
   int fd, n;
 
@@ -1168,7 +1168,7 @@
 }
 
 static void
-unix_file_read (serialize_main_header_t * m, serialize_stream_t * s)
+clib_file_read (serialize_main_header_t * m, serialize_stream_t * s)
 {
   int fd, n;
 
@@ -1188,7 +1188,7 @@
 }
 
 static void
-serialize_open_unix_file_descriptor_helper (serialize_main_t * m, int fd,
+serialize_open_clib_file_descriptor_helper (serialize_main_t * m, int fd,
 					    uword is_read)
 {
   memset (m, 0, sizeof (m[0]));
@@ -1200,24 +1200,24 @@
       _vec_len (m->stream.buffer) = 0;
     }
 
-  m->header.data_function = is_read ? unix_file_read : unix_file_write;
+  m->header.data_function = is_read ? clib_file_read : clib_file_write;
   m->stream.data_function_opaque = fd;
 }
 
 void
-serialize_open_unix_file_descriptor (serialize_main_t * m, int fd)
+serialize_open_clib_file_descriptor (serialize_main_t * m, int fd)
 {
-  serialize_open_unix_file_descriptor_helper (m, fd, /* is_read */ 0);
+  serialize_open_clib_file_descriptor_helper (m, fd, /* is_read */ 0);
 }
 
 void
-unserialize_open_unix_file_descriptor (serialize_main_t * m, int fd)
+unserialize_open_clib_file_descriptor (serialize_main_t * m, int fd)
 {
-  serialize_open_unix_file_descriptor_helper (m, fd, /* is_read */ 1);
+  serialize_open_clib_file_descriptor_helper (m, fd, /* is_read */ 1);
 }
 
 static clib_error_t *
-serialize_open_unix_file_helper (serialize_main_t * m, char *file,
+serialize_open_clib_file_helper (serialize_main_t * m, char *file,
 				 uword is_read)
 {
   int fd, mode;
@@ -1227,20 +1227,20 @@
   if (fd < 0)
     return clib_error_return_unix (0, "open `%s'", file);
 
-  serialize_open_unix_file_descriptor_helper (m, fd, is_read);
+  serialize_open_clib_file_descriptor_helper (m, fd, is_read);
   return 0;
 }
 
 clib_error_t *
-serialize_open_unix_file (serialize_main_t * m, char *file)
+serialize_open_clib_file (serialize_main_t * m, char *file)
 {
-  return serialize_open_unix_file_helper (m, file, /* is_read */ 0);
+  return serialize_open_clib_file_helper (m, file, /* is_read */ 0);
 }
 
 clib_error_t *
-unserialize_open_unix_file (serialize_main_t * m, char *file)
+unserialize_open_clib_file (serialize_main_t * m, char *file)
 {
-  return serialize_open_unix_file_helper (m, file, /* is_read */ 1);
+  return serialize_open_clib_file_helper (m, file, /* is_read */ 1);
 }
 
 #endif /* CLIB_UNIX */
diff --git a/src/vppinfra/serialize.h b/src/vppinfra/serialize.h
index 6cc2372..90d615f 100644
--- a/src/vppinfra/serialize.h
+++ b/src/vppinfra/serialize.h
@@ -416,11 +416,11 @@
 void unserialize_open_vector (serialize_main_t * m, u8 * vector);
 
 #ifdef CLIB_UNIX
-clib_error_t *serialize_open_unix_file (serialize_main_t * m, char *file);
-clib_error_t *unserialize_open_unix_file (serialize_main_t * m, char *file);
+clib_error_t *serialize_open_clib_file (serialize_main_t * m, char *file);
+clib_error_t *unserialize_open_clib_file (serialize_main_t * m, char *file);
 
-void serialize_open_unix_file_descriptor (serialize_main_t * m, int fd);
-void unserialize_open_unix_file_descriptor (serialize_main_t * m, int fd);
+void serialize_open_clib_file_descriptor (serialize_main_t * m, int fd);
+void unserialize_open_clib_file_descriptor (serialize_main_t * m, int fd);
 #endif /* CLIB_UNIX */
 
 /* Main routines. */
diff --git a/src/vppinfra/test_serialize.c b/src/vppinfra/test_serialize.c
index e00eec3..6351b05 100644
--- a/src/vppinfra/test_serialize.c
+++ b/src/vppinfra/test_serialize.c
@@ -184,7 +184,7 @@
 
 #ifdef CLIB_UNIX
   if (tm->dump_file)
-    serialize_open_unix_file (sm, tm->dump_file);
+    serialize_open_clib_file (sm, tm->dump_file);
   else
 #endif
     serialize_open_vector (sm, 0);
@@ -217,7 +217,7 @@
 #ifdef CLIB_UNIX
   if (tm->dump_file)
     {
-      if ((error = unserialize_open_unix_file (um, tm->dump_file)))
+      if ((error = unserialize_open_clib_file (um, tm->dump_file)))
 	goto done;
     }
   else
diff --git a/src/vppinfra/time.c b/src/vppinfra/time.c
index 168d737..770ed8b 100644
--- a/src/vppinfra/time.c
+++ b/src/vppinfra/time.c
@@ -91,7 +91,7 @@
   if (fd < 0)
     return cpu_freq;
 
-  unformat_init_unix_file (&input, fd);
+  unformat_init_clib_file (&input, fd);
 
   ppc_timebase = 0;
   while (unformat_check_input (&input) != UNFORMAT_END_OF_INPUT)
@@ -130,7 +130,7 @@
   if (fd < 0)
     goto done;
 
-  unformat_init_unix_file (&input, fd);
+  unformat_init_clib_file (&input, fd);
   unformat (&input, "%f", &cpu_freq);
   cpu_freq *= 1e3;		/* measured in kHz */
   unformat_free (&input);
diff --git a/src/vppinfra/unformat.c b/src/vppinfra/unformat.c
index 5b17562..e30c6d3 100644
--- a/src/vppinfra/unformat.c
+++ b/src/vppinfra/unformat.c
@@ -1037,7 +1037,7 @@
 #ifdef CLIB_UNIX
 
 static uword
-unix_file_fill_buffer (unformat_input_t * input)
+clib_file_fill_buffer (unformat_input_t * input)
 {
   int fd = pointer_to_uword (input->fill_buffer_arg);
   uword l, n;
@@ -1055,9 +1055,9 @@
 }
 
 void
-unformat_init_unix_file (unformat_input_t * input, int file_descriptor)
+unformat_init_clib_file (unformat_input_t * input, int file_descriptor)
 {
-  unformat_init (input, unix_file_fill_buffer,
+  unformat_init (input, clib_file_fill_buffer,
 		 uword_to_pointer (file_descriptor, void *));
 }
 
diff --git a/src/vppinfra/unix-misc.c b/src/vppinfra/unix-misc.c
index 361015b..f693102 100644
--- a/src/vppinfra/unix-misc.c
+++ b/src/vppinfra/unix-misc.c
@@ -48,7 +48,7 @@
 __thread uword __os_thread_index = 0;
 
 clib_error_t *
-unix_file_n_bytes (char *file, uword * result)
+clib_file_n_bytes (char *file, uword * result)
 {
   struct stat s;
 
@@ -64,7 +64,7 @@
 }
 
 clib_error_t *
-unix_file_read_contents (char *file, u8 * result, uword n_bytes)
+clib_file_read_contents (char *file, u8 * result, uword n_bytes)
 {
   int fd = -1;
   uword n_done, n_left;
@@ -108,19 +108,19 @@
 }
 
 clib_error_t *
-unix_file_contents (char *file, u8 ** result)
+clib_file_contents (char *file, u8 ** result)
 {
   uword n_bytes;
   clib_error_t *error = 0;
   u8 *v;
 
-  if ((error = unix_file_n_bytes (file, &n_bytes)))
+  if ((error = clib_file_n_bytes (file, &n_bytes)))
     return error;
 
   v = 0;
   vec_resize (v, n_bytes);
 
-  error = unix_file_read_contents (file, v, n_bytes);
+  error = clib_file_read_contents (file, v, n_bytes);
 
   if (error)
     vec_free (v);
diff --git a/src/vppinfra/unix.h b/src/vppinfra/unix.h
index 29114cf..5b82c23 100644
--- a/src/vppinfra/unix.h
+++ b/src/vppinfra/unix.h
@@ -41,14 +41,14 @@
 #include <vppinfra/error.h>
 
 /* Number of bytes in a Unix file. */
-clib_error_t *unix_file_n_bytes (char *file, uword * result);
+clib_error_t *clib_file_n_bytes (char *file, uword * result);
 
 /* Read file contents into given buffer. */
-clib_error_t *unix_file_read_contents (char *file, u8 * result,
+clib_error_t *clib_file_read_contents (char *file, u8 * result,
 				       uword n_bytes);
 
 /* Read and return contents of Unix file. */
-clib_error_t *unix_file_contents (char *file, u8 ** result);
+clib_error_t *clib_file_contents (char *file, u8 ** result);
 
 /* As above but for /proc file system on Linux. */
 clib_error_t *unix_proc_file_contents (char *file, u8 ** result);
