#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 |
Definition in file syspcntrl.c.
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 | ) |
Definition at line 97 of file syspcntrl.c.
References _pcb, csid, find_process_by_pid(), process_bit_shift(), process_index_mask(), and sch_gl_pcbvec.
Referenced by exe_epid_to_pcb(), exe_nampid(), sys_sched_getparam(), sys_sched_getscheduler(), sys_sched_rr_get_interval(), sys_sched_setparam(), and sys_sched_setscheduler().
void* exe_epid_to_pcb | ( | unsigned long | pid | ) |
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 | ) |
Definition at line 76 of file syspcntrl.c.
References _pcb, find_process_by_pid(), MAXPROCESSCNT, sch_gl_maxpix, and sch_gl_pcbvec.
Referenced by exe_epid_to_pcb(), find_task_by_pid(), ioc_iopost(), sch_postef(), sch_qast(), and sch_wake().
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
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
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 | |||
) |
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] |
long csid |
Definition at line 2021 of file system_data_cells.c.
Referenced by exe_a_pid_to_ipid(), exe_epid_to_ipid(), exe_ipid_to_epid(), and vms_init3().
unsigned long maxprocesscnt = MAXPROCESSCNT |
Definition at line 32 of file syspcntrl.c.