#include <linux/linkage.h>
Go to the source code of this file.
Functions | |
asmlinkage void | sched_vector (void) |
asmlinkage void | resched_vector (void) |
asmlinkage void | timer_vector (void) |
asmlinkage void | iopost_vector (void) |
asmlinkage void | exe_forkdspth (int i) |
requesting i/o completion processing - see 5.2 22.3.4 | |
asmlinkage void | ioc_iopost (void) |
I/O postprocessing - se 5.2 21.7. | |
asmlinkage void | sch_astdel (int dummy) |
delivering an ast - see 5.2 7.5 | |
asmlinkage void | sw_ast (void) |
asmlinkage void | sch_sched (int) |
asmlinkage void | sch_resched (void) |
rescheduling - see 5.2 12.6.4 | |
asmlinkage void | schedule (void) |
asmlinkage void | exe_swtimint (void) |
software timer interrupt service routine - see 5.2 11.8 |
asmlinkage void exe_forkdspth | ( | int | i | ) |
requesting i/o completion processing - see 5.2 22.3.4
i | interrupt |
remove one fork block at a time from the appropriate fork queue
get forklock
call fork routine
unlock fork
next entry TODO redo maybe
Definition at line 116 of file forkcntrl.c.
References _fkb::fkb_l_fpc, _fkb::fkb_l_fr3, smp_gl_cpu_data, and spin.
Referenced by exe_frkipl10dsp(), exe_frkipl11dsp(), exe_frkipl6dsp(), exe_frkipl8dsp(), and exe_frkipl9dsp().
asmlinkage void exe_swtimint | ( | void | ) |
software timer interrupt service routine - see 5.2 11.8
linux leftover or something?
locate process header
test for quantum end and maybe run sch_qend
note that the spinlocks are now inside sch_qend
test if primary cpu
acquire both TIMER and HWCLK spinlocks
iterate
compare system time with 1st time for timer entry
remove first tqe from queue
release both TIMER and HWCLK spinlocks
11.8.1 process timer requests
if TQTYPE CHK_CPUTIM ... - MISSING
test if process still alive - MISSING
if not or if illegal efn, deallocate tqe - MISSING
increment jib tqcnt - MISSING
test jib flags to see if someone waits - MISSING
run sch_chse for each such process - MISSING
test if acb quota in tqe set, user wants ast - MISSING
copy some field to ast - MISSING
call qast
11.8,2 periodic system routine requests TODO check if right
just call it
11.8.3 scheduled wakeup requests
get sched spinlock TODO says who?
test if process still alive - MISSING
if so, and rqpid still exists, increment astcnt - MISSING
if not deallocate tqe - MISSING
call sch_wake to wake it up
if no repeat, do cleanup - MISSING
release sched spinlock TODO says who?
if repeat add tqe delta to tqe time, and do instimq
acquire both TIMER and HWCLK spinlocks
Definition at line 166 of file timeschdl.c.
References exe_gl_tqfl, exe_gq_1st_time, exe_gq_systime, exe_instimq(), IPL__HWCLK, IPL__TIMER, IPL__TIMERFORK, printtq(), sch_postef(), sch_qast(), sch_qend(), sch_wake(), SPIN_HWCLK, SPIN_SCHED, SPIN_TIMER, _tqe::tqe_b_rqtype, _tqe::tqe_l_fpc, _tqe::tqe_q_time, and vmstimerconf.
asmlinkage void ioc_iopost | ( | void | ) |
I/O postprocessing - se 5.2 21.7.
set ipl
extra global cli TODO check why and still needed?
fetch irp from postprocessing queues
21.7.1 check if negative irp pid (a routine), then perform system i/o completion and call this - MISSING
21.7.2 normal i/o completion
checks bufio flag
21.7.2.2 buffered i/o completion
maybe do ioc_mapvblk - MISSING
do mmg_unlock - MISSING
test present irpes - MISSING
increment diocnt - MISSING?
store bufpost ast in irp and use kast
21.7.2.3 final steps in ioc_iopost - TODO restructure, double
spinlock
spinunlock
reiterate
21.7.2.1 buffered i/o completion
increment biocnt - MISSING?
if filacp set also incr diocnt - MISSING
invoke credit_bytcnt - MISSING
store bufpost ast in irp and use kast
21.7.2.3 final steps in ioc_iopost - TODO restructure, double
spinlock
spinunlock
reiterate
Definition at line 207 of file iociopost.c.
References _pcb, bufpost(), ctl_gl_pcb, dirpost(), exe_ipid_to_pcb(), ioc_bufpost(), ioc_gq_postiq, IPL__IOPOST, IPL__SYNCH, _irp::irp_b_rmod, _irp::irp_l_ast, _irp::irp_l_sts, sch_postef(), sch_qast(), smp_gl_cpu_data, SPIN_IOPOST, and SPIN_SCHED.
asmlinkage void iopost_vector | ( | void | ) |
asmlinkage void resched_vector | ( | void | ) |
asmlinkage void sch_astdel | ( | int | dummy | ) |
delivering an ast - see 5.2 7.5
spinlock sched
empty queue, spurious interrupt, drop spinlock, return
TODO: check if astlvl be 4 or sch_newlvl necessary
remove first acb from queue
test if kernel mode ast
unlock spinlock, lower ipl to 2
dispatch kernel mode ast by simply calling it
on return from the ast just go to start again
if else, an ordinary ast
check if ok privileged mode
spurious interrupt test, is ast enabled
another spurious test, check if astdel already active
setting astact bit
if not ok, spurious interrupt found, reinsert, set new level, unlock and return
check soft_ast_disable - MISSING
if ast is deliverable
check quota bit and return quota - MISSING
store new astlvl values
unlock spinlock, set ipl
maybe run piggyback kernel ast
if neither nodelete nor pkast set, deallocate ast
build arg list on the stack of the ast's access mode
set ipl 0 before kernel mode ast
call ast in kernel mode
TODO: check it these must be here or be moved
clear astatc
compute new astlvl
Definition at line 629 of file astdel.c.
References _pcb, _acb::acb_b_rmod, _acb::acb_l_ast, _acb::acb_l_astprm, _acb::acb_l_kast, ctl_gl_pcb, IPL__ASTDEL, IPL__SYNCH, kfree(), printast(), sch_newlvl(), smp_gl_cpu_data, SPIN_SCHED, and user_spaceable_addr().
asmlinkage void sch_resched | ( | void | ) |
rescheduling - see 5.2 12.6.4
spinlock sched and set ipl
get current pcb and priority
clear bit in cpu_priority table
if no process with this pri on any cpu, clear bit in active_priority table
now some if's remaining from linux - TODO: check if still needed
set pri bit in comqs
set state of cur pcb to COM
insert pcb at tail of comqueue
linux leftover
clear idle_cpus to signal all idle cpus to try to reschedule
go some intro sch_sched
Definition at line 622 of file sched.c.
References _pcb, _cpu::cpu_b_cur_pri, _cpu::cpu_l_curpcb, idle_task, IPL__RESCHED, IPL__SCHED, mycheckaddr(), numproc(), printcom(), sch_al_cpu_priority, sch_aq_comh, sch_aq_comt, sch_gl_active_priority, sch_gl_comqs, sch_gl_idle_cpus, sch_sched(), smp_gl_cpu_data, SPIN_SCHED, and task_on_comqueue().
asmlinkage void sch_sched | ( | int | ) |
Referenced by sch_resched(), and sch_waitm().
asmlinkage void sched_vector | ( | void | ) |
asmlinkage void schedule | ( | void | ) |
Definition at line 759 of file sched.c.
Referenced by __wait_on_buffer(), interruptible_sleep_on(), schedule_timeout(), sleep_on(), and wait_for_completion().
asmlinkage void sw_ast | ( | void | ) |
asmlinkage void timer_vector | ( | void | ) |