sys/src/syspcntrl.c File Reference

system process controll More...

#include <linux/unistd.h>
#include <linux/linkage.h>
#include <linux/sched.h>
#include <asm/bitops.h>
#include <starlet.h>
#include <ssdef.h>
#include <pridef.h>
#include <statedef.h>
#include <evtdef.h>
#include <ipldef.h>
#include <descrip.h>
#include <system_data_cells.h>
#include <exe_routines.h>
#include <sch_routines.h>
#include <misc_routines.h>
#include <ipl.h>
#include <internals.h>
#include <prvdef.h>

Go to the source code of this file.

Functions

int exe_process_check_priv (struct _pcb *p)
 determine whether request process has privs to examine or modify
int process_bit_shift ()
int process_index_mask ()
int process_seq_mask ()
int alloc_ipid ()
void * exe_ipid_to_pcb (unsigned long pid)
void * exe_epid_to_pcb (unsigned long pid)
int exe_epid_to_ipid (unsigned long pid)
int exe_ipid_to_epid (unsigned long pid)
int exe_a_pid_to_ipid (unsigned long pid)
void fixup_hib_pc (void *dummy)
 modifies the stack so that it will call exe_wait again.
asmlinkage int exe_hiber (long dummy)
 set process in hibernate state - see 5.2 13.3.1
int exe_nampid (struct _pcb *p, unsigned long *pidadr, void *prcnam, struct _pcb **retpcb, unsigned long *retipid, unsigned long *retepid)
 locating the process and checking privileges - see 5.2 13.1.2
asmlinkage int exe_wake (unsigned long *pidadr, void *prcnam)
 wake system service - see 5.2 13.3.1
asmlinkage int exe_suspnd (unsigned int *pidadr, void *prcnam, unsigned int flags)
 suspend process MISSING - see 5.2 13.3.2
asmlinkage int exe_resume (unsigned int *pidadr, void *prcnam)
 resume suspended process MISSING - see 5.2 13.3.2.2
asmlinkage int exe_setprn (struct dsc $descriptor *s)
 set process name - see 5.2 13.4.3
void * find_task_by_pid (int pid)

Variables

unsigned long maxprocesscnt = MAXPROCESSCNT
long csid


Detailed Description

system process controll

Author:
Roar Thronęs

Definition in file syspcntrl.c.


Function Documentation

int alloc_ipid (  ) 

Definition at line 63 of file syspcntrl.c.

References MAXPROCESSCNT, sch_gl_pcbvec, and sch_gl_seqvec.

Referenced by exe_creprc().

int exe_a_pid_to_ipid ( unsigned long  pid  ) 

Definition at line 131 of file syspcntrl.c.

References csid, process_bit_shift(), process_index_mask(), sch_gl_pcbvec, and sch_gl_seqvec.

int exe_epid_to_ipid ( unsigned long  pid  ) 

void* exe_epid_to_pcb ( unsigned long  pid  ) 

Definition at line 91 of file syspcntrl.c.

References exe_epid_to_ipid(), and exe_ipid_to_pcb().

asmlinkage int exe_hiber ( long  dummy  ) 

set process in hibernate state - see 5.2 13.3.1

some tricks for the return stack

spinlock sched

test and clear, bbcci equivalent, on wakepen bit

if wake request preceding

release spin

set ipl 0 ?

otherwise

some tricks for the return stack

go into hibernate wait

Definition at line 169 of file syspcntrl.c.

References _pcb, fixup_hib_pc(), IPL__ASTDEL, IPL__SCHED, sch_wait(), SPIN_SCHED, and SS__NORMAL.

int exe_ipid_to_epid ( unsigned long  pid  ) 

Definition at line 121 of file syspcntrl.c.

References csid, process_bit_shift(), process_index_mask(), sch_gl_pcbvec, and sch_gl_seqvec.

void* exe_ipid_to_pcb ( unsigned long  pid  ) 

int exe_nampid ( struct _pcb *  p,
unsigned long *  pidadr,
void *  prcnam,
struct _pcb **  retpcb,
unsigned long *  retipid,
unsigned long *  retepid 
)

locating the process and checking privileges - see 5.2 13.1.2

