]> mj.ucw.cz Git - libucw.git/commitdiff
- renamed fbpar_* functions
authorPavel Charvat <pavel.charvat@netcentrum.cz>
Tue, 29 May 2007 09:52:31 +0000 (11:52 +0200)
committerPavel Charvat <pavel.charvat@netcentrum.cz>
Tue, 29 May 2007 09:52:31 +0000 (11:52 +0200)
- added lookup table for I/O types

lib/fastbuf.h
lib/fb-param.c

index e7d441b5fa81ae01d8496a4365383ee4abeeaaaf..8d7a164e1d6f41fb435db25d2e58f39e9ec09303 100644 (file)
@@ -104,19 +104,25 @@ struct fastbuf *fbdir_open_tmp(struct asio_queue *io_queue);
 
 /* FastIO on files with run-time parametrization */
 
+enum fb_type {
+  FB_STD,
+  FB_DIRECT,
+  FB_MMAP
+};
+
 struct fb_params {
-  // FIXME
-  uns odirect;
+  enum fb_type type;
   uns buffer_size;
 };
 
 struct cf_section;
 extern struct cf_section fbpar_cf;
+extern struct fb_params fbpar_defaults;
 
-struct fastbuf *fbpar_open(byte *name, int mode, struct fb_params *params);
-struct fastbuf *fbpar_open_try(byte *name, int mode, struct fb_params *params);
-struct fastbuf *fbpar_open_fd(int fd, struct fb_params *params);
-struct fastbuf *fbpar_open_tmp(struct fb_params *params);
+struct fastbuf *bopen_file(byte *name, int mode, struct fb_params *params);
+struct fastbuf *bopen_file_try(byte *name, int mode, struct fb_params *params);
+struct fastbuf *bopen_tmp_file(struct fb_params *params);
+struct fastbuf *bopen_fd(int fd, struct fb_params *params);
 
 /* FastI on file descriptors with limit */
 
index 56f9b3f9e8d1ce57cf8f704c85e4fbf4d7242641..6fc5f27ac2043da3f95c193554ac03f87c0b9698 100644 (file)
@@ -11,7 +11,7 @@
 #include "lib/conf.h"
 #include "lib/fastbuf.h"
 
-static struct fb_params fbpar_defaults = {
+struct fb_params fbpar_defaults = {
   .buffer_size = 65536,
 }; 
 
@@ -20,7 +20,7 @@ struct cf_section fbpar_cf = {
   CF_TYPE(struct fb_params),
   CF_ITEMS {
     // FIXME
-    CF_UNS("DirectIO", F(odirect)),
+    CF_LOOKUP("Type", (int *)F(type), ((byte *[]){"std", "direct", "mmap", NULL})),
     CF_UNS("BufSize", F(buffer_size)),
     CF_END
   }
@@ -41,41 +41,61 @@ fbpar_global_init(void)
 }
 
 struct fastbuf *
-fbpar_open(byte *name, int mode, struct fb_params *params)
+bopen_file(byte *name, int mode, struct fb_params *params)
 {
   params = params ? : &fbpar_defaults;
-  if (!params->odirect)
-    return bopen(name, mode, params->buffer_size);
-  else
-    return fbdir_open(name, mode, NULL);
+  switch (params->type)
+    {
+      case FB_STD:
+        return bopen(name, mode, params->buffer_size);
+      case FB_DIRECT:
+        return fbdir_open(name, mode, NULL);
+      default:
+       ASSERT(0);
+    }
 }
 
 struct fastbuf *
-fbpar_open_try(byte *name, int mode, struct fb_params *params)
+bopen_file_try(byte *name, int mode, struct fb_params *params)
 {
   params = params ? : &fbpar_defaults;
-  if (!params->odirect)
-    return bopen_try(name, mode, params->buffer_size);
-  else
-    return fbdir_open_try(name, mode, NULL);
+  switch (params->type)
+    {
+      case FB_STD:
+        return bopen_try(name, mode, params->buffer_size);
+      case FB_DIRECT:
+        return fbdir_open_try(name, mode, NULL);
+      default:
+       ASSERT(0);
+    }
 }
 
 struct fastbuf *
-fbpar_open_fd(int fd, struct fb_params *params)
+bopen_fd(int fd, struct fb_params *params)
 {
   params = params ? : &fbpar_defaults;
-  if (!params->odirect)
-    return bfdopen(fd, params->buffer_size);
-  else
-    return fbdir_open_fd(fd, NULL);
+  switch (params->type)
+    {
+      case FB_STD:
+        return bfdopen(fd, params->buffer_size);
+      case FB_DIRECT:
+        return fbdir_open_fd(fd, NULL);
+      default:
+       ASSERT(0);
+    }
 }
 
 struct fastbuf *
-fbpar_open_tmp(struct fb_params *params)
+bopen_tmp_file(struct fb_params *params)
 {
   params = params ? : &fbpar_defaults;
-  if (!params->odirect)
-    return bopen_tmp(params->buffer_size);
-  else
-    return fbdir_open_tmp(NULL);
+  switch (params->type)
+    {
+      case FB_STD:
+        return bopen_tmp(params->buffer_size);
+      case FB_DIRECT:
+        return fbdir_open_tmp(NULL);
+      default:
+       ASSERT(0);
+    }
 }