]> Zhao Yanbai Git Server - minix.git/commitdiff
*** empty log message ***
authorJorrit Herder <jnherder@minix3.org>
Tue, 19 Jul 2005 15:01:47 +0000 (15:01 +0000)
committerJorrit Herder <jnherder@minix3.org>
Tue, 19 Jul 2005 15:01:47 +0000 (15:01 +0000)
kernel/Makefile
kernel/exception.c
kernel/klibc.c
kernel/proc.c
kernel/proto.h
kernel/start.c
kernel/system.c
kernel/system/Makefile
kernel/system/do_exec.c
kernel/system/do_sigreturn.c
kernel/system/do_sigsend.c

index 259e6a1b4284798220ae41fb4dc39efc785884ab..20ccab4bf50d7eb204d169b7cb1bd32e76f89528 100755 (executable)
@@ -31,7 +31,7 @@ kernel build install: $(HEAD) $(OBJS)
 
 clean:
        cd system && $(MAKE) -$(MAKEFLAGS) $@
-       rm -f *.a *.o *.bak kernel
+       rm -f *.a *.o *~ *.bak kernel
 
 depend: 
        cd system && $(MAKE) -$(MAKEFLAGS) $@
index 6e19ed645318fc55ed0041c3ca1003cf2a8a2797..59eb67553f3bbacc0456ffa2102eadc7af1f8953 100755 (executable)
@@ -52,6 +52,10 @@ unsigned vec_nr;
        return;
   }
 
+  /* If an exception occurs while running a process, the k_reenter variable 
+   * will be zero. Exceptions in interrupt handlers or system traps will make 
+   * k_reenter larger than zero.
+   */
   if (k_reenter == 0 && ! iskernelp(saved_proc)) {
        cause_sig(proc_nr(saved_proc), ep->signum);
        return;
@@ -62,7 +66,8 @@ unsigned vec_nr;
        kprintf("\nIntel-reserved exception %d\n", vec_nr);
   else
        kprintf("\n%s\n", karg(ep->msg));
-  kprintf("process number %d, ", proc_nr(saved_proc));
+  kprintf("process number %d ", proc_nr(saved_proc));
+  kprintf("(%s), ", saved_proc->p_name);
   kprintf("pc = %d:",  (unsigned) saved_proc->p_reg.cs);
   kprintf("0x%x\n", (unsigned) saved_proc->p_reg.pc);
 
index 113ae5856f4b276f40201756e7cb7ee1d13ba0fd..ab885b952ddd93b26bab17a012b7458a7ab9d90d 100644 (file)
@@ -4,7 +4,6 @@
  * can be slightly different.  
  *                                             March 2005, Jorrit N. Herder.
  * Entrypoints into this file:
- *     katoi:          convert string to integer
  *     kmemcpy:                copy n bytes from pointer p1 to pointer p2
  *     kmemset:                set n bytes to c starting at pointer p
  *     kprintf:                printf for the kernel (see working below) 
 FORWARD _PROTOTYPE(void kputc, (int c));
 
 
-/*=========================================================================*
- *                             katoi                                      *
- *=========================================================================*/
-PUBLIC int katoi(register const char *s)
-{
-  int value = 0;                               /* default value */
-  int sign = 1;                                        /* assume positive */
-
-  while(*s == ' ') s++;                                /* skip spaces */
-  if (*s == '-') { sign = -1; s++; }           /* detect sign */
-  while(isdigit(*s))                           /* get integer */
-      value = value*10 + (*s++) -'0';
-
-  return(sign * value);                        /* return result */
-}
-
-
 /*=========================================================================*
  *                             kmemcpy                                    *
  *=========================================================================*/
index 70cf8a7d03dd1a669441bffbfe62dd6c1fa7d3a7..ca235b4ec1541847ae8b242263a03abb08d9db44 100755 (executable)
@@ -183,11 +183,8 @@ message *m_ptr;                    /* pointer to message in the caller's space */
       break;
   case NOTIFY:
       result = mini_notify(caller_ptr, src_dst, m_ptr);
-#if TEMP_CODE
       break;
   case ECHO:
-      kprintf("Echo message from process %s\n", proc_nr(caller_ptr));
-#endif
       CopyMess(caller_ptr->p_nr, caller_ptr, m_ptr, caller_ptr, m_ptr);
       result = OK;
       break;
index cef1817e76adab100c32352477c7c6c43728aa6b..265ce8e70fc5f99e472c4d5fedfdab5788e34a8f 100755 (executable)
@@ -16,7 +16,6 @@ _PROTOTYPE( void set_timer, (struct timer *tp, clock_t t, tmr_func_t f)       );
 _PROTOTYPE( void reset_timer, (struct timer *tp)                       );
 
 /* klibc.c */
-_PROTOTYPE( int katoi, (register const char *s));
 _PROTOTYPE( void *kmemcpy, (void *s1, const void *s2, register size_t n));
 _PROTOTYPE( void *kmemset, (void *s, register int c, register size_t n));
 _PROTOTYPE( int kstrcmp, (register const char *s1, register const char *s2));
index bf82c6f92a379a2b6300d9cbd23a5a76125320be..ab7d83214eb6bbc554bcd5b4a5d7b823415b438e 100755 (executable)
@@ -11,6 +11,7 @@
 #include "kernel.h"
 #include "protect.h"
 #include "proc.h"
+#include <stdlib.h>
 
 FORWARD _PROTOTYPE( char *get_value, (_CONST char *params, _CONST char *key));
 
@@ -64,7 +65,7 @@ U16_t parmoff, parmsize;      /* boot parameters offset and length */
   kinfo.kmem_size = (phys_bytes) &end; 
 
   /* Processor?  86, 186, 286, 386, ... */
-  machine.processor=katoi(get_value(params, "processor")); 
+  machine.processor=atoi(get_value(params, "processor")); 
 
   /* Decide if mode is protected for older machines. */
 #if _WORD_SIZE == 2
index 1f965e3822b5dc58ada33855730f595edf07351e..bfe5968957cfd4888ee516db1358c85af247679c 100755 (executable)
@@ -13,6 +13,7 @@
  * there are several other minor entry points:
  *   send_sig:         send signal directly to a system process
  *   cause_sig:                take action to cause a signal to occur via PM
+ *   init_proc:                initialize a process, during start up or fork
  *   clear_proc:       clean up a process in the process table, e.g. on exit
  *   umap_local:       map virtual address in LOCAL_SEG to physical 
  *   umap_remote:      map virtual address in REMOTE_SEG to physical 
@@ -216,7 +217,7 @@ int proc_nr;                                /* slot of process to clean up */
   rc = proc_addr(proc_nr);
 
   /* Turn off any alarm timers at the clock. */   
-  reset_timer(&rc->p_priv->s_alarm_timer);
+  reset_timer(&priv(rc)->s_alarm_timer);
 
   /* Make sure the exiting process is no longer scheduled. */
   if (rc->p_rts_flags == 0) lock_unready(rc);
@@ -248,11 +249,11 @@ int proc_nr;                              /* slot of process to clean up */
           irq_hooks[i].proc_nr = NONE; 
   }
 
