]> Zhao Yanbai Git Server - minix.git/commitdiff
Fixed some type inconsistencies in the kernel.
authorKees van Reeuwijk <reeuwijk@few.vu.nl>
Tue, 26 Jan 2010 12:26:06 +0000 (12:26 +0000)
committerKees van Reeuwijk <reeuwijk@few.vu.nl>
Tue, 26 Jan 2010 12:26:06 +0000 (12:26 +0000)
13 files changed:
kernel/arch/i386/arch_do_vmctl.c
kernel/arch/i386/hw_intr.h
kernel/arch/i386/i8259.c
kernel/arch/i386/memory.c
kernel/main.c
kernel/proc.c
kernel/proto.h
kernel/system.c
kernel/system/do_copy.c
kernel/system/do_kill.c
kernel/system/do_safecopy.c
kernel/system/do_safemap.c
kernel/utility.c

index 56b081b145fe38c7faaa70638abfc98bb3510f76..79f1dc9dd0caa859e9dfccbb9e63cc6ce262fcae 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "proto.h"
 
-extern u32_t *vm_pagedirs;
+extern u8_t *vm_pagedirs;
 
 /*===========================================================================*
  *                             arch_do_vmctl                                *
@@ -64,7 +64,7 @@ struct proc *p;
        }
        case VMCTL_I386_PAGEDIRS:
        {
-               vm_pagedirs = (u32_t *) m_ptr->SVMCTL_VALUE;
+               vm_pagedirs = (u8_t *) m_ptr->SVMCTL_VALUE;
                return OK;
        }
        case VMCTL_I386_FREEPDE:
index 278a82716a44679525e2b9b2713d4e9e3880c70f..1665b7818c6731955bb83eef4046824eace2e6d5 100644 (file)
@@ -5,8 +5,8 @@
 
 /* legacy PIC */
 
-_PROTOTYPE(int irq_8259_unmask,(int irq));
-_PROTOTYPE(int irq_8259_mask,(int irq));
+_PROTOTYPE(void irq_8259_unmask,(int irq));
+_PROTOTYPE(void irq_8259_mask,(int irq));
 _PROTOTYPE(void irq_handle,(int irq));
 
 #define hw_intr_mask(irq)      irq_8259_mask(irq)
index 70c781830f2a1b0cc1fc465d5c41d3544b4548e9..afab1e213be001b8015ec14cf82cd555d8421145 100644 (file)
@@ -23,8 +23,6 @@
 #define ICW4_PC_AEOI_SLAVE   0x0B /* not SFNM, buffered, auto EOI, 8086 */
 #define ICW4_PC_AEOI_MASTER  0x0F /* not SFNM, buffered, auto EOI, 8086 */
 
-#define set_vec(nr, addr)      ((void)0)
-
 /*===========================================================================*
  *                             intr_init                                    *
  *===========================================================================*/
index 8f640bffa332d8394898c0e9bcf34d0d6be775bb..331ae3b0464c7a1c8ac4dde4e32bba8d7168730e 100644 (file)
@@ -31,7 +31,7 @@ PRIVATE int psok = 0;
                                I386_PAGE_SIZE * pr->p_nr +     \
                                I386_VM_PT_ENT_SIZE * pi))
 
-u8_t *vm_pagedirs = NULL;
+PUBLIC u8_t *vm_pagedirs = NULL;
 
 #define NOPDE (-1)
 #define PDEMASK(n) (1L << (n))
@@ -41,7 +41,7 @@ PRIVATE int nfreepdes = 0, freepdes[WANT_FREEPDES], inusepde = NOPDE;
 
 #define HASPT(procptr) ((procptr)->p_seg.p_cr3 != 0)
 
-FORWARD _PROTOTYPE( u32_t phys_get32, (vir_bytes v)                    );
+FORWARD _PROTOTYPE( u32_t phys_get32, (phys_bytes v)                   );
 FORWARD _PROTOTYPE( void vm_enable_paging, (void)                      );
 FORWARD _PROTOTYPE( void set_cr3, (void)                       );
 
