Index: trunk/Softwares/MiBench/src/c/benchmark.c
===================================================================
--- trunk/Softwares/MiBench/src/c/benchmark.c	(revision 129)
+++ trunk/Softwares/MiBench/src/c/benchmark.c	(revision 137)
@@ -148,4 +148,5 @@
     free(argv[i]);
   free(argv);
+  free(filename);
 }
 #endif
@@ -175,4 +176,5 @@
     free(argv[i]);
   free(argv);
+  free(filename);
 }
 #endif
@@ -193,8 +195,8 @@
 
 //=======================================================================================
-//                                                       [ run_automative_susan ]
-//=======================================================================================
-#ifdef MIBENCH_SMALL
-void main_susan_small (void)
+//                                                   [ run_automative_susan_egdes ]
+//=======================================================================================
+#ifdef MIBENCH_SMALL
+void main_susan_edges_small (void)
 {
   int     argc = 4;
@@ -205,4 +207,6 @@
   char  * filename_input  = (char *) malloc(strlen(MIBENCH_DATA_PATH)+strlen(_filename_input));
   strcpy(filename_input,MIBENCH_DATA_PATH); strcat(filename_input,_filename_input);
+  char  * filename_output = "output_small.edges.pgm";
+  char  * option          = "-e";		     
   
   argv    = (char **)malloc ((argc) * sizeof(char *));
@@ -214,7 +218,4 @@
   argv[1] = memcpy(argv[1],filename_input ,strlen(filename_input ));
 
-  char  * filename_output = "output_small.smoothing.pgm";
-  char  * option          = "-s";
-
   argv[2] = (char *) malloc (strlen(filename_output));
   argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
@@ -225,43 +226,13 @@
   main_susan(argc, argv);
 
-  for (int i=2; i<argc; ++i)
-    free(argv[i]);
-
-  filename_output = "output_small.edges.pgm";
-  option          = "-e";
-
-  argv[2] = (char *) malloc (strlen(filename_output));
-  argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
-
-  argv[3] = (char *) malloc (strlen(option         ));
-  argv[3] = memcpy(argv[3],option         ,strlen(option         ));
-
-  main_susan(argc, argv);
-
-  for (int i=2; i<argc; ++i)
-    free(argv[i]);
-
-  for (int i=2; i<argc; ++i)
-    free(argv[i]);
-
-  filename_output = "output_small.cornes.pgm";
-  option          = "-c";
-
-  argv[2] = (char *) malloc (strlen(filename_output));
-  argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
-
-  argv[3] = (char *) malloc (strlen(option         ));
-  argv[3] = memcpy(argv[3],option         ,strlen(option         ));
-
-  main_susan(argc, argv);
-    
-  for (int i=0; i<argc; ++i)
-    free(argv[i]);
-  free(argv);
-}
-#endif
-
-#ifdef MIBENCH_LARGE
-void main_susan_large (void)
+  for (int i=0; i<argc; ++i)
+    free(argv[i]);
+  free(argv);
+  free(filename_input);
+}
+#endif
+
+#ifdef MIBENCH_LARGE
+void main_susan_edges_large (void)
 {
   int     argc = 4;
@@ -272,4 +243,6 @@
   char  * filename_input  = (char *) malloc(strlen(MIBENCH_DATA_PATH)+strlen(_filename_input));
   strcpy(filename_input,MIBENCH_DATA_PATH); strcat(filename_input,_filename_input);
+  char  * filename_output = "output_large.edges.pgm";
+  char  * option          = "-e";		     
   
   argv    = (char **)malloc ((argc) * sizeof(char *));
@@ -281,7 +254,181 @@
   argv[1] = memcpy(argv[1],filename_input ,strlen(filename_input ));
 
+  argv[2] = (char *) malloc (strlen(filename_output));
+  argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
+
+  argv[3] = (char *) malloc (strlen(option         ));
+  argv[3] = memcpy(argv[3],option         ,strlen(option         ));
+
+  main_susan(argc, argv);
+
+  for (int i=0; i<argc; ++i)
+    free(argv[i]);
+  free(argv);
+  free(filename_input);
+}
+#endif
+
+void run_automative_susan_edges (void)
+{
+  printf("***** automative.susan.edges - Begin *****\n");
+  
+#ifdef MIBENCH_SMALL
+  main_susan_edges_small     ();
+#endif
+#ifdef MIBENCH_LARGE
+  main_susan_edges_large     ();
+#endif
+
+  printf("***** automative.susan.edges - End   *****\n");
+}
+
+//=======================================================================================
+//                                                  [ run_automative_susan_corners ]
+//=======================================================================================
+#ifdef MIBENCH_SMALL
+void main_susan_corners_small (void)
+{
+  int     argc = 4;
+  char ** argv;
+
+  char  * execname        = "./susan";
+  char  *_filename_input  = "/susan-input_small.pgm";
+  char  * filename_input  = (char *) malloc(strlen(MIBENCH_DATA_PATH)+strlen(_filename_input));
+  strcpy(filename_input,MIBENCH_DATA_PATH); strcat(filename_input,_filename_input);
+  char  * filename_output = "output_small.corners.pgm";
+  char  * option          = "-c";
+  
+  argv    = (char **)malloc ((argc) * sizeof(char *));
+  
+  argv[0] = (char *) malloc (strlen(execname       ));
+  argv[0] = memcpy(argv[0],execname       ,strlen(execname       ));
+
+  argv[1] = (char *) malloc (strlen(filename_input ));
+  argv[1] = memcpy(argv[1],filename_input ,strlen(filename_input ));
+
+  argv[2] = (char *) malloc (strlen(filename_output));
+  argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
+
+  argv[3] = (char *) malloc (strlen(option         ));
+  argv[3] = memcpy(argv[3],option         ,strlen(option         ));
+
+  main_susan(argc, argv);
+    
+  for (int i=0; i<argc; ++i)
+    free(argv[i]);
+  free(argv);
+  free(filename_input);
+}
+#endif
+
+#ifdef MIBENCH_LARGE
+void main_susan_corners_large (void)
+{
+  int     argc = 4;
+  char ** argv;
+
+  char  * execname        = "./susan";
+  char  *_filename_input  = "/susan-input_large.pgm";
+  char  * filename_input  = (char *) malloc(strlen(MIBENCH_DATA_PATH)+strlen(_filename_input));
+  strcpy(filename_input,MIBENCH_DATA_PATH); strcat(filename_input,_filename_input);
+  char  * filename_output = "output_small.corners.pgm";
+  char  * option          = "-c";
+  
+  argv    = (char **)malloc ((argc) * sizeof(char *));
+  
+  argv[0] = (char *) malloc (strlen(execname       ));
+  argv[0] = memcpy(argv[0],execname       ,strlen(execname       ));
+
+  argv[1] = (char *) malloc (strlen(filename_input ));
+  argv[1] = memcpy(argv[1],filename_input ,strlen(filename_input ));
+
+  argv[2] = (char *) malloc (strlen(filename_output));
+  argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
+
+  argv[3] = (char *) malloc (strlen(option         ));
+  argv[3] = memcpy(argv[3],option         ,strlen(option         ));
+
+  main_susan(argc, argv);
+    
+  for (int i=0; i<argc; ++i)
+    free(argv[i]);
+  free(argv);
+  free(filename_input);
+}
+#endif
+
+void run_automative_susan_corners (void)
+{
+  printf("***** automative.susan.corners - Begin *****\n");
+  
+#ifdef MIBENCH_SMALL
+  main_susan_corners_small   ();
+#endif
+#ifdef MIBENCH_LARGE
+  main_susan_corners_large   ();
+#endif
+
+  printf("***** automative.susan.corners - End   *****\n");
+}
+
+//=======================================================================================
+//                                                [ run_automative_susan_smoothing ]
+//=======================================================================================
+#ifdef MIBENCH_SMALL
+void main_susan_smoothing_small (void)
+{
+  int     argc = 4;
+  char ** argv;
+
+  char  * execname        = "./susan";
+  char  *_filename_input  = "/susan-input_small.pgm";
+  char  * filename_input  = (char *) malloc(strlen(MIBENCH_DATA_PATH)+strlen(_filename_input));
+  strcpy(filename_input,MIBENCH_DATA_PATH); strcat(filename_input,_filename_input);
+  char  * filename_output = "output_small.smoothing.pgm";
+  char  * option          = "-s";
+  
+  argv    = (char **)malloc ((argc) * sizeof(char *));
+  
+  argv[0] = (char *) malloc (strlen(execname       ));
+  argv[0] = memcpy(argv[0],execname       ,strlen(execname       ));
+
+  argv[1] = (char *) malloc (strlen(filename_input ));
+  argv[1] = memcpy(argv[1],filename_input ,strlen(filename_input ));
+
+  argv[2] = (char *) malloc (strlen(filename_output));
+  argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
+
+  argv[3] = (char *) malloc (strlen(option         ));
+  argv[3] = memcpy(argv[3],option         ,strlen(option         ));
+
+  main_susan(argc, argv);
+
+  for (int i=0; i<argc; ++i)
+    free(argv[i]);
+  free(argv);
+  free(filename_input);
+}
+#endif
+
+#ifdef MIBENCH_LARGE
+void main_susan_smoothing_large (void)
+{
+  int     argc = 4;
+  char ** argv;
+
+  char  * execname        = "./susan";
+  char  *_filename_input  = "/susan-input_large.pgm";
+  char  * filename_input  = (char *) malloc(strlen(MIBENCH_DATA_PATH)+strlen(_filename_input));
+  strcpy(filename_input,MIBENCH_DATA_PATH); strcat(filename_input,_filename_input);
   char  * filename_output = "output_large.smoothing.pgm";
   char  * option          = "-s";
 
+  argv    = (char **)malloc ((argc) * sizeof(char *));
+  
+  argv[0] = (char *) malloc (strlen(execname       ));
+  argv[0] = memcpy(argv[0],execname       ,strlen(execname       ));
+
+  argv[1] = (char *) malloc (strlen(filename_input ));
+  argv[1] = memcpy(argv[1],filename_input ,strlen(filename_input ));
   argv[2] = (char *) malloc (strlen(filename_output));
   argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
@@ -291,41 +438,29 @@
 
   main_susan(argc, argv);
-
-  for (int i=2; i<argc; ++i)
-    free(argv[i]);
-
-  filename_output = "output_large.edges.pgm";
-  option          = "-e";
-
-  argv[2] = (char *) malloc (strlen(filename_output));
-  argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
-
-  argv[3] = (char *) malloc (strlen(option         ));
-  argv[3] = memcpy(argv[3],option         ,strlen(option         ));
-
-  main_susan(argc, argv);
-
-  for (int i=2; i<argc; ++i)
-    free(argv[i]);
-
-  for (int i=2; i<argc; ++i)
-    free(argv[i]);
-
-  filename_output = "output_large.cornes.pgm";
-  option          = "-c";
-
-  argv[2] = (char *) malloc (strlen(filename_output));
-  argv[2] = memcpy(argv[2],filename_output,strlen(filename_output));
-
-  argv[3] = (char *) malloc (strlen(option         ));
-  argv[3] = memcpy(argv[3],option         ,strlen(option         ));
-
-  main_susan(argc, argv);
-    
-  for (int i=0; i<argc; ++i)
-    free(argv[i]);
-  free(argv);
-}
-#endif
+    
+  for (int i=0; i<argc; ++i)
+    free(argv[i]);
+  free(argv);
+  free(filename_input);
+}
+#endif
+
+void run_automative_susan_smoothing (void)
+{
+  printf("***** automative.susan.smoothing - Begin *****\n");
+  
+#ifdef MIBENCH_SMALL
+  main_susan_smoothing_small ();
+#endif
+#ifdef MIBENCH_LARGE
+  main_susan_smoothing_large ();
+#endif
+
+  printf("***** automative.susan.smoothing - End   *****\n");
+}
+
+//=======================================================================================
+//                                                       [ run_automative_susan ]
+//=======================================================================================
 
 void run_automative_susan (void)
