]> Zhao Yanbai Git Server - minix.git/commitdiff
proc_addr() returns address based on location in proc array
authorTomas Hruby <tom@minix3.org>
Tue, 15 Sep 2009 09:57:22 +0000 (09:57 +0000)
committerTomas Hruby <tom@minix3.org>
Tue, 15 Sep 2009 09:57:22 +0000 (09:57 +0000)
- pproc_addr is not neccessary to get the address of a process if we know its
  number

- local proc variables in system calls implementation (sys_task) conflicts with
  the global proc array of all process, therefore the variable were renamed to
  proc_nr as they hold the process number

kernel/proc.h
kernel/system/do_endksig.c
kernel/system/do_exec.c
kernel/system/do_irqctl.c
kernel/system/do_newmap.c
kernel/system/do_sigreturn.c
kernel/system/do_sigsend.c

index f08f434a5edd4f39c701e64998132a92307995e6..65e94875ebafa28fb50f11e64cc6dad1983f3333 100755 (executable)
@@ -198,7 +198,7 @@ struct proc {
 #define NIL_PROC          ((struct proc *) 0)          
 #define NIL_SYS_PROC      ((struct proc *) 1)          
 #define cproc_addr(n)     (&(proc + NR_TASKS)[(n)])
-#define proc_addr(n)      (pproc_addr + NR_TASKS)[(n)]
+#define proc_addr(n)      (&(proc[NR_TASKS + (n)]))
 #define proc_nr(p)       ((p)->p_nr)
 
 #define isokprocn(n)      ((unsigned) ((n) + NR_TASKS) < NR_PROCS + NR_TASKS)
index 1e62dc05b91f38a5990a249f2ac70b543d3ab499..7d4ad7f36d2549bf218a12781a901fc42a1faff1 100644 (file)
@@ -22,15 +22,15 @@ message *m_ptr;                     /* pointer to request message */
  * signal it got with SYS_GETKSIG.
  */
   register struct proc *rp;
-  int proc;
+  int proc_nr;
 
   /* Get process pointer and verify that it had signals pending. If the 
    * process is already dead its flags will be reset. 
    */
-  if(!isokendpt(m_ptr->SIG_ENDPT, &proc))
+  if(!isokendpt(m_ptr->SIG_ENDPT, &proc_nr))
        return EINVAL;
 
-  rp = proc_addr(proc);
+  rp = proc_addr(proc_nr);
   if (!RTS_ISSET(rp, SIG_PENDING)) return(EINVAL);
 
   /* PM has finished one kernel signal. Perhaps process is ready now? */
index 1fbdd0b0fc6e56097584f79fd3618c8939751fcf..c37eeb7c7bec5704d0ced9ae4bed413537244777 100644 (file)
@@ -24,12 +24,12 @@ register message *m_ptr;    /* pointer to request message */
   register struct proc *rp;
   phys_bytes phys_name;
   char *np;
-  int proc;
+  int proc_nr;
 
-  if(!isokendpt(m_ptr->PR_ENDPT, &proc))
+  if(!isokendpt(m_ptr->PR_ENDPT, &proc_nr))
        return EINVAL;
 
-  rp = proc_addr(proc);
+  rp = proc_addr(proc_nr);
 
   /* Save command name for debugging, ps(1) output, etc. */
   if(data_copy(who_e, (vir_bytes) m_ptr->PR_NAME_PTR,
index 53893c3915e19d824f6d336dea4c7047e02ed205..041b77b4c78182170545f0940b2d45ac04049c5f 100644 (file)
@@ -137,7 +137,7 @@ irq_hook_t *hook;
  * interrupts are transformed into messages to a driver. The IRQ line will be
  * reenabled if the policy says so.
  */
-  int proc;
+  int proc_nr;
 
   /* As a side-effect, the interrupt handler gathers random information by 
    * timestamping the interrupt events. This is used for /dev/random.
@@ -148,14 +148,14 @@ irq_hook_t *hook;
    * If it's dead, this should never happen, as processes that die 
    * automatically get their interrupt hooks unhooked.
    */
-  if(!isokendpt(hook->proc_nr_e, &proc))
+  if(!isokendpt(hook->proc_nr_e, &proc_nr))
      minix_panic("invalid interrupt handler", hook->proc_nr_e);
 
   /* Add a bit for this interrupt to the process' pending interrupts. When 
    * sending the notification message, this bit map will be magically set
    * as an argument. 
    */
-  priv(proc_addr(proc))->s_int_pending |= (1 << hook->notify_id);
+  priv(proc_addr(proc_nr))->s_int_pending |= (1 << hook->notify_id);
 
   /* Build notification message and return. */
   lock_notify(HARDWARE, hook->proc_nr_e);
index 028cd290b0adb3bcfdd299c78c759db078112ab3..580b69469e2b4b3dac64109d9f7bee60d1bb4fee 100644 (file)
@@ -20,12 +20,12 @@ message *m_ptr;                     /* pointer to request message */
   register struct proc *rp;    /* process whose map is to be loaded */
   struct mem_map *map_ptr;     /* virtual address of map inside caller */
   phys_bytes src_phys;         /* physical address of map at the */
-  int proc;
+  int proc_nr;
 
   map_ptr = (struct mem_map *) m_ptr->PR_MEM_PTR;
-  if (! isokendpt(m_ptr->PR_ENDPT, &proc)) return(EINVAL);
-  if (iskerneln(proc)) return(EPERM);
-  rp = proc_addr(proc);
+  if (! isokendpt(m_ptr->PR_ENDPT, &proc_nr)) return(EINVAL);
+  if (iskerneln(proc_nr)) return(EPERM);
+  rp = proc_addr(proc_nr);
 
   return newmap(rp, map_ptr);
 }
index 7079f939288bb4c62ea2b09253ed54b0be42035d..6e286675f9cbff2f0b4377e13a2df0326f03bb54 100644 (file)
@@ -26,11 +26,11 @@ message *m_ptr;                     /* pointer to request message */
  */
   struct sigcontext sc;
   register struct proc *rp;
-  int proc, r;
+  int proc_nr, r;
 
-  if (! isokendpt(m_ptr->SIG_ENDPT, &proc)) return(EINVAL);
-  if (iskerneln(proc)) return(EPERM);
-  rp = proc_addr(proc);
+  if (! isokendpt(m_ptr->SIG_ENDPT, &proc_nr)) return(EINVAL);
+  if (iskerneln(proc_nr)) return(EPERM);
+  rp = proc_addr(proc_nr);
 
   /* Copy in the sigcontext structure. */
   if((r=data_copy(m_ptr->SIG_ENDPT, (vir_bytes) m_ptr->SIG_CTXT_PTR,
index c12c2c406506ed86df8f76287b8e73af15606efa..ba340dec43c5a037f6b635d68f946124df29e9dd 100644 (file)
@@ -28,12 +28,12 @@ message *m_ptr;                     /* pointer to request message */
   register struct proc *rp;
   struct sigcontext sc, *scp;
   struct sigframe fr, *frp;
-  int proc, r;
+  int proc_nr, r;
   phys_bytes ph;
 
-  if (!isokendpt(m_ptr->SIG_ENDPT, &proc)) return(EINVAL);
-  if (iskerneln(proc)) return(EPERM);
-  rp = proc_addr(proc);
+  if (!isokendpt(m_ptr->SIG_ENDPT, &proc_nr)) return(EINVAL);
+  if (iskerneln(proc_nr)) return(EPERM);
+  rp = proc_addr(proc_nr);
 
   ph = umap_local(proc_addr(who_p), D, (vir_bytes) m_ptr->SIG_CTXT_PTR, sizeof(struct sigmsg));
   if(!ph) return EFAULT;