@@ -423,9 +423,10 @@ vir_bytes bytes;                /* # of bytes to be copied */
        u32_t phys = 0;
 
        if(seg == MEM_GRANT) {
-               phys = umap_grant(rp, vir_addr, bytes);
-       } else {
-               if(!(linear = umap_local(rp, seg, vir_addr, bytes))) {
+               return umap_grant(rp, vir_addr, bytes);
+       }
+       
+       if(!(linear = umap_local(rp, seg, vir_addr, bytes))) {
                        kprintf("SYSTEM:umap_virtual: umap_local failed\n");
                        phys = 0;
                } else {
@@ -436,7 +437,7 @@ vir_bytes bytes;                /* # of bytes to be copied */
                        if(phys == 0)
                                minix_panic("vm_lookup returned phys", phys);
                }
-       }
+       
 
        if(phys == 0) {
                kprintf("SYSTEM:umap_virtual: lookup failed\n");
@@ -517,22 +518,6 @@ PUBLIC int vm_lookup(struct proc *proc, vir_bytes virtual, vir_bytes *physical,
        NOREC_RETURN(vmlookup, OK);
 }
 
-/* From virtual address v in process p,
- * lookup physical address and assign it to d.
- * If p is NULL, assume it's already a physical address.
- */
-#define LOOKUP(d, p, v, flagsp) {      \
-       int r;                          \
-       if(!(p)) { (d) = (v); }         \
-       else {                          \
-               if((r=vm_lookup((p), (v), &(d), flagsp)) != OK) { \
-                       kprintf("vm_copy: lookup failed of 0x%lx in %d (%s)\n"\
-                               "kernel stacktrace: ", (v), (p)->p_endpoint, \
-                                       (p)->p_name);           \
-                       util_stacktrace();                      \
-                       return r;                               \
-               } } }
-
 /*===========================================================================*
  *                              vm_contiguous                                *
  *===========================================================================*/
@@ -770,7 +755,7 @@ int vm_phys_memset(phys_bytes ph, u8_t c, phys_bytes bytes)
         */
        while(bytes > 0) {
                int pde, t;
-               vir_bytes chunk = bytes;
+               vir_bytes chunk = (vir_bytes) bytes;
                phys_bytes ptr;
                inusepde = NOPDE;
                CREATEPDE(((struct proc *) NULL), ptr, ph, chunk, bytes, pde, t);
@@ -1047,7 +1032,7 @@ PUBLIC arch_phys_map(int index, phys_bytes *addr, phys_bytes *len, int *flags)
 #endif
 }
 
-PUBLIC arch_phys_map_reply(int index, vir_bytes addr)
+PUBLIC int arch_phys_map_reply(int index, vir_bytes addr)
 {
 #ifdef CONFIG_APIC
        /* if local APIC is enabled */
index 9437ebaf0f98df15d32ba16c9da1cd93dd0b3c18..d154e94af1f0ae21ea3a10de344034ee33805062 100644 (file)
@@ -54,7 +54,7 @@ PUBLIC void main()
   }
   for (sp = BEG_PRIV_ADDR, i = 0; sp < END_PRIV_ADDR; ++sp, ++i) {
        sp->s_proc_nr = NONE;                   /* initialize as free */
-       sp->s_id = i;                           /* priv structure index */
+       sp->s_id = (proc_nr_t) i;               /* priv structure index */
        ppriv_addr[i] = sp;                     /* priv ptr from number */
   }
 
@@ -70,7 +70,8 @@ PUBLIC void main()
   ktsb = (reg_t) t_stack;
 
   for (i=0; i < NR_BOOT_PROCS; ++i) {
-       int schedulable_proc, proc_nr;
+       int schedulable_proc;
+       proc_nr_t proc_nr;
        int ipc_to_m, kcalls;
 
        ip = &image[i];                         /* process' attributes */
@@ -112,6 +113,10 @@ PUBLIC void main()
                 ipc_to_m = RSYS_M;                 /* allowed targets */
                 kcalls = RSYS_KC;                  /* allowed kernel calls */
             }