@@ -333,10 +468,20 @@
   printf("***** automative.susan - Begin *****\n");
   
-#ifdef MIBENCH_SMALL
-  main_susan_small ();
-#endif
-#ifdef MIBENCH_LARGE
-  main_susan_large ();
-#endif
+  run_automative_susan_edges     ();
+  run_automative_susan_corners   ();
+  run_automative_susan_smoothing ();
+
+  /*
+#ifdef MIBENCH_SMALL
+  main_susan_edges_small     ();
+  main_susan_corners_small   ();
+  main_susan_smoothing_small ();
+#endif
+#ifdef MIBENCH_LARGE
+  main_susan_edges_large     ();
+  main_susan_corners_large   ();
+  main_susan_smoothing_large ();
+#endif
+  */
 
   printf("***** automative.susan - End   *****\n");
@@ -376,4 +521,5 @@
     free(argv[i]);
   free(argv);
+  free(filename);
 }
 #endif
@@ -409,4 +555,5 @@
     free(argv[i]);
   free(argv);
+  free(filename);
 }
 #endif
@@ -470,4 +617,5 @@
     free(argv[i]);
   free(argv);
+  free(filename);
 }
 #endif
@@ -497,4 +645,5 @@
     free(argv[i]);
   free(argv);
+  free(filename);
 }
 #endif
