]> mj.ucw.cz Git - libucw.git/commitdiff
Better names for direct IO switches
authorMichal Vaner <vorner@ucw.cz>
Sun, 30 Nov 2008 16:00:29 +0000 (17:00 +0100)
committerMichal Vaner <vorner@ucw.cz>
Sun, 30 Nov 2008 16:00:29 +0000 (17:00 +0100)
CONFIG_DIRECT_IO to allow/disallow use of direct IO. Auto-disabled on
darwin.

CONFIG_UCW_FB_DIRECT to include/exclude fb-direct. Available only with
CONFIG_DIRECT_IO and CONFIG_UCW_THREADS.

ucw/Makefile
ucw/default.cfg
ucw/fastbuf.h
ucw/fb-param.c
ucw/perl/UCW/Configure/C.pm
ucw/perl/UCW/Configure/LibUCW.pm

index 954cfec3bf7e37328978f848d22d3bcdd8889230..55b274a4af9b4a0cb309feefbf36bfd4d3df338f 100644 (file)
@@ -64,7 +64,7 @@ LIBUCW_MODS+=threads-conf workqueue asio
 LIBUCW_MAIN_INCLUDES+=workqueue.h semaphore.h asio.h
 endif
 
-ifdef CONFIG_DIRECT
+ifdef CONFIG_UCW_FB_DIRECT
 LIBUCW_MODS+=fb-direct
 endif
 
index 58b145921a0f5de599d9b55b9c84f9268e326a0e..9ce2ae4f432b673b06165b4d0492f992c432b7ca 100644 (file)
@@ -51,7 +51,8 @@ UnSet("ENV_VAR_CONFIG");
 UnSet("CONFIG_URL_ESCAPE_COMPAT");
 
 # Allow use of direct IO on files
-Set("CONFIG_DIRECT");
+Set("CONFIG_DIRECT_IO");
+Set("CONFIG_UCW_FB_DIRECT");
 
 # Return success
 1;
index 325b35fd1f802bc07cb15d52ef7a2b4f827a2324..2c1c1a10aca2c693119b9e2aadf58122638ca45d 100644 (file)
@@ -279,7 +279,7 @@ void bfix_tmp_file(struct fastbuf *fb, const char *name);
 struct fastbuf *bfdopen_internal(int fd, const char *name, uns buflen);
 struct fastbuf *bfmmopen_internal(int fd, const char *name, uns mode);
 
-#ifdef CONFIG_DIRECT
+#ifdef CONFIG_UCW_FB_DIRECT
 extern uns fbdir_cheat;
 struct asio_queue;
 struct fastbuf *fbdir_open_fd_internal(int fd, const char *name, struct asio_queue *io_queue, uns buffer_size, uns read_ahead, uns write_back);
index 514f987bb719729046a5fc16e1f1ba38a228233e..0d9d690418fb89be3c745fbd875574fe3c93e06f 100644 (file)
@@ -29,7 +29,7 @@ fbpar_cf_commit(struct fb_params *p UNUSED)
   if (p->type == FB_DIRECT)
     return "Direct I/O is supported only with CONFIG_UCW_THREADS";
 #endif
-#ifndef CONFIG_DIRECT
+#ifndef CONFIG_UCW_FB_DIRECT
   if (p->type == FB_DIRECT)
     return "Direct I/O is disabled";
 #endif
@@ -76,7 +76,7 @@ bopen_fd_internal(int fd, struct fb_params *params, uns mode, const char *name)
   struct fastbuf *fb;
   switch (params->type)
     {
-#ifdef CONFIG_DIRECT
+#ifdef CONFIG_UCW_FB_DIRECT
       case FB_DIRECT:
        fb = fbdir_open_fd_internal(fd, name, params->asio,
            params->buffer_size ? : fbpar_def.buffer_size,
@@ -106,7 +106,7 @@ bopen_file_internal(const char *name, int mode, struct fb_params *params, int tr
 {
   if (!params)
     params = &fbpar_def;
-#ifdef CONFIG_DIRECT
+#ifdef CONFIG_UCW_FB_DIRECT
   if (params->type == FB_DIRECT && !fbdir_cheat)
     mode |= O_DIRECT;
 #endif
index 6219a164bf11eed8548f8d3ff9052dd3f1ab3ac9..3e65c1f258228ac8c3388e9f1938470dcf358dc6 100644 (file)
@@ -256,10 +256,10 @@ if (IsSet("CONFIG_DARWIN")) {
        Append("COPT" => "-I/sw/include");
        # Fill in some constants not found in the system header files
        Set("SOL_TCP" => 6);            # missing in /usr/include/netinet/tcp.h
-       if (IsGiven("CONFIG_DIRECT") && IsSet("CONFIG_DIRECT")) {
+       if (IsGiven("CONFIG_DIRECT_IO") && IsSet("CONFIG_DIRECT_IO")) {
                Fail("Direct I/O is not available on darwin");
        } else {
-               UnSet("CONFIG_DIRECT");
+               UnSet("CONFIG_DIRECT_IO");
        }
 }
 
index 19fcb0384e07b8c5ee6271825bc9653791d3a931..194742cd6670f5fd3d59c7086c65d15c2630780e 100644 (file)
@@ -43,19 +43,6 @@ if (Get("CPU_ARCH") eq "default" || Get("CPU_ARCH") =~ /^i[345]86$/) {
        Set("CONFIG_UCW_RADIX_SORTER_BITS" => 12);
 }
 
-# fb_direct needs threads
-if (!IsSet("CONFIG_UCW_THREADS")) {
-       if (IsGiven("CONFIG_DIRECT") && IsSet("CONFIG_DIRECT")) {
-               if (!IsGiven("CONFIG_UCW_THREADS")) {
-                       Set("CONFIG_UCW_THREADS");
-               } else {
-                       Fail("CONFIG_DIRECT needs CONFIG_UCW_THREADS");
-               }
-       } else {
-               UnSet("CONFIG_DIRECT");
-       }
-}
-
 PostConfig {
        AtWrite {
                UCW::Configure::C::ConfigHeader("ucw/autoconf.h", [
@@ -69,6 +56,20 @@ PostConfig {
 
                ]);
        } if Get("CONFIG_INSTALL_API");
+
+       # Include direct FB?
+       if (IsGiven("CONFIG_UCW_FB_DIRECT") && IsSet("CONFIG_UCW_FB_DIRECT")) {
+       }
+       if (!IsSet("CONFIG_UCW_THREADS") || !IsSet("CONFIG_DIRECT_IO")) {
+               if (IsGiven("CONFIG_UCW_FB_DIRECT") && IsSet("CONFIG_UCW_FB_DIRECT")) {
+                       if (!IsSet("CONFIG_UCW_THREADS")) {
+                               Fail("CONFIG_UCW_FB_DIRECT needs CONFIG_UCW_THREADS");
+                       } else {
+                               Fail("CONFIG_UCW_FB_DIRECT needs CONFIG_DIRECT_IO");
+                       }
+               }
+               UnSet("CONFIG_UCW_FB_DIRECT");
+       }
 };
 
 # We succeeded