+            /* Priviliges for ordinary process. */
+            else {
+               NOT_REACHABLE;
+            }
 
             /* Fill in target mask. */
             for (j=0; j < NR_SYS_PROCS; j++) {
index 5096608f81b9747631b789727731ec06a5292482..4ee6592ab9c7b36136490da04fb5b8ba70d08b09 100644 (file)
@@ -506,7 +506,7 @@ long bit_map;                       /* notification event set or flags */
 PRIVATE int deadlock(function, cp, src_dst) 
 int function;                                  /* trap number */
 register struct proc *cp;                      /* pointer to caller */
-int src_dst;                                   /* src or dst process */
+proc_nr_t src_dst;                             /* src or dst process */
 {
 /* Check for deadlock. This can happen if 'caller_ptr' and 'src_dst' have
  * a cyclic dependency of blocking send and receive calls. The only cyclic 
index dbd979852751955ede7a8232c1aeaebc3cf2ef70..c06c4a1cb951765f10b3825bd53a91e58cd22ffe 100644 (file)
@@ -56,7 +56,7 @@ _PROTOTYPE( int get_priv, (register struct proc *rc, int proc_type)   );
 _PROTOTYPE( void set_sendto_bit, (struct proc *rc, int id)             );
 _PROTOTYPE( void unset_sendto_bit, (struct proc *rc, int id)           );
 _PROTOTYPE( void send_sig, (int proc_nr, int sig_nr)                   );
-_PROTOTYPE( void cause_sig, (int proc_nr, int sig_nr)                  );
+_PROTOTYPE( void cause_sig, (proc_nr_t proc_nr, int sig_nr)                    );
 _PROTOTYPE( void sig_delay_done, (struct proc *rp)                     );
 _PROTOTYPE( void sys_task, (void)                                      );
 #define numap_local(proc_nr, vir_addr, bytes) \
index 3d2692479ebd0ff856706862436280363ce1d7ca..93ba522c0a5c7cdb7e84d96921a6657789fba512 100644 (file)
@@ -337,7 +337,7 @@ PUBLIC void send_sig(int proc_nr, int sig_nr)
  *                             cause_sig                                    *
  *===========================================================================*/
 PUBLIC void cause_sig(proc_nr, sig_nr)
-int proc_nr;                   /* process to be signalled */
+proc_nr_t proc_nr;             /* process to be signalled */
 int sig_nr;                    /* signal to be sent */
 {
 /* A system process wants to send a signal to a process.  Examples are:
index e46d33f288f08a7e6d0ff2d69810fd202580b8e5..cf42a75eeb91f7e29af4b2a5967a5df1887045cb 100644 (file)
@@ -83,7 +83,7 @@ register message *m_ptr;      /* pointer to request message */
   /* Check for overflow. This would happen for 64K segments and 16-bit 
    * vir_bytes. Especially copying by the PM on do_fork() is affected. 
    */
-  if (bytes != (vir_bytes) bytes) return(E2BIG);
+  if (bytes != (phys_bytes) (vir_bytes) bytes) return(E2BIG);
 
   /* Now try to make the actual virtual copy. */
   return( virtual_copy_vmcheck(&vir_addr[_SRC_], &vir_addr[_DST_], bytes) );
index dacf43d4227d37b5ab7a079376ea39e3b5ef49f6..ac27db68c3af688a0f65447606a117f9e94fc663 100644 (file)
@@ -28,7 +28,7 @@ message *m_ptr;                       /* pointer to request message */
   proc_nr_t proc_nr, proc_nr_e;
   int sig_nr = m_ptr->SIG_NUMBER;
 
-  proc_nr_e= m_ptr->SIG_ENDPT;
+  proc_nr_e= (proc_nr_t) m_ptr->SIG_ENDPT;
 
   if (!isokendpt(proc_nr_e, &proc_nr)) return(EINVAL);
   if (sig_nr >= _NSIG) return(EINVAL);
index c13d963ef2ec40b04fcb731a19c364e6cc518287..402941e0eb6713bbcf63365f0f3839ddfd7675bc 100644 (file)
@@ -45,7 +45,7 @@ endpoint_t *e_granter;                /* new granter (magic grants) */
 {
        static cp_grant_t g;
        static int proc_nr;
-       static struct proc *granter_proc;
+       static const struct proc *granter_proc;
        int r, depth = 0;
 
        do {
index b76c52876d8c0e876fe26ae01385b4a5b61ebef5..403f8638fa26c30b4e38ab996063074108fe220b 100644 (file)
@@ -121,7 +121,7 @@ PUBLIC int map_invoke_vm(int req_type, /* VMPTYPE_... COWMAP, SMAP, SUNMAP */
                size_t size, int flag)
 {
        struct proc *caller, *src, *dst;
-       vir_bytes lin_src, lin_dst;
+       phys_bytes lin_src, lin_dst;
 
        src = endpoint_lookup(end_s);
        dst = endpoint_lookup(end_d);
@@ -154,7 +154,7 @@ PUBLIC int map_invoke_vm(int req_type, /* VMPTYPE_... COWMAP, SMAP, SUNMAP */
        caller->p_vmrequest.params.map.vir_d = lin_dst; /* destination addr */
        caller->p_vmrequest.params.map.ep_s = end_s;    /* source process */
        caller->p_vmrequest.params.map.vir_s = lin_src; /* source address */
-       caller->p_vmrequest.params.map.length = size;
+       caller->p_vmrequest.params.map.length = (vir_bytes) size;
        caller->p_vmrequest.params.map.writeflag = flag;
 
        caller->p_vmrequest.type = VMSTYPE_MAP;
@@ -175,10 +175,10 @@ register message *m_ptr;
 {
        endpoint_t grantor      = m_ptr->SMAP_EP;
        cp_grant_id_t gid       = m_ptr->SMAP_GID;
-       vir_bytes offset        = m_ptr->SMAP_OFFSET;
-       int seg                 = (int)m_ptr->SMAP_SEG;
-       vir_bytes address       = m_ptr->SMAP_ADDRESS;
-       vir_bytes bytes         = m_ptr->SMAP_BYTES;
+       vir_bytes offset        = (vir_bytes) m_ptr->SMAP_OFFSET;
+       int seg                 = (int) m_ptr->SMAP_SEG;
+       vir_bytes address       = (vir_bytes) m_ptr->SMAP_ADDRESS;
+       vir_bytes bytes         = (vir_bytes) m_ptr->SMAP_BYTES;
        int flag                = m_ptr->SMAP_FLAG;
 
        vir_bytes offset_result;
index 228f3afc403e78c7116e1df7388af6749172eac0..07989df5eba3280df2e87af19a90fe96864be569 100644 (file)
 /*===========================================================================*
  *                     panic                                        *
  *===========================================================================*/
-PUBLIC void panic(what, mess,nr)
-char *what;
-char *mess;
-int nr;
+PUBLIC void panic(char *what, char *mess,int nr)
 {
 /* This function is for when a library call wants to panic.
  * The library call calls printf() and tries to exit a process,
@@ -30,9 +27,7 @@ int nr;
 /*===========================================================================*
  *                     minix_panic                                        *
  *===========================================================================*/
-PUBLIC void minix_panic(mess,nr)
-char *mess;
-int nr;
+PUBLIC void minix_panic(char *mess,int nr)
 {
 /* The system has run aground of a fatal kernel error. Terminate execution. */
 if (minix_panicing++) {