doexit: tidy up types
authorAlan Cox <alan@linux.intel.com>
Wed, 17 Feb 2016 18:13:28 +0000 (18:13 +0000)
committerAlan Cox <alan@linux.intel.com>
Wed, 17 Feb 2016 18:13:28 +0000 (18:13 +0000)
Kernel/include/kernel.h
Kernel/process.c
Kernel/syscall_proc.c

index b9239b3..c5ad4ca 100644 (file)
@@ -786,7 +786,7 @@ extern void program_vectors(uint16_t *pageptr);
 extern void sgrpsig(uint16_t pgrp, uint8_t sig);
 extern void unix_syscall(void);
 extern void timer_interrupt(void);
-extern void doexit (int16_t val, int16_t val2);
+extern void doexit (uint16_t val);
 extern void panic(char *deathcry);
 extern void exec_or_die(void);
 #define need_resched() (nready != 1 && runticks >= udata.u_ptab->p_priority)
index ee064af..38eb74c 100644 (file)
@@ -477,7 +477,7 @@ void chksigs(void)
 #ifdef DEBUG
                        kprintf("process terminated by signal %d\n", j);
 #endif
-                       doexit(0, j);
+                       doexit((uint16_t)j << 8);
                } else if (*svec != SIG_IGN) {
                        /* Arrange to call the user routine at return */
                        udata.u_ptab->p_pending &= ~m;  // unset the bit
@@ -582,7 +582,7 @@ static int signal_parent(ptptr p)
        return 1;
 }
 
-void doexit(int16_t val, int16_t val2)
+void doexit(uint16_t val)
 {
        int16_t j;
        ptptr p;
@@ -611,7 +611,7 @@ void doexit(int16_t val, int16_t val2)
        }
 
 
-       udata.u_ptab->p_exitval = (val << 8) | (val2 & 0xff);
+       udata.u_ptab->p_exitval = val;
 
        i_deref(udata.u_cwd);
        i_deref(udata.u_root);
index 2d88b56..8ea506c 100644 (file)
@@ -345,7 +345,8 @@ int16_t val;
 
 arg_t __exit(void)
 {
-       doexit(val, 0);
+       /* Deliberately chop to 8bits */
+       doexit(val & 0xFF);
        return 0;               // ... yeah. that might not happen.
 }