@@ -513,2 +662,26 @@
   printf("***** security.sha - End   *****\n");
 }
+
+
+//=======================================================================================
+//                                                                       [ run_all ]     
+//=======================================================================================
+void run_all (void)
+{
+  printf("***** all *****\n");
+
+  run_automative_basicmath       ();
+  run_automative_bitcount        ();
+  run_automative_qsort           ();
+  run_automative_susan_edges     ();
+  run_automative_susan_corners   ();
+  run_automative_susan_smoothing ();
+  
+  run_network_dijkstra           ();
+  
+  run_office_stringsearch        ();
+  
+  run_security_sha               ();
+
+  return;
+}
Index: trunk/Softwares/MiBench/src/c/main.c
===================================================================
--- trunk/Softwares/MiBench/src/c/main.c	(revision 129)
+++ trunk/Softwares/MiBench/src/c/main.c	(revision 137)
@@ -16,4 +16,5 @@
 int main()
 {
+#ifdef Morpheo
   int pid = (int)getpid();
   
@@ -25,5 +26,11 @@
   else
     printf("The number of function in the workload is %d. (maximum of thread is : %d)\n",(int)NB_WORKLOAD,NB_THREAD_MAX);
-    
+#endif
+
+#ifdef UNIX
+  for (int i=0; i<(int)NB_WORKLOAD; ++i)
+    (*WorkLoad[i])();
+#endif
+
   exit (0);
 
Index: trunk/Softwares/MiBench/src/include/benchmark.h
===================================================================
--- trunk/Softwares/MiBench/src/include/benchmark.h	(revision 129)
+++ trunk/Softwares/MiBench/src/include/benchmark.h	(revision 137)
@@ -4,16 +4,20 @@
 #define benchmark_h
 
-void run_none                 (void);
+void run_none                       (void);
+void run_all                        (void);
+			            
+void run_automative_basicmath       (void);
+void run_automative_bitcount        (void);
+void run_automative_qsort           (void);
+void run_automative_susan           (void);
+void run_automative_susan_edges     (void);
+void run_automative_susan_corners   (void);
+void run_automative_susan_smoothing (void);
 
-void run_automative_basicmath (void);
-void run_automative_bitcount  (void);
-void run_automative_qsort     (void);
-void run_automative_susan     (void);
-
-void run_network_dijkstra     (void);
-
-void run_office_stringsearch  (void);
-
-void run_security_sha         (void);
+void run_network_dijkstra           (void);
+			            
+void run_office_stringsearch        (void);
+			            
+void run_security_sha               (void);
 
 #endif // benchmark_h
Index: trunk/Softwares/MiBench/src/include/workload.h
===================================================================
--- trunk/Softwares/MiBench/src/include/workload.h	(revision 129)
+++ trunk/Softwares/MiBench/src/include/workload.h	(revision 137)
@@ -12,5 +12,5 @@
 void (*WorkLoad[])() = 
 { 
-	(void *) run_security_sha
+	(void *) run_automative_susan
 };
 