Parameters:
p pcb
pidadr epid
prcnam process name
retipid return val ipid
retepid return val epid with no cwps return params not as specified

determine if requesting process is target process - MISSING

if so do priv checks - MISSING partially

sched spinlock, and on success do not unlock

try to locate using the epid

indications about remote pcb, give REMOTE_PROC, TODO reimplement

if unknown node, return NONEXPR - MISSING

check privs for examining or modifying process

try to locate using the process name

indications about remote process, give REMOTE_PROC, TODO reimplement

if process name indicates unknown node, return NOSUCHNODE - MISSING

if process name uses incorrectly formated nodename, return IVLOGNAM - MISSING

check privs for examining or modifying process

return NOPRIV - MISSING mostly

Definition at line 217 of file syspcntrl.c.

References _pcb, exe_epid_to_ipid(), exe_process_check_priv(), IPL__ASTDEL, IPL__SCHED, is_cluster_on(), MAXPROCESSCNT, sch_gl_pcbvec, SPIN_SCHED, SS__NORMAL, and SS__REMOTE_PROC.

Referenced by exe_forcex(), exe_process_affinity(), exe_process_capabilities(), exe_resume(), exe_schdwk(), exe_set_implicit_affinity(), exe_setpri(), and exe_wake().

int exe_process_check_priv ( struct _pcb *  p  ) 

determine whether request process has privs to examine or modify

Parameters:
p pcb

if on the same job tree, success - MISSING

if the same uic, success - MISSING

if WORLD priv, success TODO fix this

if group priv and group, success - MISSING

Definition at line 39 of file syspcntrl.c.

References ctl_gl_pcb, SS__NOPRIV, and SS__NORMAL.

Referenced by exe_nampid().

asmlinkage int exe_resume ( unsigned int *  pidadr,
void *  prcnam 
)

resume suspended process MISSING - see 5.2 13.3.2.2

invoke nampid translation

unlock spin

if found

report scheduling event

cwps - MISSING

Definition at line 347 of file syspcntrl.c.

References _pcb, exe_nampid(), sch_rse(), SPIN_SCHED, and SS__NORMAL.

asmlinkage int exe_setprn ( struct dsc $descriptor *  s  ) 

set process name - see 5.2 13.4.3

put name into lname field

Definition at line 371 of file syspcntrl.c.

References _pcb, and SS__NORMAL.

asmlinkage int exe_suspnd ( unsigned int *  pidadr,
void *  prcnam,
unsigned int  flags 
)

suspend process MISSING - see 5.2 13.3.2

MISSING

Definition at line 339 of file syspcntrl.c.

asmlinkage int exe_wake ( unsigned long *  pidadr,
void *  prcnam 
)

wake system service - see 5.2 13.3.1

invoke nampid translation

if found

invoke wake

unlock spin sched

cwps stuff - MISSING

Definition at line 317 of file syspcntrl.c.

References _pcb, exe_nampid(), IPL__ASTDEL, sch_wake(), and SPIN_SCHED.

void* find_task_by_pid ( int  pid  )  [inline]

Definition at line 382 of file syspcntrl.c.

References exe_ipid_to_pcb().

Referenced by find_process_by_pid().

void fixup_hib_pc ( void *  dummy  ) 

modifies the stack so that it will call exe_wait again.

Definition at line 150 of file syspcntrl.c.

Referenced by exe_hiber(), and exe_wait().

int process_bit_shift (  )  [inline]

Definition at line 51 of file syspcntrl.c.

References sch_gl_pixwidth.

Referenced by exe_a_pid_to_ipid(), exe_epid_to_ipid(), and exe_ipid_to_epid().

int process_index_mask (  )  [inline]

Definition at line 55 of file syspcntrl.c.

References sch_gl_pixwidth.

Referenced by exe_a_pid_to_ipid(), exe_epid_to_ipid(), exe_ipid_to_epid(), and process_seq_mask().

int process_seq_mask (  )  [inline]

Definition at line 59 of file syspcntrl.c.

References process_index_mask().


Variable Documentation

long csid

unsigned long maxprocesscnt = MAXPROCESSCNT

Definition at line 32 of file syspcntrl.c.


Generated on Fri Oct 9 10:26:04 2009 for FreeVMS by  doxygen 1.5.5