+#if TEMP_CODE
   /* Check if there are pending notifications. Release the buffers. */
   while (rc->p_ntf_q != NULL) {
       i = (int) (rc->p_ntf_q - &notify_buffer[0]);
       free_bit(i, notify_bitmap, NR_NOTIFY_BUFS); 
-#if TEMP_CODE
       rc->p_ntf_q = rc->p_ntf_q->n_next;
   }
 #endif
index a9d3d72c9e99993d4c56cf07888dfa40287438be..ac5d04984ba017589dbbee2747806c757f6b8feb 100644 (file)
@@ -48,7 +48,7 @@ $(SYSTEM):    $(OBJECTS)
        aal cr $@ *.o
 
 clean:
-       rm -f $(SYSTEM) *.o *.bak 
+       rm -f $(SYSTEM) *.o *~ *.bak 
 
 depend: 
        /usr/bin/mkdep "$(CC) -E $(CPPFLAGS)" *.c > .depend
index c8db74a28609b279ac09a519ce53cfd948829136..b7ba512e0f23b10c2d09724588f60b6cdaa012e5 100644 (file)
@@ -3,9 +3,6 @@
  *
  * The parameters for this system call are:
  *    m1_i1:   PR_PROC_NR              (process that did exec call)
-#if DEAD_CODE
- *    m1_i3:   PR_TRACING              (flag to indicate tracing is on/ off)
-#endif
  *    m1_p1:   PR_STACK_PTR            (new stack pointer)
  *    m1_p2:   PR_NAME_PTR             (pointer to program name)
  *    m1_p3:   PR_IP_PTR               (new instruction pointer)
@@ -28,9 +25,6 @@ register message *m_ptr;      /* pointer to request message */
   char *np;
 
   rp = proc_addr(m_ptr->PR_PROC_NR);
-#if DEAD_CODE
-  if (m_ptr->PR_TRACING) cause_sig(m_ptr->PR_PROC_NR, SIGTRAP);
-#endif
   sp = (reg_t) m_ptr->PR_STACK_PTR;
   rp->p_reg.sp = sp;           /* set the stack pointer */
 #if (CHIP == M68000)
index e3d131ed9c89a6effce64b3f00f298244e90ad4e..052b450df137533e6f683dfdb22d2465da982ae9 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 #include "../system.h"
+#include <string.h>
 #include <signal.h>
 #include <sys/sigcontext.h>
 
@@ -61,7 +62,7 @@ message *m_ptr;                       /* pointer to request message */
 #endif
 
   /* Restore the registers. */
-  kmemcpy(&rp->p_reg, (char *)&sc.sc_regs, sizeof(struct sigregs));
+  memcpy(&rp->p_reg, (char *)&sc.sc_regs, sizeof(struct sigregs));
   return(OK);
 }
 #endif /* USE_SIGRETURN */
index 0656a4cacfa06c76aa39be79dae8bba393c60347..f298b948d7ec26a581b243862dba09fa0c8dd228 100644 (file)
@@ -10,6 +10,7 @@
 
 #include "../system.h"
 #include <signal.h>
+#include <string.h>
 #include <sys/sigcontext.h>
 
 #if USE_SIGSEND
@@ -40,7 +41,7 @@ message *m_ptr;                       /* pointer to request message */
   scp = (struct sigcontext *) smsg.sm_stkptr - 1;
 
   /* Copy the registers to the sigcontext structure. */
-  kmemcpy(&sc.sc_regs, &rp->p_reg, sizeof(struct sigregs));
+  memcpy(&sc.sc_regs, &rp->p_reg, sizeof(struct sigregs));
 
   /* Finish the sigcontext initialization. */
   sc.sc_flags = SC_SIGCONTEXT;