[uae] Re: Speed test with hardfiles, hardfile in partition and virtual filesystem

  • From: Toni Wilen <twilen@xxxxxxxxxx>
  • To: uae@xxxxxxxxxxxxx
  • Date: Thu, 26 May 2005 19:07:09 +0300

Resurrecting old thread.. Here is patch that increases the speed of virtual directory filesystem 3x-10x in threaded mode. Especially directory scan, file open and seek are _much_ faster now.

--- c:\d\d\include\native2amiga.h       2002-11-23 17:26:44.000000000 +0200
+++ include\native2amiga.h      2005-05-26 18:59:34.218750000 +0300
@@ -54,3 +54,10 @@
  * It's emptied via exter_int_helper by the EXTER interrupt. */
 extern smp_comm_pipe native2amiga_pending;
 #endif
+
+STATIC_INLINE do_uae_int_requested(void)
+{
+       uae_int_requested = 1;
+       set_uae_int_flag ();
+       INTREQ (0x8000 | 0x0008);
+}

--- c:\d\d\native2amiga.c       2004-07-12 21:06:16.000000000 +0300
+++ native2amiga.c      2005-05-23 19:33:52.125000000 +0300
@@ -51,7 +51,7 @@
     uae_sem_wait (&n2asem);
     write_comm_pipe_int (&native2amiga_pending, 3, 0);
     write_comm_pipe_u32 (&native2amiga_pending, interrupt, 1);
-    uae_int_requested = 1;
+    do_uae_int_requested();
     uae_sem_post (&n2asem);
 }

@@ -60,7 +60,7 @@
     uae_sem_wait (&n2asem);
     write_comm_pipe_int (&native2amiga_pending, 2, 0);
     write_comm_pipe_u32 (&native2amiga_pending, msg, 1);
-    uae_int_requested = 1;
+    do_uae_int_requested();
     uae_sem_post (&n2asem);
 }

@@ -70,7 +70,7 @@
     write_comm_pipe_int (&native2amiga_pending, 1, 0);
     write_comm_pipe_u32 (&native2amiga_pending, port, 0);
     write_comm_pipe_u32 (&native2amiga_pending, msg, 1);
-    uae_int_requested = 1;
+    do_uae_int_requested();
     uae_sem_post (&n2asem);
 }

@@ -80,7 +80,7 @@
     write_comm_pipe_int (&native2amiga_pending, 0, 0);
     write_comm_pipe_u32 (&native2amiga_pending, task, 0);
     write_comm_pipe_int (&native2amiga_pending, mask, 1);
-    uae_int_requested = 1;
+    do_uae_int_requested();
     uae_sem_post (&n2asem);
 }

@@ -90,7 +90,7 @@
     write_comm_pipe_int (&native2amiga_pending, 4, 0);
     write_comm_pipe_int (&native2amiga_pending, port, 0);
     write_comm_pipe_int (&native2amiga_pending, nr, 1);
-    uae_int_requested = 1;
+    do_uae_int_requested();
     uae_sem_post (&n2asem);
 }

--- c:\d\d\filesys.c 2005-05-10 21:14:02.000000000 +0300
+++ filesys.c 2005-05-26 18:54:20.468750000 +0300
@@ -3414,7 +3414,7 @@
ui->self->cmds_sent++;
/* The message is sent by our interrupt handler, so make sure an interrupt
* happens. */
- uae_int_requested = 1;
+ do_uae_int_requested();
/* Send back the locks. */
if (get_long (ui->self->locklist) != 0)
write_comm_pipe_int (ui->back_pipe, (int)(get_long (ui->self->locklist)), 0);


Other related posts: