[BACK]Return to main.c CVS log [TXT][DIR] Up to [local] / prex-old / usr / server / exec

Diff for /prex-old/usr/server/exec/main.c between version 1.1.1.1 and 1.1.1.1.2.1

version 1.1.1.1, 2008/06/03 10:38:51 version 1.1.1.1.2.1, 2008/08/13 17:12:43
Line 70 
Line 70 
         int i, err = 0;          int i, err = 0;
   
         /*          /*
          * Wait 1sec for loading server.           * Check the server existence. Timeout is 1sec.
          */           */
         for (i = 0; i < 100; i++) {          for (i = 0; i < 100; i++) {
                 err = object_lookup((char *)name, obj);                  err = object_lookup((char *)name, obj);
Line 106 
Line 106 
         /* Notify to file system server */          /* Notify to file system server */
         do {          do {
                 m.hdr.code = FS_EXEC;                  m.hdr.code = FS_EXEC;
                 m.data[0] = org_task;                  m.data[0] = (int)org_task;
                 m.data[1] = new_task;                  m.data[1] = (int)new_task;
                 err = msg_send(fs_obj, &m, sizeof(m));                  err = msg_send(fs_obj, &m, sizeof(m));
         } while (err == EINTR);          } while (err == EINTR);
   
         /* Notify to process server */          /* Notify to process server */
         do {          do {
                 m.hdr.code = PS_EXEC;                  m.hdr.code = PS_EXEC;
                 m.data[0] = org_task;                  m.data[0] = (int)org_task;
                 m.data[1] = new_task;                  m.data[1] = (int)new_task;
                 m.data[2] = (int)stack;                  m.data[2] = (int)stack;
                 err = msg_send(proc_obj, &m, sizeof(m));                  err = msg_send(proc_obj, &m, sizeof(m));
         } while (err == EINTR);          } while (err == EINTR);
Line 137 
Line 137 
         void (*entry)(void);          void (*entry)(void);
         cap_t cap;          cap_t cap;
   
         dprintf("do_exec: path=%s task=%x\n", msg->path, msg->hdr.task);          DPRINTF(("do_exec: path=%s task=%x\n", msg->path, msg->hdr.task));
   
         old_task = msg->hdr.task;          old_task = msg->hdr.task;
   
Line 174 
Line 174 
                 err = EIO;                  err = EIO;
                 goto err2;                  goto err2;
         }          }
         for (ldr = loader_table; ldr->name != NULL; ldr++) {          for (ldr = loader_table; ldr->el_name != NULL; ldr++) {
                 if (ldr->probe(header) == 0)                  if (ldr->el_probe(header) == 0)
                         break;                          break;
                 /* Check next format */                  /* Check next format */
         }          }
         if (ldr->name == NULL) {          if (ldr->el_name == NULL) {
                 dprintf("Unsupported file format\n");                  DPRINTF(("Unsupported file format\n"));
                 err = ENOEXEC;                  err = ENOEXEC;
                 goto err2;                  goto err2;
         }          }
         dprintf("exec loader=%s\n", ldr->name);          DPRINTF(("exec loader=%s\n", ldr->el_name));
   
         /*          /*
          * Suspend old task           * Suspend old task
Line 210 
Line 210 
          * Copy capabilities           * Copy capabilities
          */           */
         task_getcap(old_task, &cap);          task_getcap(old_task, &cap);
   
           /*
            * XXX: Temporary removed...
            */
         /* cap &= CONFIG_CAP_MASK; */          /* cap &= CONFIG_CAP_MASK; */
   
         task_setcap(new_task, &cap);          task_setcap(new_task, &cap);
   
         if ((err = thread_create(new_task, &th)) != 0)          if ((err = thread_create(new_task, &th)) != 0)
Line 228 
Line 233 
         /*          /*
          * Load file image.           * Load file image.
          */           */
         if ((err = ldr->load(header, new_task, fd, (void **)&entry)) != 0)          if ((err = ldr->el_load(header, new_task, fd, (void **)&entry)) != 0)
                 goto err5;                  goto err5;
         if ((err = thread_load(th, entry, sp)) != 0)          if ((err = thread_load(th, entry, sp)) != 0)
                 goto err5;                  goto err5;
Line 249 
Line 254 
         thread_resume(th);          thread_resume(th);
   
         close(fd);          close(fd);
         dprintf("exec complete successfully\n");          DPRINTF(("exec complete successfully\n"));
         return 0;          return 0;
  err5:   err5:
         vm_free(new_task, stack);          vm_free(new_task, stack);
Line 260 
Line 265 
  err2:   err2:
         close(fd);          close(fd);
  err1:   err1:
         dprintf("exec failed err=%d\n", err);          DPRINTF(("exec failed err=%d\n", err));
         return err;          return err;
 }  }
   
Line 284 
Line 289 
 {  {
         struct exec_loader *ldr;          struct exec_loader *ldr;
   
         for (ldr = loader_table; ldr->name; ldr++) {          for (ldr = loader_table; ldr->el_name; ldr++) {
                 dprintf("Initialize \'%s\' loader\n", ldr->name);                  DPRINTF(("Initialize \'%s\' loader\n", ldr->el_name));
                 ldr->init();                  ldr->el_init();
         }          }
 }  }
   
Line 361 
Line 366 
                 }                  }
 #ifdef DEBUG_EXEC  #ifdef DEBUG_EXEC
                 if (err)                  if (err)
                         dprintf("msg error=%d\n", err);                          DPRINTF(("msg error=%d\n", err));
 #endif  #endif
                 /*                  /*
                  * Reply to the client.                   * Reply to the client.

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.1.2.1

CVSweb