System processes can be signaled; signals are transformed in SYS_EVENT message
that passes signal map along. This mechanisms is also used for nonuser signals like SIGKMESS, SIGKSTOP, SIGKSIG. Revised comments of many system call handlers. Renamed setpriority to nice.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* The parameters for this system call are:
|
||||
* m1_i1: PR_PROC_NR (install new map for this process)
|
||||
* m1_p1: PR_MEM_PTR (pointer to memory map)
|
||||
* m1_p1: PR_MEM_PTR (pointer to the new memory map)
|
||||
*/
|
||||
#include "../system.h"
|
||||
|
||||
@@ -16,24 +16,21 @@ PUBLIC int do_newmap(m_ptr)
|
||||
message *m_ptr; /* pointer to request message */
|
||||
{
|
||||
/* Handle sys_newmap(). Fetch the memory map from PM. */
|
||||
|
||||
register struct proc *rp;
|
||||
phys_bytes src_phys;
|
||||
register struct proc *rp; /* process whose map is to be loaded */
|
||||
int caller; /* whose space has the new map (usually PM) */
|
||||
int k; /* process whose map is to be loaded */
|
||||
int old_flags; /* value of flags before modification */
|
||||
struct mem_map *map_ptr; /* virtual address of map inside caller (PM) */
|
||||
phys_bytes src_phys; /* physical address of map at the PM */
|
||||
int old_flags; /* value of flags before modification */
|
||||
|
||||
/* Extract message parameters and copy new memory map from PM. */
|
||||
caller = m_ptr->m_source;
|
||||
k = m_ptr->PR_PROC_NR;
|
||||
map_ptr = (struct mem_map *) m_ptr->PR_MEM_PTR;
|
||||
if (!isokprocn(k)) return(EINVAL);
|
||||
rp = proc_addr(k); /* ptr to entry of user getting new map */
|
||||
if (! isokprocn(m_ptr->PR_PROC_NR)) return(EINVAL);
|
||||
rp = proc_addr(m_ptr->PR_PROC_NR);
|
||||
|
||||
/* Copy the map from PM. */
|
||||
src_phys = umap_local(proc_addr(caller), D, (vir_bytes) map_ptr,
|
||||
sizeof(rp->p_memmap));
|
||||
sizeof(rp->p_memmap));
|
||||
if (src_phys == 0) return(EFAULT);
|
||||
phys_copy(src_phys,vir2phys(rp->p_memmap),(phys_bytes)sizeof(rp->p_memmap));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user